|

Résoudre l’erreur de l’API d’image Nano Banana 2 : 3 étapes pour basculer vers le format d’invocation correct de generateContent

Note de l'auteur : Explication détaillée des causes profondes de l'erreur not supported model for image generation avec l'API de génération d'images Nano Banana 2, et comment passer correctement du format OpenAI au format natif Google generateContent.

Vous rencontrez l'erreur not supported model for image generation en utilisant Nano Banana 2 pour générer des images ? C'est l'un des problèmes d'appel d'API d'image Gemini les plus fréquents pour les développeurs actuellement. Cet article explique la cause racine de l'erreur et la bonne façon d'appeler l'API pour vous aider à résoudre rapidement ce problème.

Valeur clé : Après avoir lu cet article, vous comprendrez les différences d'appel d'API entre les modèles d'image Gemini et les modèles Imagen, vous maîtriserez l'utilisation correcte du point de terminaison generateContent, et vous résoudrez l'erreur en 3 étapes.

nano-banana-2-api-error-fix-generatecontent-guide-fr 图示


Cause principale de l'erreur d'API d'image Nano Banana 2

Point clé Explication Solution
Message d'erreur not supported model for image generation, only imagen models are supported Basculer vers le point de terminaison generateContent
Cause racine Le point de terminaison au format OpenAI ne prend en charge que les modèles Imagen, pas les modèles d'image Gemini Utiliser le format natif de l'API Google
Point de terminaison correct /v1beta/models/{MODEL}:generateContent Remplacer /v1/images/generations
Paramètre requis responseModalities: ["TEXT", "IMAGE"] Définir dans generationConfig

Explication détaillée de l'erreur d'API d'image Nano Banana 2

Lorsque vous utilisez le point de terminaison compatible OpenAI /v1/images/generations pour appeler Nano Banana 2 (gemini-3.1-flash-image-preview) ou Nano Banana Pro (gemini-3-pro-image-preview), le système renvoie l'erreur suivante :

not supported model for image generation, only imagen models are supported
(request id: 20260315043447253411115cvUiXJMF)
new_api_error convert_request_failed, 500

La cause fondamentale de cette erreur est que les modèles d'image Gemini et les modèles Imagen sont deux architectures de modèles complètement différentes.

  • Modèles Imagen (comme imagen-3.0-generate-001) sont des modèles de génération d'images dédiés, utilisant les points de terminaison /v1/images/generations ou :predict
  • Modèles d'image Gemini (série Nano Banana) sont des grands modèles de langage multimodaux, capables de produire à la fois du texte et des images, et doivent utiliser le point de terminaison :generateContent

En termes simples, vous avez utilisé un "canal dédié texte vers image" pour appeler un "modèle de conversation multimodal", d'où l'erreur de format.

nano-banana-2-api-error-fix-generatecontent-guide-fr 图示


Format d'appel correct de l'API d'images Nano Banana 2

Comparaison : Appel incorrect vs Appel correct

Point de comparaison ❌ Méthode incorrecte (format OpenAI) ✅ Méthode correcte (format generateContent)
Point de terminaison API /v1/images/generations /v1beta/models/{MODEL}:generateContent
Structure de la requête Paramètres prompt + size + n Structure contents + generationConfig
Format de la réponse URL de l'image Données d'image Base64 en ligne
Modèles pris en charge Série DALL-E, Imagen Modèles d'image Gemini (série Nano Banana)
Contenu de sortie Image uniquement Texte + Image (sortie multimodale)

Exemple de requête incorrecte pour l'API d'images Nano Banana 2

Voici un exemple d'appel incorrect qui provoquera une erreur :

# ❌ Erreur : Utilisation du format OpenAI pour appeler Nano Banana 2
curl -X POST https://api.apiyi.com/v1/images/generations \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "gemini-3.1-flash-image-preview",
    "prompt": "Un adorable chat roux faisant une sieste au soleil",
    "size": "1024x1024",
    "n": 1
  }'
