|

Mengatasi Kesalahan API Gambar Nano Banana 2: 3 Langkah Beralih ke Format Pemanggilan `generateContent` yang Benar

Catatan Penulis: Penjelasan mendetail tentang penyebab utama error API pembuatan gambar Nano Banana 2 "not supported model for image generation", serta cara beralih dari format OpenAI ke format native Google generateContent untuk pemanggilan yang benar.

Mengalami error not supported model for image generation saat menggunakan Nano Banana 2 untuk membuat gambar? Ini adalah salah satu masalah pemanggilan API gambar Gemini yang paling sering dihadapi developer saat ini. Artikel ini akan menjelaskan akar penyebab error dan cara pemanggilan yang benar, membantu Anda memperbaiki error API gambar Nano Banana 2 dengan cepat.

Nilai Inti: Setelah membaca artikel ini, Anda akan memahami perbedaan pemanggilan API antara model gambar Gemini dan model Imagen, menguasai penggunaan endpoint generateContent yang benar, dan menyelesaikan masalah error dalam 3 langkah.

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


Penyebab Utama Error API Gambar Nano Banana 2

Poin Penjelasan Solusi
Pesan error not supported model for image generation, only imagen models are supported Beralih ke endpoint generateContent
Penyebab utama Endpoint format OpenAI hanya mendukung model Imagen, tidak mendukung model gambar Gemini Gunakan format API native Google
Endpoint yang benar /v1beta/models/{MODEL}:generateContent Ganti /v1/images/generations
Parameter wajib responseModalities: ["TEXT", "IMAGE"] Atur dalam generationConfig

Penjelasan Detail Error API Gambar Nano Banana 2

Saat Anda menggunakan endpoint /v1/images/generations dengan format kompatibel OpenAI untuk memanggil Nano Banana 2 (gemini-3.1-flash-image-preview) atau Nano Banana Pro (gemini-3-pro-image-preview), sistem akan mengembalikan error berikut:

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

Penyebab utama error ini adalah: Model gambar Gemini dan model Imagen adalah dua model dengan arsitektur yang sama sekali berbeda.

  • Model Imagen (seperti imagen-3.0-generate-001) adalah model pembuatan gambar khusus, menggunakan endpoint /v1/images/generations atau :predict
  • Model gambar Gemini (seri Nano Banana) adalah Model Bahasa Besar multimodal yang dapat menghasilkan teks dan gambar secara bersamaan, harus menggunakan endpoint :generateContent

Sederhananya, Anda menggunakan "jalur khusus teks ke gambar" untuk memanggil "model percakapan multimodal", sehingga formatnya tidak cocok dan menyebabkan error.

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


Format Pemanggilan API Gambar Nano Banana 2 yang Benar

Perbandingan Pemanggilan Salah vs Benar

Item Perbandingan ❌ Cara Salah (Format OpenAI) ✅ Cara Benar (Format generateContent)
Endpoint API /v1/images/generations /v1beta/models/{MODEL}:generateContent
Struktur Permintaan Parameter prompt + size + n Struktur contents + generationConfig
Format Respons URL gambar Data gambar Base64 inline
Model yang Didukung Seri DALL-E, Imagen Model gambar Gemini (Seri Nano Banana)
Konten Output Hanya gambar Teks + gambar (output multimodal)

Contoh Permintaan API Gambar Nano Banana 2 yang Salah

Berikut adalah cara pemanggilan yang salah dan akan menyebabkan error:

# ❌ Salah: Menggunakan format OpenAI untuk memanggil 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": "Kucing jingga yang lucu sedang tidur siang di bawah sinar matahari",
    "size": "1024x1024",
    "n": 1
  }'
# Mengembalikan: not supported model for image generation

Contoh Permintaan API Gambar Nano Banana 2 yang Benar

Berikut adalah cara pemanggilan yang benar menggunakan format generateContent:

# ✅ Benar: Menggunakan format generateContent asli 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": "Kucing jingga yang lucu sedang tidur siang di bawah sinar matahari"}
      ]
    }],
    "generationConfig": {
      "responseModalities": ["TEXT", "IMAGE"]
    }
  }'

🎯 Tips Teknis: Melalui platform APIYI apiyi.com untuk memanggil Nano Banana 2, tidak perlu mengonfigurasi akun Google Cloud secara terpisah. Gunakan kunci API yang seragam untuk langsung memanggil endpoint generateContent.


Memulai Cepat dengan API Gambar Nano Banana 2

3 Langkah untuk Memperbaiki Error API Gambar Nano Banana 2

