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

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

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

アイボリーの背景に描かれた開発者のワークベンチのイメージ図。左側にOpenAI SDKのコードカード、右側にGeminiモデルのカードがあり、中央のテラコッタ色の矢印でbase_url、API Key、modelの3つの変更点を示している。チャコールグレーの細線でつながれ、全体は技術雑誌の表紙のような雰囲気

Google は非常に率直に説明しています。Gemini models は OpenAI の Python および TypeScript/JavaScript SDK からアクセスでき、要点はコードを 3 行変えるだけです。公式の互換性ドキュメントで示されているエンドポイントは https://generativelanguage.googleapis.com/v1beta/openai/、サンプルモデルは gemini-3.5-flash です(Google OpenAI 互換性)。これは既存の OpenAI SDK プロジェクトにとって非常に扱いやすい方法です。先に provider 抽象を分解する必要も、呼び出しスタック全体を入れ替える必要もなく、まず動かしてみることができます。

アイボリーの背景にある3カラムのフローチャート。左列は OpenAI SDK、中列は base_url / API Key / model の3項目、右列は Gemini API と表示。テラコッタ色の矢印が左から右へ伸び、チャコールグレーの細い枠線がある

まず呼び出したいモデルを確認する

2026-06-14 時点で、Google のモデルページでは Gemini 3.5 Flash が Stable として掲載され、モデルコードは gemini-3.5-flash と説明されています。このモデルの入力上限は 1,048,576 tokens、出力上限は 65,536 tokens で、テキスト、画像、動画、音声、PDF の入力に対応し、出力はテキストです(Gemini 3.5 Flash)。モデルページの最終更新日は 2026-05-19 UTC です。

料金も当日のドキュメントを確認する必要があります。Google の料金ページは 2026-06-09 UTC に最終更新されており、gemini-3.5-flash の Standard paid tier は、入力が $1.50 / 1M tokens、出力が $9.00 / 1M tokens とされています。出力料金には thinking tokens が含まれます。Batch は入力が $0.75、出力が $4.50 です(Gemini API 料金)。

モデル 状態 入力上限 Standard 入力 Standard 出力
gemini-3.5-flash Stable 1,048,576 $1.50 / 1M tokens $9.00 / 1M tokens
gemini-3-flash-preview Preview モデルページを参照 $0.50 / 1M tokens $3.00 / 1M tokens
gemini-3.1-flash-lite Stable モデルページを参照 $0.25 / 1M tokens $1.50 / 1M tokens

gemini-3-flash-previewgemini-3.1-flash-lite は、Google の現在のモデルページおよび料金ページに基づいています(ModelsPricing)。Preview モデルをそのまま本番のデフォルト値にしないでください。バージョンや制限が変わる可能性があります。

Python:OpenAI client を Gemini に向ける

まず SDK をインストールします。

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

そのうえで、OpenAI SDK の呼び出し方をそのまま維持します。

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",
    messages=[
        {"role": "system", "content": "你是一个简洁的工程助手。"},
        {"role": "user", "content": "用三句话解释什么是 API 兼容层。"},
    ],
)

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

実際の変更点は 3 つだけです。api_key を Gemini key に変更し、base_url を Google の OpenAI-compatible endpoint に変更し、model を Gemini のモデル名に変更します。公式サンプルの URL 末尾には / が付いている点に注意してください。うっかり削ってから 404 を調査する羽目にならないようにしましょう。

コンパクトなコードのビフォーアフター比較図。左側のコードでは api.openai.com と gpt のモデル名が強調表示され、右側では generativelanguage.googleapis.com/v1beta/openai/ と gemini-3.5-flash が強調表示されている。テラコッタ色の注釈付き

TypeScript:同じく baseURL を使う

Node プロジェクトでも同じです。

npm install openai
export GEMINI_API_KEY="你的 Gemini API Key"
import OpenAI from "openai";

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

const response = await openai.chat.completions.create({
  model: "gemini-3.5-flash",
  messages: [
    { role: "user", content: "给我一个 JSON Schema 校验的最小例子。" },
  ],
});

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

プロジェクトですでに provider を環境変数として抽象化しているなら、変更はさらに小さくなります。

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

多くの古いプロジェクトの落とし穴はここにあります。変数名がまだ OPENAI_API_KEY のままでも問題ありません。値には Gemini key を入れられます。リクエストがどこへ行くかを本当に決めるのは base_url/baseURL です。

ストリーミング、ツール呼び出し、thinking はどうするか

Google の互換性ドキュメントには、streaming、function calling、structured outputs、image understanding などの例が掲載されています(OpenAI 互換性)。既存の OpenAI SDK プロジェクトでは、通常まず 3 つを検証します。通常の chat、stream=True、tools/function calling です。これらが通ってから、モデル固有の機能を扱うのがよいでしょう。

thinking パラメータは慎重に扱う必要があります。互換性ドキュメントには、OpenAI の reasoning_effort が Gemini の thinking 設定にマッピングされると書かれています。ただし、Gemini 3 と一部の 2.5 モデルでは thinking を完全には無効化できません。私の提案はシンプルです。最初のバージョンでは thinking を調整せず、まずデフォルト値で品質とコストのベースラインを作り、その後で長時間タスク、コードエージェント、複雑な推論経路において個別に負荷検証を行います。

複数の Key 管理を減らしたい場合

公式への直接接続は、本格的な本番環境に向いています。請求、制限、データポリシーが明確だからです。問題は、チームが Gemini だけを使うことは少なく、Claude や GPT も使い、さらにツールごとに異なる key を設定する必要があることです。手間を減らす方法として onehop があります。OpenAI SDK の base URL を https://api.onehop.ai/v1 に変更すれば、同じ OpenAI/Anthropic 互換入口から Claude/GPT/Gemini を呼び出せます。新規アカウントには $10 が付与され、カード登録不要なので、まず demo や社内ツールを動かすのに向いています。

import os
from openai import OpenAI

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

resp = client.chat.completions.create(
    model=os.environ["ONEHOP_MODEL"],
    messages=[{"role": "user", "content": "把这段日志总结成 5 条排障线索。"}],
)

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

ここでは意図的に model を環境変数にしています。ゲートウェイのモデル名はコンソールを正とし、コードにハードコードしないでください。複数ベンダーの請求や互換レイヤーの運用を減らしたい場合は、そのまま試せます:onehop で Claude などのモデルを呼び出す、または先にクレジットを受け取る:登録で $10 のお試しクレジットを取得

接続前の最終チェック

本番投入前に、テキストが返るかどうかだけを見てはいけません。少なくとも 4 つ確認してください。第一に、モデルが Google の現在のモデルページでまだ利用可能であること。第二に、料金ページで入力、出力、Batch、Search grounding の費用を照合すること。第三に、401、429、5xx のエラーログを完全に出力すること。第四に、base_urlapi_keymodel を実行時設定にし、モデル切り替えのためにリリースが必要にならないようにすることです。

今回の接続の要点は「別のモデルベンダーに乗り換える」ことではなく、SDK レイヤーとモデルプロバイダーを切り離すことです。まず Google 公式の OpenAI compatibility で gemini-3.5-flash を動かし、その後で直接接続にするか、ゲートウェイにするか、あるいは両方を併用するかを決めればよいでしょう。こうすれば変更は小さく、ロールバックも速くなります。