|

Nano Banana 2 画像APIエラー解決:generateContent 正しい呼び出し形式への3ステップ切り替え


description: Nano Banana 2 画像生成APIで「not supported model for image generation」エラーが発生する根本原因と、OpenAI形式からGoogleネイティブのgenerateContent形式への正しい切り替え方法を解説します。

Nano Banana 2 を使用して画像を生成しようとした際、not supported model for image generation というエラーに遭遇していませんか?これは現在、開発者がGemini画像APIを呼び出す際によく直面する問題の一つです。本記事では、このエラーの根本原因と正しい呼び出し方法を紹介し、Nano Banana 2 画像APIのエラーを迅速に解決するお手伝いをします。

本記事の価値: 本記事を読み終えると、Gemini画像モデルとImagenモデルのAPI呼び出しの違いを理解し、generateContentエンドポイントの正しい使い方を習得し、3ステップでエラーを解決できるようになります。

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


Nano Banana 2 画像APIエラーの核心的原因

要点 説明 解決策
エラーメッセージ not supported model for image generation, only imagen models are supported generateContentエンドポイントに切り替える
根本原因 OpenAI形式のエンドポイントはImagenモデルのみをサポートし、Gemini画像モデルはサポートしていない GoogleネイティブAPI形式を使用する
正しいエンドポイント /v1beta/models/{MODEL}:generateContent /v1/images/generationsを置き換える
必須パラメータ responseModalities: ["TEXT", "IMAGE"] generationConfig内で設定する

Nano Banana 2 画像APIエラーの詳細解説

OpenAI互換形式の /v1/images/generations エンドポイントを使用してNano Banana 2(gemini-3.1-flash-image-preview)またはNano Banana Pro(gemini-3-pro-image-preview)を呼び出そうとすると、システムは以下のエラーを返します:

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

このエラーの核心的原因は、Gemini画像モデルとImagenモデルは全く異なるアーキテクチャのモデルであるという点にあります。

  • Imagenモデル(例:imagen-3.0-generate-001)は専用の画像生成モデルで、/v1/images/generations または :predict エンドポイントを使用します。
  • Gemini画像モデル(Nano Bananaシリーズ)はマルチモーダル言語モデルで、テキストと画像を同時に出力できるため、:generateContent エンドポイントを使用する必要があります。

簡単に言えば、「テキストから画像生成専用チャネル」を「マルチモーダル対話モデル」を呼び出すために使用してしまい、フォーマットが一致しないためエラーが発生しているのです。

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


Nano Banana 2 画像生成 API の正しい呼び出し形式

誤った呼び出し vs 正しい呼び出しの比較

比較項目 ❌ 誤った方法(OpenAI 形式) ✅ 正しい方法(generateContent 形式)
API エンドポイント /v1/images/generations /v1beta/models/{MODEL}:generateContent
リクエスト構造 prompt + size + n パラメータ contents + generationConfig 構造
レスポンス形式 画像 URL インライン Base64 画像データ
対応モデル DALL-E、Imagen シリーズ Gemini 画像モデル(Nano Banana シリーズ)
出力内容 画像のみ テキスト + 画像(マルチモーダル出力)

Nano Banana 2 画像生成 API の誤ったリクエスト例

以下はエラーが発生する誤った呼び出し方法です:

# ❌ 誤り:OpenAI 形式で 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": "日差しの中で居眠りするかわいいオレンジ猫",
    "size": "1024x1024",
    "n": 1
  }'
# 戻り値: not supported model for image generation

Nano Banana 2 画像生成 API の正しいリクエスト例

以下は正しい generateContent 形式での呼び出し方法です:

# ✅ 正しい:Google ネイティブの generateContent 形式を使用
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": "日差しの中で居眠りするかわいいオレンジ猫"}
      ]
    }],
    "generationConfig": {
      "responseModalities": ["TEXT", "IMAGE"]
    }
  }'

🎯 技術ヒント: APIYI apiyi.com プラットフォームを通じて Nano Banana 2 を呼び出す場合、Google Cloud アカウントを個別に設定する必要はなく、統一された APIキーを使用して直接 generateContent エンドポイントを呼び出すことができます。


Nano Banana 2 画像生成 API クイックスタート

