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

OpenAI SDKでGemini APIを呼び出す:base_url・key・モデル名だけを変更する接続チュートリアル

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

オフホワイトの背景に描かれた開発者向け接続イメージ図:左側にチャコールグレーのコードウィンドウがあり、base_url、api_key、modelの3行設定がテラコッタ色で強調表示されている。右側にはGemini APIのクラウドノード。中央は細い矢印で接続され、下部には小さな料金カードとSDKをアイコン化した四角形がある。ロゴなし、なし

Google はすでにはっきり言っています。Gemini API は OpenAI compatibility に対応しており、OpenAI Python SDK、JavaScript SDK、REST で呼び出せます。公式サンプルの base_urlhttps://generativelanguage.googleapis.com/v1beta/openai/、モデル名は gemini-3.5-flash です(Google AI for Developers)。
これは、既存の OpenAI SDK コードを持つチームにとって非常に実用的です。新しく client を書き直す必要も、メッセージ構造を変える必要もありません。まず 3 か所の設定を差し替えて動かし、その後で Gemini ネイティブ機能を使うかどうか決めれば十分です。

生成り色の背景に描かれた 3 ステップの移行フロー図。左側に OpenAI SDK の旧設定カード、中央にテラコッタ色の矢印と「3 行を変更」のラベル、右側に Gemini API の新設定カード。3 行はそれぞれ base_url、api_key、model で、チャコールグレーの細線とテラコッタのハイライトを使用

まず、どの 3 か所を変更するかを見る

Google のドキュメントでは、サンプルの後に明確に書かれています。変更点は api_keybase_urlmodel の 3 項目です。OpenAI Python SDK 自体も base_url または OPENAI_BASE_URL の設定に対応しています(openai-python)。Node SDK では対応するフィールドが baseURL です(openai-node)。

最小構成の Python サンプル:

from openai import OpenAI

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

resp = client.chat.completions.create(
    model="gemini-3.5-flash",
    messages=[
        {"role": "system", "content": "你是一个简洁的技术助手。"},
        {"role": "user", "content": "用一句话解释什么是向量数据库。"},
    ],
)

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

既存コードですでに client.chat.completions.create() を使っているなら、多くの場合、client の初期化部分を設定項目として切り出すだけで済みます。業務関数の中にモデル名をハードコードしないでください。後で Batch、Flex に切り替えたり、モデルを変更したりするときに、より面倒になります。

Node.js でも同じ流れ

JavaScript 版では、フィールド名を base_url から baseURL に変えるだけです。

import OpenAI from "openai";

const client = new OpenAI({
  apiKey: process.env.GEMINI_API_KEY,
  baseURL: "https://generativelanguage.googleapis.com/v1beta/openai/",
});

const resp = await client.chat.completions.create({
  model: "gemini-3.5-flash",
  messages: [{ role: "user", content: "给我一个 Redis 限流方案。" }],
});

console.log(resp.choices[0].message.content);

REST でも直接叩けます。POST https://generativelanguage.googleapis.com/v1beta/openai/chat/completions に対して、リクエストヘッダーに Authorization: Bearer $GEMINI_API_KEY を使います。この方法は、まず curl で SDK、プロキシ、環境変数の問題を切り分けるのに向いています。

コンパクトなアーキテクチャ図。左側に Python SDK、Node SDK、REST の 3 種類の入口が小さなカードで表示され、それらが同じ OpenAI-compatible endpoint に集約され、さらに Gemini 3.5 Flash に接続されている。生成り色の背景、テラコッタ色の矢印、チャコールグレーのラベル、ブランド表記なし

価格は感覚ではなく、出力で計算する

2026-06-14 時点で、Gemini 公式 pricing ページに掲載されている gemini-3.5-flash の標準価格は、入力が $1.50 / 1M tokens、出力が $9.00 / 1M tokens です。Batch と Flex はいずれも入力が $0.75 / 1M tokens、出力が $4.50 / 1M tokens です(Gemini API pricing)。公式には、出力価格には thinking tokens が含まれるとも明記されています。そのため、推論型タスクでは入力価格だけを見ないようにしましょう。

モード 入力 / 1M tokens 出力 / 1M tokens 適したシーン
Standard $1.50 $9.00 オンラインリクエスト、低レイテンシ
Batch $0.75 $4.50 オフラインバッチ処理
Flex $0.75 $4.50 柔軟なスケジューリングを許容できる場合

私のおすすめはシンプルです。チャット、Agent、エディタープラグインはまず Standard を使う。ログ要約、データクレンジング、オフライン評価はできるだけ Batch/Flex を使う。出力が長いタスクでは、コスト差が大きくなります。

移行時に最もハマりやすい落とし穴

第一に、base_url 末尾の /openai/ を忘れないことです。多くの 404 や「モデルが存在しない」問題は、実際には互換パスではなく Gemini ネイティブのパスを叩いていることが原因です。
第二に、環境変数を明確に分けることです。OPENAI_API_KEY は引き続き OpenAI 用に使えますが、Gemini には GEMINI_API_KEY を別に用意することをおすすめします。CI の中で 2 つの provider が同じ変数を奪い合う状態にしないでください。
第三に、まず models.list() を実行することです。Google のドキュメントにはモデル一覧の取得とモデル取得のサンプルがあります。本番前にそれを使って、アカウントのリージョン、権限、モデル ID に問題がないか確認しましょう。
第四に、ストリーミング、関数呼び出し、画像入力などの機能は互換レイヤーにもサンプルがありますが、OpenAI の全パラメータが一対一で対応していると決めつけないことです。まず実際の業務リクエスト 1 件で回帰確認を行いましょう。

key の管理を減らしたい場合

チームで Claude、GPT、Gemini を同時に使っている場合、個別に申請し、カードを登録し、クォータを設定するのは面倒です。手間を減らす方法として onehop があります。OpenAI SDK の base_urlhttps://api.onehop.ai/v1 に変更し、onehop の key を使えば、OpenAI/Anthropic 互換インターフェース経由で Claude、GPT、Gemini を呼び出せます。位置づけとしては、接続まわりの手間を減らすためのサービスです。価格は公式より低く、新規アカウントには $10 が付与され、カード登録も不要です。

from openai import OpenAI

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

resp = client.chat.completions.create(
    model="gemini-3.5-flash",
    messages=[{"role": "user", "content": "把这段报错日志总结成三条原因。"}],
)

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

Claude やマルチモデルルーティングを試したい場合は、こちらを直接確認できます:onehop 上で Claude などのモデルを呼び出す。まず小さなサンプルを動かしたい、カード登録はしたくないという場合は、こちらから始められます:登録だけで $10 の体験クレジットを獲得

結論:まず設定化し、プロバイダーをハードコードしない

今回の Gemini の OpenAI compatibility で最も価値がある点は、「また新しいモデルが増えた」ことではなく、移行コストが十分に低いことです。base_urlapi_keymodel を設定に入れ、業務コードは引き続き OpenAI SDK の chat completions を使います。
動作確認ができたら、次に 3 つのことを追加しましょう。入力/出力 tokens を記録すること、タスクに応じて Standard または Batch/Flex を選ぶこと、モデル ID を段階リリース用のスイッチにすることです。こうしておけば、今日 Gemini を接続し、明日 Claude や別の互換サービスを接続する場合でも、もうコアの業務コードを変更する必要はありません。