Langkah 1: Ganti Endpoint API

Ubah alamat permintaan dari format OpenAI ke format generateContent:

# Endpoint salah
https://api.apiyi.com/v1/images/generations

# Endpoint benar (Nano Banana 2)
https://api.apiyi.com/v1beta/models/gemini-3.1-flash-image-preview:generateContent

# Endpoint benar (Nano Banana Pro)
https://api.apiyi.com/v1beta/models/gemini-3-pro-image-preview:generateContent

Langkah 2: Ubah Struktur Body Permintaan

Dari parameter prompt + size milik OpenAI, ubah ke struktur contents + generationConfig asli Google. Parameter kunci:

  • contents.parts.text: Teks deskripsi gambar
  • generationConfig.responseModalities: Harus diatur ke ["TEXT", "IMAGE"]

Langkah 3: Proses Data Respons

Gambar yang dikembalikan oleh generateContent adalah data inline yang dikodekan Base64, bukan URL. Kamu perlu mengekstrak dan mendekode gambar dari respons.

Contoh Python Sederhana

import requests
import base64

API_KEY = "YOUR_API_KEY"
BASE_URL = "https://api.apiyi.com"  # Antarmuka seragam 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": "Kucing jingga yang lucu sedang tidur siang di bawah sinar matahari"}]}],
        "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("Gambar telah disimpan sebagai output.png")
    elif "text" in part:
        print("Deskripsi model:", part["text"])

Lihat kode implementasi lengkap (termasuk penanganan error dan pengaturan rasio aspek)
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:
    """
    Menghasilkan gambar menggunakan endpoint generateContent Nano Banana 2

    Args:
        prompt: Deskripsi gambar
        model: Nama model
        aspect_ratio: Rasio aspek (1:1, 16:9, 9:16, 4:3, 3:4)
        output_path: Jalur file output
        api_key: Kunci API

    Returns:
        Kamus yang berisi jalur file dan deskripsi model
    """
    api_key = api_key or os.getenv("APIYI_API_KEY")
    base_url = "https://api.apiyi.com"  # Antarmuka seragam 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"Permintaan API gagal: {response.status_code} - {response.text}")

    result = response.json()
    candidates = result.get("candidates", [])
    if not candidates:
        raise Exception("Tidak ada hasil yang valid dikembalikan")

    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

# Contoh penggunaan
result = generate_image(
    prompt="Lukisan lanskap bergaya tinta, dengan pegunungan berkabut di kejauhan",
    model="gemini-3.1-flash-image-preview",
    aspect_ratio="16:9",
    output_path="landscape.png"
)
print(f"Gambar telah disimpan: {result['image_path']}")
print(f"Deskripsi model: {result['text']}")

Saran: Dapatkan Kunci API melalui APIYI apiyi.com. Platform ini menyediakan kuota pengujian gratis dan mendukung pemanggilan generateContent untuk kedua model gambar Gemini, Nano Banana 2 dan Nano Banana Pro.


Perbandingan Model API Gambar Nano Banana 2

Memahami perbedaan cara pemanggilan API untuk berbagai model pembuatan gambar dapat membantu Anda menghindari kesalahan format serupa:

Model Kode Endpoint API Format Panggilan Platform Tersedia
Nano Banana 2 gemini-3.1-flash-image-preview :generateContent Format asli Google APIYI dan platform lainnya
Nano Banana Pro gemini-3-pro-image-preview :generateContent Format asli Google APIYI dan platform lainnya
Imagen 3 imagen-3.0-generate-001 /v1/images/generations atau :predict Format kompatibel OpenAI APIYI dan platform lainnya
DALL-E 3 dall-e-3 /v1/images/generations Format OpenAI APIYI dan platform lainnya

Penjelasan Parameter Kunci API Gambar Nano Banana 2

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

Endpoint generateContent mendukung parameter pembuatan gambar yang kaya:

Parameter Penjelasan Wajib? Contoh Nilai
contents.parts.text Petunjuk deskripsi gambar ✅ Wajib "seekor kucing oranye di bawah sinar matahari"
responseModalities Pengaturan modalitas respons ✅ Wajib ["TEXT", "IMAGE"]
imageConfig.aspectRatio Rasio aspek gambar Opsional "1:1", "16:9", "9:16"
contents.parts.inlineData Gambar referensi (gambar ke gambar) Opsional Data gambar Base64