Nano Banana 2 画像生成 API エラーを3ステップで修正

ステップ 1:API エンドポイントを変更する

リクエストアドレスを OpenAI 形式から generateContent 形式に切り替えます:

# 誤ったエンドポイント
https://api.apiyi.com/v1/images/generations

# 正しいエンドポイント(Nano Banana 2)
https://api.apiyi.com/v1beta/models/gemini-3.1-flash-image-preview:generateContent

# 正しいエンドポイント(Nano Banana Pro)
https://api.apiyi.com/v1beta/models/gemini-3-pro-image-preview:generateContent

ステップ 2:リクエストボディ構造を修正する

OpenAI の prompt + size パラメータから、Google ネイティブの contents + generationConfig 構造に変更します。重要なパラメータ:

  • contents.parts.text:画像の説明テキスト
  • generationConfig.responseModalities:必ず ["TEXT", "IMAGE"] に設定する

ステップ 3:レスポンスデータを処理する

generateContent が返す画像は Base64 エンコードされたインラインデータであり、URL ではありません。レスポンスから画像を抽出してデコードする必要があります。

最小限の Python サンプル

import requests
import base64

API_KEY = "YOUR_API_KEY"
BASE_URL = "https://api.apiyi.com"  # 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": "日差しの中で居眠りするかわいいオレンジ猫"}]}],
        "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("画像を output.png として保存しました")
    elif "text" in part:
        print("モデルの説明:", part["text"])

完全な実装コードを表示(エラー処理とアスペクト比設定を含む)
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:
    """
    Nano Banana 2 generateContent エンドポイントを使用して画像を生成する

    Args:
        prompt: 画像の説明
        model: モデル名
        aspect_ratio: アスペクト比 (1:1, 16:9, 9:16, 4:3, 3:4)
        output_path: 出力ファイルパス
        api_key: APIキー

    Returns:
        ファイルパスとモデル説明を含む辞書
    """
    api_key = api_key or os.getenv("APIYI_API_KEY")
    base_url = "https://api.apiyi.com"  # 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"API リクエスト失敗: {response.status_code} - {response.text}")

    result = response.json()
    candidates = result.get("candidates", [])
    if not candidates:
        raise Exception("有効な結果が返されませんでした")

    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

# 使用例
result = generate_image(
    prompt="水墨画風の山水画、遠くに霞がかかった山々",
    model="gemini-3.1-flash-image-preview",
    aspect_ratio="16:9",
    output_path="landscape.png"
)
print(f"画像を保存しました: {result['image_path']}")
print(f"モデルの説明: {result['text']}")

推奨: APIYI apiyi.com で APIキーを取得してください。プラットフォームは無料テスト枠を提供し、Nano Banana 2 と Nano Banana Pro の両方の Gemini 画像モデルの generateContent 呼び出しをサポートしています。


Nano Banana 2 画像生成APIモデル比較

異なる画像生成モデルのAPI呼び出し方法の違いを理解することで、同様のフォーマットエラーを回避できます:

モデル コード名 APIエンドポイント 呼び出し形式 対応プラットフォーム
Nano Banana 2 gemini-3.1-flash-image-preview :generateContent Googleネイティブ形式 APIYIなどのプラットフォーム
Nano Banana Pro gemini-3-pro-image-preview :generateContent Googleネイティブ形式 APIYIなどのプラットフォーム
Imagen 3 imagen-3.0-generate-001 /v1/images/generations または :predict OpenAI互換形式 APIYIなどのプラットフォーム
DALL-E 3 dall-e-3 /v1/images/generations OpenAI形式 APIYIなどのプラットフォーム

Nano Banana 2 画像生成API主要パラメータ説明

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

generateContentエンドポイントは豊富な画像生成パラメータをサポートしています:

パラメータ 説明 必須
contents.parts.text 画像説明プロンプト ✅ 必須 "日差しの中のオレンジ猫"
responseModalities 応答モダリティ設定 ✅ 必須 ["TEXT", "IMAGE"]
imageConfig.aspectRatio 画像アスペクト比 オプション "1:1", "16:9", "9:16"
contents.parts.inlineData 参照画像(画像から画像生成) オプション Base64画像データ

