Nano Banana Pro API-Modellaufruf Fehlervermeidung: imageConfig bestimmt die Auflösung, fügen Sie keinen size-Parameter hinzu

Viele Entwickler, die zum ersten Mal die Nano Banana Pro API (entspricht dem Google-Modell gemini-3-pro-image-preview) aufrufen, tappen in dieselbe Falle: Sie verwenden den Parameter size: "1024x1024" aus der OpenAI / DALL-E-Ära wieder. Das Ergebnis: Entweder lässt sich die Auflösung des generierten Bildes nicht anpassen, es erscheint direkt ein 400-Fehler oder der Parameter wird vom Server einfach ignoriert.

Dies ist der häufigste „High-Frequency-Bug“ beim Aufruf der Nano Banana Pro API. Der richtige Weg ist: Die Auflösung wird durch die beiden Parameter imageConfig.imageSize (Schärfe 1K/2K/4K) und imageConfig.aspectRatio (Seitenverhältnis 1:1/16:9/…) bestimmt. Übergeben Sie keinesfalls ein size-Feld. Dieser Artikel erklärt das Thema auf 600 Zeilen und liefert direkt kopierbare curl-, Python- und Node.js-Codebeispiele.

nano-banana-pro-api-image-config-no-size-parameter-de 图示

Kernpunkte beim Aufruf der Nano Banana Pro API

Bevor Sie den Code kopieren, verinnerlichen Sie bitte diese drei goldenen Regeln – wenn Sie diese verstehen, ist der Rest des Artikels nur noch Detailarbeit:

  1. Modellbezeichnung: Nano Banana Pro = gemini-3-pro-image-preview (auch Gemini 3 Pro Image genannt), gehört zur Google Gemini 3-Serie für Bilderzeugung und -bearbeitung. Manche nennen es auch Nano Banana 2, es ist im Grunde dasselbe.
  2. Protokoll ist Gemini-nativ: Es ist kein OpenAI Chat Completions-kompatibles Protokoll. Der Pfad für die Anfrage lautet :generateContent, die obersten Felder im Request-Body sind contents + generationConfig. Es gibt weder messages noch das OpenAI-typische size-Feld.
  3. Auflösung = imageSize × aspectRatio: imageSize steuert die Schärfestufe (512 / 1K / 2K / 4K), aspectRatio steuert das Bildseitenverhältnis (1:1 / 16:9 / 9:16 / …). Beide zusammen bestimmen die endgültige Pixelanzahl.

📌 Zusammenfassung in einem Satz: Wenn Sie Nano Banana Pro über das Gemini-Protokoll aufrufen, vergessen Sie die OpenAI-Gewohnheit size: "1024x1024" komplett. Der API-Proxy-Dienst von APIYI (apiyi.com) behält das native Gemini-Protokoll für den Nano Banana Pro-Endpunkt vollständig bei; jede imageConfig-Schreibweise, die bei Google offiziell funktioniert, funktioniert auch bei APIYI.

Kurzübersicht der Nano Banana Pro Parameter

Parameter Position Funktion Beispielwerte
imageSize generationConfig.imageConfig Schärfestufe "512" / "1K" / "2K" / "4K"
aspectRatio generationConfig.imageConfig Seitenverhältnis "1:1" / "16:9" / "9:16" / "4:3" etc.
responseModalities generationConfig Ausgabemodalität ["IMAGE"] (erforderlich)
contents[].parts[].text contents Text-Eingabeaufforderung Freitext
contents[].parts[].inline_data contents Referenzbild (base64) Enthält mime_type und data

⚠️ Das in der Tabelle fehlende size-Feld: Da es kein gültiger Parameter für das Gemini-Protokoll ist, sollten Sie es nicht übergeben.

Warum Sie den size-Parameter nicht verwenden sollten: Gründe auf Protokollebene

Dies ist der wichtigste Abschnitt dieses Artikels. Wir beleuchten das Thema auf drei Ebenen, um es vollständig zu durchdringen.

Protokollebene: Gemini und OpenAI sind zwei unabhängige Spezifikationen