# Retour : not supported model for image generation

Exemple de requête correcte pour l'API d'images Nano Banana 2

Voici la méthode d'appel correcte utilisant le format natif generateContent de Google :

# ✅ Correct : Utilisation du format natif generateContent de Google
curl -X POST https://api.apiyi.com/v1beta/models/gemini-3.1-flash-image-preview:generateContent \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "contents": [{
      "parts": [
        {"text": "Un adorable chat roux faisant une sieste au soleil"}
      ]
    }],
    "generationConfig": {
      "responseModalities": ["TEXT", "IMAGE"]
    }
  }'

🎯 Astuce technique : En passant par la plateforme APIYI apiyi.com pour appeler Nano Banana 2, vous n'avez pas besoin de configurer un compte Google Cloud séparément. Utilisez une clé API unifiée pour appeler directement le point de terminaison generateContent.


Démarrage rapide avec l'API d'images Nano Banana 2

3 étapes pour corriger les erreurs de l'API d'images Nano Banana 2

Étape 1 : Changer le point de terminaison API

Remplacez l'URL de requête du format OpenAI par le format generateContent :

# Point de terminaison incorrect
https://api.apiyi.com/v1/images/generations

# Point de terminaison correct (Nano Banana 2)
https://api.apiyi.com/v1beta/models/gemini-3.1-flash-image-preview:generateContent

# Point de terminaison correct (Nano Banana Pro)
https://api.apiyi.com/v1beta/models/gemini-3-pro-image-preview:generateContent

Étape 2 : Modifier la structure du corps de la requête

Passez des paramètres prompt + size d'OpenAI à la structure native contents + generationConfig de Google. Paramètres clés :

  • contents.parts.text : Texte descriptif de l'image
  • generationConfig.responseModalities : Doit être défini sur ["TEXT", "IMAGE"]

Étape 3 : Traiter les données de réponse

L'image retournée par generateContent est encodée en Base64 et intégrée en ligne, pas une URL. Vous devez extraire et décoder l'image à partir de la réponse.

Exemple Python minimal

import requests
import base64

API_KEY = "YOUR_API_KEY"
BASE_URL = "https://api.apiyi.com"  # Interface unifiée d'APIYI

response = requests.post(
    f"{BASE_URL}/v1beta/models/gemini-3.1-flash-image-preview:generateContent",
    headers={
        "Authorization": f"Bearer {API_KEY}",
        "Content-Type": "application/json"
    },
    json={
        "contents": [{"parts": [{"text": "Un adorable chat roux faisant une sieste au soleil"}]}],
        "generationConfig": {"responseModalities": ["TEXT", "IMAGE"]}
    }
)

result = response.json()
for part in result["candidates"][0]["content"]["parts"]:
    if "inlineData" in part:
        img_data = base64.b64decode(part["inlineData"]["data"])
        with open("output.png", "wb") as f:
            f.write(img_data)
        print("Image sauvegardée sous output.png")
    elif "text" in part:
        print("Description du modèle :", part["text"])

Voir le code d’implémentation complet (avec gestion des erreurs et paramètres de ratio d’aspect)
import requests
import base64
import os
from typing import Optional