💡 Catatan Penting: responseModalities harus selalu menyertakan "TEXT" dan "IMAGE", hanya mengatur ["IMAGE"] akan menyebabkan permintaan gagal. Ini karena model gambar Gemini adalah model multimodal yang selalu menghasilkan deskripsi teks dan gambar secara bersamaan.


Pertanyaan Umum

Q1: Mengapa Nano Banana 2 tidak bisa dipanggil menggunakan format OpenAI?

Nano Banana 2 (gemini-3.1-flash-image-preview) adalah Model Bahasa Besar multimodal berbasis Gemini. Kemampuan pembuatan gambarnya diimplementasikan melalui "percakapan untuk menghasilkan gambar", bukan melalui "endpoint khusus teks ke gambar". Endpoint /v1/images/generations dalam format OpenAI dirancang khusus untuk model pembuatan gambar seperti DALL-E dan Imagen, dan tidak dapat menangani struktur permintaan multimodal model Gemini. Saat memanggil melalui platform APIYI apiyi.com, Anda perlu memilih format endpoint yang sesuai dengan jenis modelnya.

Q2: Apa perbedaan antara API gambar Nano Banana 2 dan Nano Banana Pro?

Keduanya menggunakan endpoint generateContent dengan format pemanggilan yang persis sama. Perbedaan utamanya adalah:

  • Nano Banana 2 (versi Flash): Kecepatan pembuatan lebih cepat, sekitar 3-5 detik, cocok untuk pembuatan batch dan prototipe cepat.
  • Nano Banana Pro: Kualitas gambar lebih tinggi, akurasi rendering teks mencapai 94%, cocok untuk desain detail dan penggunaan komersial.

Di platform APIYI apiyi.com, kedua model ini dapat digunakan. Anda hanya perlu mengganti nama model di URL endpoint.

Q3: Bagaimana cara memproses data gambar yang dikembalikan oleh generateContent?

Berbeda dengan format OpenAI yang mengembalikan URL gambar, generateContent mengembalikan data gambar inline yang dienkode Base64. Langkah-langkah pemrosesannya:

  1. Temukan bagian yang berisi inlineData di dalam candidates[0].content.parts dari respons JSON.
  2. Ambil string Base64 dari field inlineData.data.
  3. Dekode menggunakan base64.b64decode() lalu simpan sebagai file gambar.
  4. Field inlineData.mimeType akan memberi tahu Anda format gambar (biasanya image/png).

Kesimpulan

Inti dari kesalahan API gambar Nano Banana 2 adalah:

  1. Penyebab error jelas: Menggunakan /v1/images/generations (format OpenAI) untuk memanggil model gambar Gemini akan memicu error "not supported model".
  2. Beralih ke generateContent: Endpoint yang benar adalah /v1beta/models/gemini-3.1-flash-image-preview:generateContent.
  3. Atur responseModalities: Harus menyertakan ["TEXT", "IMAGE"] di dalam generationConfig, jika tidak gambar tidak akan dihasilkan.

Saat menghadapi error API Nano Banana 2, intinya hanya satu kalimat: Ganti endpoint pembuatan gambar OpenAI dengan endpoint native Google generateContent.

Disarankan untuk menguji Nano Banana 2 dan Nano Banana Pro dengan cepat melalui APIYI apiyi.com. Platform ini menyediakan kuota gratis, mendukung pemanggilan langsung dengan format generateContent, dan tidak memerlukan konfigurasi akun Google Cloud.


📚 Referensi

  1. Dokumentasi Pembuatan Gambar Google Gemini: Panduan resmi pembuatan gambar Gemini API

    • Tautan: ai.google.dev/gemini-api/docs/image-generation
    • Penjelasan: Berisi penjelasan lengkap parameter dan contoh untuk endpoint generateContent
  2. Referensi API Google generateContent: Dokumentasi antarmuka pembuatan konten Gemini API

    • Tautan: ai.google.dev/api/generate-content
    • Penjelasan: Penjelasan mendalam tentang struktur permintaan dan respons untuk endpoint generateContent
  3. Dokumentasi Kompatibilitas Google Gemini OpenAI: Penjelasan kompatibilitas format Gemini dengan OpenAI

    • Tautan: ai.google.dev/gemini-api/docs/openai
    • Penjelasan: Memahami fitur mana yang mendukung format kompatibel OpenAI dan mana yang memerlukan format asli

Penulis: Tim Teknis APIYI
Diskusi Teknis: Selamat berdiskusi di kolom komentar mengenai masalah pemanggilan API gambar Nano Banana 2, lebih banyak materi dapat diakses di pusat dokumentasi APIYI docs.apiyi.com

Similar Posts