Die Bild-APIs von OpenAI (DALL-E 2/3, gpt-image-1) verwenden den String-Parameter size: "1024x1024" auf der obersten Ebene; die Bild-API von Google Gemini 3 hingegen ist als verschachteltes imageConfig-Objekt konzipiert. Beide Spezifikationen sind völlig unabhängig voneinander. Nano Banana Pro basiert auf dem nativen Gemini-Protokoll, daher gilt:

  • size: "1024x1024" —— Das Gemini-Protokoll kennt dieses Feld nicht.
  • size: "1K" —— Dieses Feld existiert nicht.
  • n: 4 —— Es gibt kein Feld für "generiere N Bilder auf einmal" wie bei OpenAI.
  • imageConfig.imageSize: "1K" —— Korrekt.
  • imageConfig.aspectRatio: "16:9" —— Korrekt.

Verhaltensebene: Was passiert, wenn man size trotzdem mitsendet?

Die serverseitige Verarbeitung führt meist zu einem von drei Szenarien, von denen keines Ihren Wünschen entspricht:

  1. Stummes Ignorieren: Das vorgelagerte Gateway verwirft unbekannte Felder als ungültig. Sie glauben, die Einstellung sei aktiv, aber das System gibt standardmäßig 1K im 1:1-Format aus.
  2. Direkter 400-Fehler: Gateways mit strenger Schema-Validierung lehnen die Anfrage aufgrund unbekannter Felder sofort ab.
  3. Beeinflussung von Abrechnung/Routing: Manche Proxy-Ebenen interpretieren size als Routing-Signal und leiten die Anfrage an die falsche Endpunkt-Version weiter.

Engineering-Ebene: Technische Schulden durch unsauberen Code

Viele Teams kapseln die APIs verschiedener Anbieter wie OpenAI, Gemini oder Stability in einer gemeinsamen Aufrufschicht und verwenden gewohnheitsmäßig ein "universelles size-Feld". Das sieht zwar elegant aus, ist aber eine Fehlerquelle. Es wird empfohlen, beim Aufruf von nativen Gemini-Schnittstellen wie Nano Banana Pro eine separate Konvertierungskette zu nutzen. Mappen Sie den size-Parameter explizit auf imageConfig.imageSize + imageConfig.aspectRatio, anstatt den ursprünglichen size-Wert einfach durchzureichen.

💡 Empfehlung: Wenn Sie Nano Banana Pro über APIYI (apiyi.com) aufrufen, schreiben Sie eine kleine Konvertierungsfunktion. Diese sollte Strings wie "1024x1024" in imageSize: "1K" und aspectRatio: "1:1" zerlegen, um Mischkonfigurationen von Grund auf zu vermeiden.

Vollständige Vergleichstabelle: imageSize × aspectRatio

nano-banana-pro-api-image-config-no-size-parameter-de 图示

imageSize-Stufen und Abrechnung

imageSize Ungefähre Auflösung Output-Token Preis (Referenz) Empfohlene Anwendung
"512" 512×512 Ebene Niedrig Am günstigsten Thumbnails / Entwürfe
"1K" 1024×1024 Ebene ~1120 ≈ $0,134 Standardempfehlung
"2K" 2048×2048 Ebene ~1120 ≈ $0,134 HD-Poster
"4K" 4096×4096 Ebene ~2000 ≈ $0,24 (ca. 80% teurer) Druckqualität

💰 Kostenhinweis: 4K ist etwa 80 % teurer als 1K/2K. Nutzen Sie 4K nicht unüberlegt. Für die meisten Web-/App-Szenarien reicht 1K völlig aus; 4K sollte nur bei Bedarf für ultrahohe Auflösungen verwendet werden. Die aktuellen Preise finden Sie auf der Website von APIYI (apiyi.com).

Vollständige Liste der unterstützten aspectRatio-Werte

Verhältnis Verwendung
"1:1" Profilbilder / Quadratische Social-Media-Bilder
"16:9" Querformat-Video-Thumbnails / Desktop-Hintergründe
"9:16" Hochformat-Kurzvideos / Handy-Hintergründe
"4:3" Klassisches Foto-Querformat
"3:4" Klassisches Foto-Hochformat
"3:2" / "2:3" DSLR-Standardverhältnis
"4:5" / "5:4" Instagram-Einzelbilder
"21:9" Ultra-Breitbild-Kino-Look
"1:4" / "4:1" Lange Banner
"1:8" / "8:1" Extreme Langformate für Spezialzwecke

