Closed3

Nano Banana(Gemini 2.5 Flash Image Preview)を Vertex AI からコールして画像生成を実施する

enumura1enumura1

やりたいこと

Nano Banana (Gemini 2.5 Flash Image Preview) モデルを使って、Python で画像を生成したい。
API キーを使わない 方式でAPIをコールして、生成された画像をローカルに保存する。

環境

  • Python 3.13
  • インストールしたパッケージ: google-genai
  • 前提: Cloud にログイン済み、プロジェクト設定済み
コマンド
pip install --upgrade google-genai
enumura1enumura1

事象

最初は Google Gemini API を直接使おうとして 下記のエラーが返っていた。

Missing key inputs argument! To use the Google AI API, provide (api_key) arguments.
To use the Google Cloud API, provide (vertexai, project & location) arguments.

エラーが出た際は、下記のドキュメントの画像編集(テキストと画像による画像変換)を参考に実装していた。

エラー内容を確認すると、以下の 2 通りの方法がある。

  • Google Gemini API 方式
    • API キーが必要
  • Google Cloud API 方式
    • vertexai, project & location が必要

原因

今回は API キー不要で Google Cloud API 方式を使いたかったが、Google Gemini API 方式でコールしていたためエラーになった。

enumura1enumura1

解決方法

モデルガーデンのドキュメント(Try Gemini 2.5 Flash Image Preview (Python)部分)を参考に下記のソースでコールしたら画像が生成された。

index.py
from google import genai
from google.genai.types import GenerateContentConfig

PROJECT_ID = "ほげほげ"
LOCATION = "global"
MODEL_ID = "gemini-2.5-flash-image-preview"

# Vertex AI クライアント作成
client = genai.Client(vertexai=True, project=PROJECT_ID, location=LOCATION)

# 画像生成
response = client.models.generate_content(
    model=MODEL_ID,
    contents=("generate an image of a cow."),
    config=GenerateContentConfig(
        response_modalities=["TEXT", "IMAGE"],
        candidate_count=1,
    ),
)

# 生成された画像を保存
for i, part in enumerate(response.candidates[0].content.parts):
    if part.inline_data:
        # bytes のまま書き込む
        with open(f"generated_image_{i+1}.png", "wb") as f:
            f.write(part.inline_data.data)
        print(f"Saved generated_image_{i+1}.png")

下記のコマンドを実行

python index.py

下記のようにログが出力されたことを確認。

Saved generated_image_1.png

対象のディレクトリにある画像を開くと生成された画像を開いた確認できました。

このスクラップは6日前にクローズされました