💡 重要: responseModalities には必ず "TEXT""IMAGE" の両方を指定してください。["IMAGE"] のみの設定ではリクエストが失敗します。これはGemini画像モデルがマルチモーダルモデルであり、常にテキスト説明と画像の両方を出力するためです。


よくある質問

Q1: Nano Banana 2 を OpenAI 形式で呼び出せないのはなぜですか?

Nano Banana 2(gemini-3.1-flash-image-preview)は Gemini をベースにしたマルチモーダル言語モデルであり、その画像生成能力は専用の「テキストから画像生成インターフェース」ではなく、「対話生成」を通じて実現されています。OpenAI 形式の /v1/images/generations エンドポイントは、DALL-E や Imagen などの専用画像生成モデル向けに設計されており、Gemini モデルのマルチモーダルなリクエスト構造を処理できません。APIYI apiyi.com プラットフォームを通じて呼び出す際は、モデルの種類に応じて対応するエンドポイント形式を選択する必要があります。

Q2: Nano Banana 2 と Nano Banana Pro の画像 API の違いは何ですか?

どちらも generateContent エンドポイントを使用し、呼び出し形式はまったく同じです。主な違いは以下の通りです:

  • Nano Banana 2(Flash 版):生成速度が速く、約 3-5 秒。バッチ生成や迅速なプロトタイピングに適しています。
  • Nano Banana Pro:画像品質が高く、文字レンダリングの精度は 94%。精密なデザインや商用用途に適しています。

APIYI apiyi.com プラットフォームでは両方のモデルが利用可能で、エンドポイント URL でモデル名を切り替えるだけです。

Q3: generateContent から返される画像データはどのように処理しますか?

OpenAI 形式が画像 URL を返すのとは異なり、generateContent は Base64 エンコードされたインライン画像データを返します。処理手順は以下の通りです:

  1. レスポンス JSON の candidates[0].content.parts から、inlineData を含む部分を見つけます。
  2. inlineData.data フィールドの Base64 文字列を取得します。
  3. base64.b64decode() を使用してデコードし、画像ファイルとして保存します。
  4. inlineData.mimeType フィールドで画像フォーマット(通常は image/png)がわかります。

まとめ

Nano Banana 2 画像 API のエラーの核心ポイント:

  1. エラー原因の明確化/v1/images/generations(OpenAI 形式)を使用して Gemini 画像モデルを呼び出すと、"not supported model" エラーが発生します。
  2. generateContent への切り替え:正しいエンドポイントは /v1beta/models/gemini-3.1-flash-image-preview:generateContent です。
  3. responseModalities の設定generationConfig["TEXT", "IMAGE"] を含めることが必須です。含めないと画像を生成できません。

Nano Banana 2 API でエラーが発生した場合、核心は一言で言えば:OpenAI の画像生成エンドポイントを、Google ネイティブの generateContent エンドポイントに置き換える ことです。

Google Cloud アカウントの設定なしで generateContent 形式を直接呼び出せる APIYI apiyi.com プラットフォームを通じて、Nano Banana 2 と Nano Banana Pro を無料枠で迅速にテストすることをお勧めします。

📚 参考資料

  1. Google Gemini 画像生成ドキュメント: Gemini API 公式画像生成ガイド

    • リンク: ai.google.dev/gemini-api/docs/image-generation
    • 説明: generateContent エンドポイントの完全なパラメータ説明とサンプルを含む
  2. Google generateContent API リファレンス: Gemini API コンテンツ生成インターフェースドキュメント

    • リンク: ai.google.dev/api/generate-content
    • 説明: generateContent エンドポイントのリクエストとレスポンス構造の詳細
  3. Google Gemini OpenAI 互換性ドキュメント: Gemini と OpenAI フォーマットの互換性説明

    • リンク: ai.google.dev/gemini-api/docs/openai
    • 説明: どの機能が OpenAI 互換フォーマットをサポートしているか、どれがネイティブフォーマットを必要とするかを理解する

著者: APIYI 技術チーム
技術交流: コメント欄で Nano Banana 2 画像 API 呼び出しに関する議論を歓迎します。詳細な資料は APIYI docs.apiyi.com ドキュメントセンターでご覧いただけます

類似投稿