Häufige Kombinationen → Pixel-Mapping

imageSize aspectRatio Ungefähre Pixel-Ausgabe
1K 1:1 1024 × 1024
1K 16:9 1024 × 576
1K 9:16 576 × 1024
2K 1:1 2048 × 2048
2K 16:9 2048 × 1152
4K 1:1 4096 × 4096
4K 9:16 2304 × 4096
4K 21:9 4096 × 1728

Hinweis: Die tatsächlichen Pixelmaße können aufgrund modellinterner Ausrichtungsregeln um ±N Pixel variieren, was jedoch die visuelle Schärfestufe nicht beeinträchtigt.

Hier ist die Übersetzung des technischen Leitfadens für die Nano Banana Pro API:

Korrekter Aufrufcode für die Nano Banana Pro API

Im Folgenden finden Sie minimale, ausführbare Beispiele in drei Programmiersprachen. Alle drei Beispiele führen dieselbe Aufgabe aus: Eingabe eines Originalbildes + einer Eingabeaufforderung, Ausgabe eines Bildes im 1K 1:1 Format.

curl-Version (am anschaulichsten, ideal für das Debugging)

curl -X POST \
  "https://api.apiyi.com/v1beta/models/gemini-3-pro-image-preview:generateContent" \
  -H "Authorization: Bearer DEIN-APIYI-SCHLÜSSEL" \
  -H "Content-Type: application/json" \
  -d '{
    "contents": [{
      "parts": [
        {
          "inline_data": {
            "mime_type": "image/png",
            "data": "iVBORw0KGgoAAAANSUhEUgAA...(Originalbild-Base64)"
          }
        },
        {
          "text": "Ändere dieses Bild in einen Cyberpunk-Stil und behalte die Pose der Person bei"
        }
      ]
    }],
    "generationConfig": {
      "responseModalities": ["IMAGE"],
      "imageConfig": {
        "aspectRatio": "1:1",
        "imageSize": "1K"
      }
    }
  }'

Python-Version (Empfehlung: Verwenden Sie direkt requests, ohne Abhängigkeit von einem SDK)

import base64
import requests

with open("input.png", "rb") as f:
    img_b64 = base64.b64encode(f.read()).decode()

resp = requests.post(
    "https://api.apiyi.com/v1beta/models/gemini-3-pro-image-preview:generateContent",
    headers={
        "Authorization": "Bearer DEIN-APIYI-SCHLÜSSEL",
        "Content-Type": "application/json",
    },
    json={
        "contents": [{
            "parts": [
                {"inline_data": {"mime_type": "image/png", "data": img_b64}},
                {"text": "Ändere dieses Bild in einen Cyberpunk-Stil und behalte die Pose der Person bei"},
            ]
        }],
        "generationConfig": {
            "responseModalities": ["IMAGE"],
            "imageConfig": {
                "aspectRatio": "1:1",
                "imageSize": "1K",
            },
        },
    },
    timeout=120,
)

data = resp.json()
out_b64 = data["candidates"][0]["content"]["parts"][0]["inline_data"]["data"]
with open("output.png", "wb") as f:
    f.write(base64.b64decode(out_b64))

Node.js-Version (Natives fetch verwenden, um zu verhindern, dass das SDK imageConfig verschluckt)

import fs from "node:fs";

const imgB64 = fs.readFileSync("input.png").toString("base64");

const resp = await fetch(
  "https://api.apiyi.com/v1beta/models/gemini-3-pro-image-preview:generateContent",
  {
    method: "POST",
    headers: {
      "Authorization": "Bearer DEIN-APIYI-SCHLÜSSEL",
      "Content-Type": "application/json",
    },
    body: JSON.stringify({
      contents: [{
        parts: [
          { inline_data: { mime_type: "image/png", data: imgB64 } },
          { text: "Ändere dieses Bild in einen Cyberpunk-Stil und behalte die Pose der Person bei" },
        ],
      }],
      generationConfig: {
        responseModalities: ["IMAGE"],
        imageConfig: {
          aspectRatio: "1:1",
          imageSize: "1K",
        },
      },
    }),
  },
);