def generate_image(
    prompt: str,
    model: str = "gemini-3.1-flash-image-preview",
    aspect_ratio: str = "1:1",
    output_path: str = "output.png",
    api_key: Optional[str] = None
) -> dict:
    """
    Génère une image en utilisant le point de terminaison generateContent de Nano Banana 2

    Args:
        prompt: Description de l'image
        model: Nom du modèle
        aspect_ratio: Ratio d'aspect (1:1, 16:9, 9:16, 4:3, 3:4)
        output_path: Chemin du fichier de sortie
        api_key: Clé API

    Returns:
        Dictionnaire contenant le chemin du fichier et la description du modèle
    """
    api_key = api_key or os.getenv("APIYI_API_KEY")
    base_url = "https://api.apiyi.com"  # Interface unifiée d'APIYI

    response = requests.post(
        f"{base_url}/v1beta/models/{model}:generateContent",
        headers={
            "Authorization": f"Bearer {api_key}",
            "Content-Type": "application/json"
        },
        json={
            "contents": [{"parts": [{"text": prompt}]}],
            "generationConfig": {
                "responseModalities": ["TEXT", "IMAGE"],
                "imageConfig": {"aspectRatio": aspect_ratio}
            }
        },
        timeout=60
    )

    if response.status_code != 200:
        raise Exception(f"Échec de la requête API : {response.status_code} - {response.text}")

    result = response.json()
    candidates = result.get("candidates", [])
    if not candidates:
        raise Exception("Aucun résultat valide retourné")

    output = {"text": "", "image_path": ""}
    for part in candidates[0]["content"]["parts"]:
        if "inlineData" in part:
            img_data = base64.b64decode(part["inlineData"]["data"])
            with open(output_path, "wb") as f:
                f.write(img_data)
            output["image_path"] = output_path
        elif "text" in part:
            output["text"] = part["text"]

    return output

# Exemple d'utilisation
result = generate_image(
    prompt="Un paysage de montagne et d'eau dans un style à l'encre de Chine, avec des montagnes lointaines enveloppées d'une brume légère",
    model="gemini-3.1-flash-image-preview",
    aspect_ratio="16:9",
    output_path="landscape.png"
)
print(f"Image sauvegardée : {result['image_path']}")
print(f"Description du modèle : {result['text']}")

Recommandation : Obtenez une clé API via APIYI apiyi.com. La plateforme offre un quota de test gratuit et prend en charge les appels generateContent pour les deux modèles d'image Gemini : Nano Banana 2 et Nano Banana Pro.


Comparaison des modèles d'image API Nano Banana 2

Comprendre les différences dans la manière d'appeler les API des modèles de génération d'images peut vous aider à éviter des erreurs de format similaires :

Modèle Code Point de terminaison API Format d'appel Plateformes disponibles
Nano Banana 2 gemini-3.1-flash-image-preview :generateContent Format natif Google APIYI et autres plateformes
Nano Banana Pro gemini-3-pro-image-preview :generateContent Format natif Google APIYI et autres plateformes
Imagen 3 imagen-3.0-generate-001 /v1/images/generations ou :predict Format compatible OpenAI APIYI et autres plateformes
DALL-E 3 dall-e-3 /v1/images/generations Format OpenAI APIYI et autres plateformes

Explication des paramètres clés de l'API d'image Nano Banana 2

nano-banana-2-api-error-fix-generatecontent-guide-fr 图示

Le point de terminaison generateContent prend en charge des paramètres riches pour la génération d'images :

Paramètre Description Requis ? Exemple de valeur
contents.parts.text Invite de description de l'image ✅ Requis "Un chat roux au soleil"
responseModalities Configuration des modalités de réponse ✅ Requis ["TEXT", "IMAGE"]
imageConfig.aspectRatio Ratio d'aspect de l'image Optionnel "1:1", "16:9", "9:16"
contents.parts.inlineData Image de référence (image vers image) Optionnel Données d'image en Base64

💡 Important : responseModalities doit contenir à la fois "TEXT" et "IMAGE". Définir uniquement ["IMAGE"] entraînera un échec de la requête. C'est parce que les modèles d'image Gemini sont multimodaux et produisent toujours à la fois une description textuelle et une image.


Questions fréquentes

Q1 : Pourquoi Nano Banana 2 ne peut-il pas être appelé avec le format OpenAI ?

