💻

Nano Banana (gemini-2.5-flash-image-preview)APIを無料で使う方法

に公開
8

はじめに

どうやらOpenRouterにて、Nano Banana (gemini-2.5-flash-image-preview)APIがFreeで利用できるようになっていましたので、使い方をまとめたいと思います。

https://openrouter.ai/google/gemini-2.5-flash-image-preview:free

OpenRouterのモデルは基本的にはOpenAI API形式で利用することができますが、画像生成、画像編集モデルも同様に利用できるのかを試していきます!

ちなみにVertex AIから利用する場合は先日記載した下記の記事をご覧ください。
https://zenn.dev/asap/articles/8d5af79e40fa4d

なお、OpenRouterについては下記の記事をご覧ください。
https://zenn.dev/asap/articles/5cda4576fbe7cb

リポジトリ

下記のリポジトリをご覧ください。
https://github.com/personabb/langchain_asap_sample/tree/main/gemini_image_generation

準備

リポジトリをクローンする

下記コマンドでリポジトリをクローンしてください。

git clone https://github.com/personabb/langchain_asap_sample.git

この記事では、リポジトリ内の下記フォルダを利用します。

 cd langchain_asap_sample/gemini2.5_image_generation

環境変数

OpenRouterのAPIを取得します。下記の記事を参考に取得してください。
https://zenn.dev/asap/articles/5cda4576fbe7cb#api-keyの取得

その後、リポジトリ内の、.env.exampleファイルを.envにリネームし、OPENROUTER_API_KEYに取得したAPI情報を入力します。

仮想環境の構築

下記のコマンドで環境を構築してください

pip install -r requirements.txt

uv使っている方は下記でおそらく仮想環境は構築できます。

uv sync

実行

パラメータ

コード内の下記の箇所を修正することで、作成する画像や、参照画像のパス、何回APIを叩くかを設定できます。

openrouter_image_editing_api_eng.py
    # ========== 一度に生成する生成枚数の指定 ==========
    generate_images = 5

    # ========== 読み込む画像のパス ==========
    file_path = "inputs/images3.png"

    # ========== 編集内容の指定 ==========
    query = "Turn it into a 3D figure. However, make the pose a cooler, more stylish girl's pose."

    # =================================

実行コマンド

下記コマンドで実行ができます。

./langchain_asap_sample/gemini2.5_image_generation
python openrouter_image_editing_api_eng.py

OpenRouterでのNano Bananaの呼び出し方

openrouter_image_editing_api_eng.py

API_KEY = os.getenv("OPENROUTER_API_KEY", "")
ENDPOINT = "https://openrouter.ai/api/v1"

def call_openrouter_api(system_prompt, user_query, image_base64, api_key, endpoint, temperature=0.7):
    """
    OpenRouter APIを直接呼び出す関数
    """
    headers = {
        "Authorization": f"Bearer {api_key}",
        "Content-Type": "application/json",
    }
    
    payload = {
        "model": "google/gemini-2.5-flash-image-preview:free",
        "messages": [
            {
                "role": "system",
                "content": system_prompt
            },
            {
                "role": "user",
                "content": [
                    {
                        "type": "text",
                        "text": user_query
                    },
                    {
                        "type": "image_url",
                        "image_url": {
                            "url": f"data:image/png;base64,{image_base64}"
                        }
                    }
                ]
            }
        ],
        "temperature": temperature,
        # 画像生成を有効にする - OpenRouterの形式に従う
        "modalities": ["image", "text"]
    }
    
    try:
        response = requests.post(
            f"{endpoint}/chat/completions",
            headers=headers,
            json=payload,
            timeout=60  # タイムアウト設定
        )
        
        # JSONレスポンスを返す
        result = response.json()
        
        return result

下記のページを参考にしています。
https://openrouter.ai/docs/features/multimodal/image-generation

本当はLangChainからも実行したかったですが、どうやらChatOpenAIクラスが画像出力にはうまく動作せず断念しました。
(サーバから画像データは帰ってきているようだが、LangChainがうまくその情報をReturnできない)

まとめ

Gemini APIもVertex AIも、Nano Bananaを利用する場合は有料なので、gemini-2.0-flash-exp-image-generationのように無料で使えないのかあ・・・と思っておりましたが、さすがOpenRouterですね!!!

なお、下記の記事でも記載していますが、プロンプトは英語で書きましょう!
日本語だとテキストのみが出力されて、画像が出力されないことがあります!

https://zenn.dev/asap/articles/8d5af79e40fa4d

Discussion

yaaizzyyaaizzy

初めましてこんにちは、有益な記事を有難うございました。
この記事を参考にして画像生成をしてみましたが、何回かやっているうちにリミットに達したという趣旨のエラーが出て生成できなくなってしまいました。
10ドルチャージしてみたのですが、ダメでした。
もしかして、nano bananaは「無料モデルの制限が1日あたり1,000 requestsに改善」には適応されない感じになってますでしょうか?
あまり詳しくないので、自分のプログラムが悪いのか判断できずに困っております。
今でも無料で通用するものか教えて頂けると有難いです。
よろしくお願いします。

asapasap

ご質問ありがとうございます!

openrouter起因のレートリミットか、バックで動いているgoogle ai studio起因のレートリミットかどちらなんでしょうか?

正直どちらでも対処しようがない気もしますが、私が今すぐに試せないので・・・ちゃんと回答できず申し訳ないです。

無料で使われすぎて制限をかけられたとかはあると思います
差し支えなければ何回実施したか教えてもらえると、他の方の後学になるのでありがたいです

yaaizzyyaaizzy

ご返事いただき、ありがとうございました!
たぶん、5回程度だったかと思いますので、si6さんと同じかもです。
もしかしたら、10ドル課金はNano bananaには関係ないのかもしれない?!
また、明日にでも試してみます!

si6si6

こんばんは!
私もasapさんのこの投稿に従い、OpenRouterでNanoBananaAPIを叩くことに成功しました。
私は10ドルの課金はせず、ご案内の通りpython openrouter_image_editing_api_eng.pyを実行したところ、画像が5つ生成された後にそれ以上生成できない状況となりました。
状況とするとyaaizzyさんと同じ状況かと思われます。
取り急ぎ共有いたします。とても参考になる投稿、ありがとうございました!!

yaaizzyyaaizzy

共有ありがとうございました!
ちなみにですが、Nano bananaで無料生成したいだけなら、Google AI StudioのBuildでアプリ作ると50枚くらいいけるっぽいですよ!

asapasap

@yaaizzy
@si6

お二方ともありがとうございます。
日本時間朝9時解除で5回の制限がかかっているようです。
ご共有ありがとうございます

tacca884tacca884

Google: Gemini 2.5 Flash Image Previewのfreeが出てこなかったのですが、もしかしてfreeは無くなったのですかね?Prompt Pricingをfreeにした中には出てこないですね。

たけるDたけるD

free版は恐らく今現在使えない状態になっていますね。リストから外されており、model=に入れて画像生成しようとしても404エラーが返ってきてしまいます。
「:free」の部分は消して、「Google: Gemini 2.5 Flash Image Preview」として通常通り使うしか今は仕方なさそうです。