const data = await resp.json();
const outB64 = data.candidates[0].content.parts[0].inline_data.data;
fs.writeFileSync("output.png", Buffer.from(outB64, "base64"));

🔧 Warum wir dringend natives fetch / requests empfehlen: Es ist bekannt, dass einige SDKs (einschließlich früherer Versionen von LiteLLM oder bestimmte Versionen des Google Node SDK) imageConfig als unbekanntes Feld herausfiltern, wodurch imageSize/aspectRatio wirkungslos werden. Durch das direkte Konstruieren des JSON-Request-Bodys umgehen Sie dieses Problem zu 100 %. Wenn Sie unbedingt ein SDK verwenden möchten, aktualisieren Sie es auf die neueste Version und geben Sie den finalen Body über einen Request-Interceptor in der Konsole aus, um dies zu überprüfen.

Checkliste zur Fehlervermeidung: Die 6 häufigsten Fehler

nano-banana-pro-api-image-config-no-size-parameter-de 图示

Fehler 1: Übermittlung des OpenAI-Style size-Parameters

// ❌ Fehler: 'size' ist kein gültiges Feld im Gemini-Protokoll
{
  "contents": [...],
  "size": "1024x1024",
  "generationConfig": { "imageConfig": { "imageSize": "1K", "aspectRatio": "1:1" } }
}

// ✅ Korrekt: 'size' entfernen, nur 'imageConfig' beibehalten
{
  "contents": [...],
  "generationConfig": { "imageConfig": { "imageSize": "1K", "aspectRatio": "1:1" }, "responseModalities": ["IMAGE"] }
}

Fehler 2: Verwendung von Unterstrichen / snake_case bei Feldnamen

Die Felder in imageConfig der Gemini 3 Image-API verwenden CamelCase: imageSize, aspectRatio, responseModalities. Häufige Fehler:

  • image_size / aspect_ratio / response_modalities
  • imageSize / aspectRatio / responseModalities

Fehler 3: imageConfig wird vom SDK stillschweigend entfernt

Wie bereits erwähnt, filtern einige SDK-Versionen unbekannte Felder. Vorgehensweise zur Fehlerbehebung:

  1. Den tatsächlichen HTTP-Body vor und nach dem SDK-Aufruf ausgeben.
  2. Den tatsächlichen ausgehenden Request mit mitmproxy oder Charles abfangen.
  3. Wenn imageConfig fehlt, auf natives fetch / requests umsteigen.

Fehler 4: responseModalities vergessen

// ❌ Wenn 'responseModalities' nicht gesetzt ist, wird evtl. nur Text statt eines Bildes zurückgegeben
{ "generationConfig": { "imageConfig": {...} } }

// ✅ Es muss explizit deklariert werden, dass die Antwortmodalität 'IMAGE' enthält
{ "generationConfig": { "imageConfig": {...}, "responseModalities": ["IMAGE"] } }

Fehler 5: Kein exponentielles Backoff bei 429-Fehlern (Rate Limiting)

Wenn die Last des Upstream-Dienstes gesättigt ist, wird folgende Meldung zurückgegeben:

{ "error": { "message": "Upstream-Last gesättigt, bitte später erneut versuchen", "type": "upstream_error", "code": 429 } }

Die korrekte Vorgehensweise ist ein exponentielles Backoff-Retry (3s → 6s → 12s). Versuchen Sie es nicht sofort erneut, da dies die Überlastung nur verschlimmert:

import time

for attempt in range(3):
    resp = requests.post(url, json=body, headers=headers, timeout=120)
    if resp.status_code != 429:
        break
    time.sleep(3 * (2 ** attempt))   # 3s, 6s, 12s

Fehler 6: Falsche Platzierung mehrerer Referenzbilder

Nano Banana Pro unterstützt die Eingabe mehrerer Bilder (Originalbild + mehrere Referenzbilder). Alle Bilder sollten als einzelne inline_data-Einträge im parts-Array enthalten sein, wobei der Text-Prompt am Ende des Arrays steht:

// ✅ Korrekt: Bilder zuerst, Text zuletzt
"parts": [
  { "inline_data": { "mime_type": "image/png", "data": "Originalbild-Base64" } },
  { "inline_data": { "mime_type": "image/png", "data": "Referenzbild1-Base64" } },
  { "inline_data": { "mime_type": "image/png", "data": "Referenzbild2-Base64" } },
  { "text": "Bitte migriere den Stil des Originalbildes auf den Farbton von Referenzbild 1 und nutze die Komposition von Referenzbild 2" }
]

🧰 Zusammenfassung: Erstellen Sie aus diesen 6 Punkten eine "Nano Banana Pro Checkliste" für Ihr Team. Wenn Sie diese vor jedem neuen API-Aufruf durchgehen, vermeiden Sie über 90 % der trivialen Bugs. Der Nano Banana Pro Endpunkt von APIYI (apiyi.com) folgt vollständig dem Gemini-Protokoll, daher sind alle diese Tipps universell anwendbar.


title: "Analyse des Aufruf-Workflows: Wo treten die meisten Fehler auf?"

Analyse des Aufruf-Workflows: Wo treten die meisten Fehler auf?

nano-banana-pro-api-image-config-no-size-parameter-de 图示

Viele der von Lesern geposteten Protokolle stimmen fast exakt mit dem von Ihnen beschriebenen Ablauf überein:

Frontend POST /api/generate
  → server.js extrahiert Parameter
  → Prüfe modelKey.startsWith('nano-banana')
  → _generateViaGemini() baut Request-Body zusammen
  → POST https://api.apiyi.com/v1beta/models/gemini-3-pro-image-preview:generateContent
  → Rückgabe / Wiederholung

Hier markieren wir die fehleranfälligsten Stellen:

Schritt Häufiges Problem Empfehlung
Frontend-Parameter Übermittlung von size: "1024x1024" In imageSize + aspectRatio aufteilen
server.js Body-Assemblierung size-Feld wird versehentlich an Gemini weitergereicht size in der Assemblierungsfunktion explizit löschen
Modell-Routing nano-banana wurde auf 1.5 statt 3 Pro geroutet Modellname strikt als gemini-3-pro-image-preview setzen
Request-Versand SDK-Version mit Schema-Validierung verwendet Natives fetch nutzen oder SDK aktualisieren
Fehlerbehandlung 429-Fehler direkt an User weitergegeben Exponentielles Backoff (3 Versuche) implementieren
Antwort-Parsing Standardmäßig als text ausgelesen, obwohl IMAGE Korrekter Pfad: candidates[0].content.parts[0].inline_data.data

📋 Kurz gefasst: Ihr Workflow-Struktur ist korrekt. Wenn Sie das überflüssige size-Feld bei der Parameter-Extraktion entfernen und sicherstellen, dass server.js es nicht außerhalb der generationConfig wieder einfügt, ist die Kette sauber.

FAQ – Häufig gestellte Fragen

Q1: Sind Nano Banana Pro und Nano Banana 2 dasselbe?
Ja. In der Community wird Gemini 3 Pro Image (gemini-3-pro-image-preview) oft als Nano Banana 2 oder Nano Banana Pro bezeichnet. Alle drei Begriffe meinen dasselbe Modell. Bei APIYI (apiyi.com) ist der Modellname gemäß der offiziellen Dokumentation maßgeblich.

Q2: Was passiert, wenn ich keine imageConfig übermittle?
Das Modell verwendet interne Standardwerte (meist 1K + 1:1). Wenn Ihnen die Auflösung egal ist, können Sie sie weglassen; wenn Sie spezifische Anforderungen an das Bildformat haben, müssen Sie imageConfig explizit übergeben.

Q3: Kann ich das Gemini-Protokoll nutzen und gleichzeitig size wie bei OpenAI übergeben?
Das ist nicht zuverlässig. Das Gemini-Protokoll kennt kein size-Feld; eine Mischung führt zu unvorhersehbarem Verhalten. Die Verwendung von imageConfig.imageSize + imageConfig.aspectRatio ist der sicherste Weg.