Nano Banana 2 (gemini-3.1-flash-image-preview) est un grand modèle de langage multimodal basé sur Gemini. Sa capacité de génération d'images est réalisée via une "génération conversationnelle", et non via une "interface texte vers image" dédiée. Le point de terminaison /v1/images/generations du format OpenAI est conçu spécifiquement pour des modèles de génération d'images comme DALL-E et Imagen, et ne peut pas traiter la structure de requête multimodale des modèles Gemini. Lors d'un appel via la plateforme APIYI apiyi.com, il est nécessaire de choisir le format de point de terminaison correspondant au type de modèle.

Q2 : Quelle est la différence entre l’API image de Nano Banana 2 et celle de Nano Banana Pro ?

Les deux utilisent le point de terminaison generateContent, et leur format d'appel est identique. Les principales différences sont :

  • Nano Banana 2 (version Flash) : Génération plus rapide, environ 3-5 secondes, idéal pour la génération en lot et les prototypes rapides.
  • Nano Banana Pro : Qualité d'image supérieure, précision du rendu du texte atteignant 94%, idéal pour les conceptions fines et les usages commerciaux.

Sur la plateforme APIYI apiyi.com, les deux modèles sont disponibles. Il suffit de changer le nom du modèle dans l'URL du point de terminaison.

Q3 : Comment traiter les données d’image renvoyées par generateContent ?

Contrairement au format OpenAI qui renvoie une URL d'image, generateContent renvoie des données d'image en ligne encodées en Base64. Étapes de traitement :

  1. Dans la réponse JSON, trouver la partie contenant inlineData dans candidates[0].content.parts.
  2. Récupérer la chaîne Base64 du champ inlineData.data.
  3. Décoder avec base64.b64decode() puis enregistrer en tant que fichier image.
  4. Le champ inlineData.mimeType vous indiquera le format de l'image (généralement image/png).

Résumé

Les points essentiels concernant les erreurs de l'API image Nano Banana 2 :

  1. Cause de l'erreur claire : L'utilisation de /v1/images/generations (format OpenAI) pour appeler un modèle d'image Gemini déclenche l'erreur "not supported model".
  2. Passer à generateContent : Le point de terminaison correct est /v1beta/models/gemini-3.1-flash-image-preview:generateContent.
  3. Configurer responseModalities : Il est impératif d'inclure ["TEXT", "IMAGE"] dans le generationConfig, sinon aucune image ne sera générée.

Face à une erreur d'API Nano Banana 2, le cœur du problème se résume à une phrase : remplacez le point de terminaison de génération d'images d'OpenAI par le point de terminaison natif generateContent de Google.

Nous recommandons de tester rapidement Nano Banana 2 et Nano Banana Pro via APIYI apiyi.com. La plateforme offre un quota gratuit, prend en charge l'appel direct au format generateContent, et ne nécessite pas de compte Google Cloud.

📚 Références

  1. Documentation Google Gemini pour la génération d'images : Guide officiel de l'API Gemini

    • Lien : ai.google.dev/gemini-api/docs/image-generation
    • Description : Contient les spécifications complètes des paramètres et des exemples pour le point de terminaison generateContent.
  2. Référence de l'API Google generateContent : Documentation de l'interface de génération de contenu de l'API Gemini

    • Lien : ai.google.dev/api/generate-content
    • Description : Explication détaillée de la structure des requêtes et des réponses pour le point de terminaison generateContent.
  3. Documentation de compatibilité Google Gemini OpenAI : Explication de la compatibilité entre les formats Gemini et OpenAI

    • Lien : ai.google.dev/gemini-api/docs/openai
    • Description : Comprenez quelles fonctionnalités prennent en charge le format compatible OpenAI et lesquelles nécessitent le format natif.

Auteur : Équipe technique d'APIYI
Échanges techniques : N'hésitez pas à discuter des problèmes d'appel de l'API d'images Nano Banana 2 dans la section des commentaires. Pour plus de ressources, visitez le centre de documentation d'APIYI à docs.apiyi.com.

Publications similaires