どうやらOpenRouterにて、Nano Banana (gemini-2.5-flash-image-preview)APIがFreeで利用できるようになっていましたので、使い方をまとめたいと思います。
OpenRouterのモデルは基本的にはOpenAI API形式で利用することができますが、画像生成、画像編集モデルも同様に利用できるのかを試していきます!
ちなみにVertex AIから利用する場合は先日記載した下記の記事をご覧ください。
なお、OpenRouterについては下記の記事をご覧ください。
下記のリポジトリをご覧ください。
リポジトリをクローンする
下記コマンドでリポジトリをクローンしてください。
git clone https://github.com/personabb/langchain_asap_sample.git
この記事では、リポジトリ内の下記フォルダを利用します。
cd langchain_asap_sample/gemini2.5_image_generation
環境変数
OpenRouterのAPIを取得します。下記の記事を参考に取得してください。
その後、リポジトリ内の、.env.example
ファイルを.env
にリネームし、OPENROUTER_API_KEY
に取得したAPI情報を入力します。
仮想環境の構築
下記のコマンドで環境を構築してください
pip install -r requirements.txt
uv使っている方は下記でおそらく仮想環境は構築できます。
パラメータ
コード内の下記の箇所を修正することで、作成する画像や、参照画像のパス、何回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_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,
"modalities": ["image", "text"]
}
try:
response = requests.post(
f"{endpoint}/chat/completions",
headers=headers,
json=payload,
timeout=60
)
result = response.json()
return result
下記のページを参考にしています。
本当はLangChainからも実行したかったですが、どうやらChatOpenAIクラスが画像出力にはうまく動作せず断念しました。
(サーバから画像データは帰ってきているようだが、LangChainがうまくその情報をReturnできない)
Gemini APIもVertex AIも、Nano Bananaを利用する場合は有料なので、gemini-2.0-flash-exp-image-generationのように無料で使えないのかあ・・・と思っておりましたが、さすがOpenRouterですね!!!
なお、下記の記事でも記載していますが、プロンプトは英語で書きましょう!
日本語だとテキストのみが出力されて、画像が出力されないことがあります!
Views: 0