Q4: Ist die Bildqualität bei 4K zwingend besser?
Die Details sind reichhaltiger, aber die Kosten verdoppeln sich fast (~$0,24 vs. $0,134) und die Generierungszeit steigt. Für Web-/App-Bilder reichen 1K oder 2K meist aus. Testen Sie reale Anwendungsfälle und entscheiden Sie nach visuellem Vergleich.

Q5: Was ist der Unterschied zwischen dem Aufruf von Nano Banana Pro über APIYI (apiyi.com) und der Google-API?
APIYI bietet eine einheitliche Authentifizierung im OpenAI-Stil (Bearer Token), einen aus dem Inland erreichbaren Endpunkt und eine zentrale Abrechnung. Das Protokoll selbst entspricht exakt dem nativen Gemini-Format. Das bedeutet, dass imageConfig / aspectRatio / responseModalities aus der Google-Doku bei APIYI identisch funktionieren.

Q6: Warum erhalte ich trotz imageSize: "2K" nur 1K?
Die 3 häufigsten Gründe: (1) Verwendung eines SDKs, das unbekannte Felder filtert, (2) Feldname fälschlicherweise als image_size geschrieben, (3) falsche Verschachtelungsebene in generationConfig. Prüfen Sie den tatsächlichen Netzwerk-Request, um sicherzustellen, dass der Body den Spezifikationen entspricht, bevor Sie den Server-Code debuggen.

Q7: Was tun bei 429-Rate-Limiting?
Implementieren Sie ein exponentielles Backoff (3s/6s/12s). Wenn Ihre Anwendung latenzempfindlich ist, können Sie im APIYI-Arbeitsbereich zwischen Gruppen wechseln oder ein höheres Kontingent beantragen. Vermeiden Sie Endlosschleifen mit sofortigen Wiederholungen, da dies zu einer dauerhaften Drosselung führt.

Q8: Gibt es ein Limit für die Anzahl der Eingabebilder?
Die Gemini 3 Image-Schnittstelle begrenzt die Gesamtgröße der Bilder pro Anfrage (meist in MB, siehe offizielle Doku). Wir empfehlen maximal 4-5 Referenzbilder, die jeweils auf eine angemessene Größe skaliert wurden (erst resizen, dann Base64), um 413-Fehler oder Timeouts zu vermeiden.

Zusammenfassung: Die "Zwei-Parameter-Methode für die Auflösung" verinnerlichen

Wenn Sie sich nur einen einzigen Satz merken wollen, dann diesen:

Die endgültige Ausgabeauflösung von Nano Banana Pro = imageConfig.imageSize × imageConfig.aspectRatio. Übergeben Sie keinesfalls mehr das OpenAI-typische size-Feld.

Vollständige Checkliste:

  • ✅ Modellname: gemini-3-pro-image-preview
  • ✅ Endpunkt: /v1beta/models/.../generateContent
  • generationConfig.imageConfig.imageSize512 / 1K / 2K / 4K
  • generationConfig.imageConfig.aspectRatio1:1 / 16:9 / 9:16 / 4:3 / 3:4 / 21:9 / …
  • generationConfig.responseModalities muss "IMAGE" enthalten
  • ✅ Eingaben mit mehreren Bildern gehören in das parts-Array, der Text-Prompt kommt zuletzt
  • ✅ Bei 429-Rate-Limiting exponentielles Backoff verwenden (3s/6s/12s)
  • ❌ Übergeben Sie kein size: "1024x1024"
  • ❌ Schreiben Sie nicht image_size / aspect_ratio (snake_case ist hier falsch)
  • ❌ Verlassen Sie sich nicht auf alte SDKs, die unbekannte Felder ignorieren; prüfen Sie den Datenverkehr (Sniffing) zur Bestätigung

📢 Ein letzter Hinweis: Wenn Sie Nano Banana Pro über APIYI (apiyi.com) anbinden, kopieren Sie einfach die in diesem Artikel bereitgestellten Code-Vorlagen für cURL, Python oder Node.js. Alle Parameter entsprechen strikt dem nativen Gemini-Protokoll: Kopieren & Einfügen → API-Schlüssel anpassen → Fertig.


Autor: APIYI Team · Kontinuierliche Zusammenstellung bewährter Methoden für den Aufruf von KI-Großsprachmodellen · apiyi.com

Schreibe einen Kommentar