すべての記事へ戻る
ガイド

OpenAI SDKでGemini APIを呼び出す:base_url、モデル名、Gemini 3.5 Flashの料金設定

2026年6月14日 · 10分で読めます · Claude / GPT / Gemini

生成AIのフューチャリスティックなイメージ。紫と青のグラデーション背景に発光するGeminiのロゴ、周囲にコード断片とAPI接続線が浮かぶ。

Google の OpenAI 互換ドキュメントは 2026-05-18 に更新され、Gemini モデルは OpenAI Python / JavaScript SDK から呼び出せると明記されています。核心となる変更点は api_keybase_urlmodel の 3 つだけです(Google)。今日は 2026-06-14 で、料金ページに掲載されている gemini-3.5-flash の標準有料ティアの価格は、入力が $1.50 / 100 万 token、出力(thinking token を含む)が $9.00 / 100 万 token です(Google Pricing)。

私の判断はとてもシンプルです。すでに OpenAI SDK のプロジェクトがあるなら、まず書き直さないこと。まず Gemini を OpenAI-compatible backend として接続し、コスト、ストリーミング、ツール呼び出しを通してから、ネイティブの Gemini SDK に移行するかどうかを決めればよいです。

アイボリー背景の移行前後の比較図。左側は OpenAI SDK の設定カード、右側は Gemini の設定カード。中央では api_key、base_url、model の 3 行の変更だけが強調表示され、テラコッタ色の矢印が左右をつないでいる

1. 最小変更:endpoint とモデル名だけを差し替える

Python では、まず公式 OpenAI SDK をインストールします。

pip install openai
export GEMINI_API_KEY="你的 Gemini API Key"

次に、クライアントを次のように変更します。

import os
from openai import OpenAI

client = OpenAI(
    api_key=os.environ["GEMINI_API_KEY"],
    base_url="https://generativelanguage.googleapis.com/v1beta/openai/",
)

resp = client.chat.completions.create(
    model="gemini-3.5-flash",
    reasoning_effort="low",
    messages=[
        {"role": "system", "content": "你是一个直接、准确的代码助手。"},
        {"role": "user", "content": "用三句话解释 SSE 流式输出。"},
    ],
)

print(resp.choices[0].message.content)

chat.completions.createmessagestools といった形は、引き続き OpenAI Chat Completions スタイルです。OpenAI 自身の API リファレンスでも、Chat Completions はメッセージリストをもとに応答を生成するインターフェースとして定義されています(OpenAI)。したがって、移行の焦点は業務コードではなく、設定レイヤーです。

2. base_url の末尾スラッシュを忘れない

Google ドキュメントにあるアドレスは次のとおりです。

https://generativelanguage.googleapis.com/v1beta/openai/

最後の / を省くと、一部のクライアントでパスを結合する際に奇妙な問題が起きることがあります。本番コードでは、環境変数に切り出すことをおすすめします。

OPENAI_BASE_URL="https://generativelanguage.googleapis.com/v1beta/openai/"
OPENAI_API_KEY="$GEMINI_API_KEY"
OPENAI_MODEL="gemini-3.5-flash"

複数ベンダーのアカウント、利用枠、請求の切り替えを省きたいなら、onehop のほうが手軽なルートです。base_urlhttps://api.onehop.ai/v1 に変更すれば、同じ OpenAI / Anthropic 互換インターフェースから Claude、GPT、Gemini を呼び出せます。新規アカウントには $10 が付与され、カード登録は不要です。まず PoC を作り、その後で公式へ直結するか判断する用途に向いています。

from openai import OpenAI

client = OpenAI(
    api_key="你的 onehop key",
    base_url="https://api.onehop.ai/v1",
)

resp = client.chat.completions.create(
    model="gemini-3.5-flash",
    messages=[{"role": "user", "content": "给我一个 FastAPI 健康检查接口"}],
)
print(resp.choices[0].message.content)

入口はこちらです:onehop で Claude などのモデルを呼び出す登録で $10 の体験クレジットを受け取る

3. 料金はまず出力 token を基準に計算する

gemini-3.5-flash の標準ティアは「安すぎて気にしなくていい」ものではありません。出力価格は入力価格の 6 倍です。

モデル ティア 入力 / 100 万 token 出力 / 100 万 token
gemini-3.5-flash 標準 $1.50 $9.00
gemini-3.5-flash バッチ $0.75 $4.50
gemini-3.5-flash Flex $0.75 $4.50

バッチと Flex の数字も、同じ Google の料金ページに掲載されています。アプリを書くときは max_completion_tokens を制限すべきです。特に要約、コード生成、Agent のツールループでは重要です。入力が多少長くてもキャッシュできますが、出力が制御不能になると実際にコストが燃えます。

コンパクトな棒グラフ。横軸は標準、バッチ、Flex の 3 つのティア、縦軸は 100 万 token あたりの米ドル。各グループに 2 本の棒があり、入力はチャコールグレー、出力はテラコッタ色で、出力価格のほうが高いことを強調している

4. reasoning_effort はどうマッピングされるか

Google の互換レイヤーは OpenAI スタイルの reasoning_effort を受け付け、Gemini の thinking 設定へマッピングします(Google)。

reasoning_effort Gemini 3 Flash thinking_level
minimal minimal
low low
medium medium
high high

指定しない場合は、モデルのデフォルト値が使われます。Google ドキュメントには、もう 1 つ重要な制限も書かれています。Gemini 3 では thinking をオフにできません。none は一部の 2.5 モデルにのみ適用されます。私のおすすめは、本番ではデフォルトを low にし、複雑な計画や長いツール呼び出しチェーンのときだけ medium または high に上げることです。出力価格には thinking token が含まれるため、推論強度は無料のつまみではありません。

5. ストリーミングと関数呼び出し:使えるが、空のチャンクに備える

ストリーミング呼び出しは OpenAI SDK の書き方のままです。

stream = client.chat.completions.create(
    model="gemini-3.5-flash",
    messages=[{"role": "user", "content": "写一个 Redis 缓存封装"}],
    stream=True,
)

for chunk in stream:
    delta = chunk.choices[0].delta.content
    if delta:
        print(delta, end="", flush=True)

ここでの if delta はかなり実用的です。ストリーミング応答には、ロール、ツール呼び出し、または空の増分が含まれることがあります。すべての chunk にテキストがあると仮定してはいけません。

関数呼び出しも toolstool_choice="auto" を使います。Google の互換ドキュメントには天気関数の例があり、Gemini API が function calling をサポートしていることも確認されています(Google)。実際のプロジェクトでは、モデルの返答をただ表示するだけでは不十分です。message.tool_calls を確認し、ローカル関数を実行し、そのツール結果を次のラウンドのメッセージとしてモデルに戻す必要があります。

結論:Gemini への移行の最小コストは 3 行の設定変更だけです。本当に注視すべきなのは、出力 token、thinking の強度、ストリーミングの空 chunk、そしてツール呼び出しの閉ループです。Claude、GPT、Gemini を同じ OpenAI SDK プロジェクトにすばやく入れたいだけなら、onehop の統一入口を使うと設定時間をかなり節約できます:onehop で Claude などのモデルを呼び出す、または先に 登録で $10 の体験クレジットを受け取る