こんにちは。KIYONOエンジニアです。
OpenAI SDK ベースで開発したアプリケーションに対して、Gemini を追加したいケースがあります。例えば、特定の処理だけ別のモデルを使いたい場合などです。
実は Gemini には OpenAI 互換のエンドポイントが用意されており、これを使えば最小限の修正で Gemini 対応が可能です。
2つの認証パターン
Gemini の API キー発行方法によって、実装が異なります。
| 方式 | 特徴 | 用途 |
|---|---|---|
| Google AI Studio | シンプルな API キー認証 | 個人開発、プロトタイプ |
| Vertex AI (GCP) | サービスアカウント認証 | 本番環境、企業利用 |
パターン1: Google AI Studio(API キー認証)
Google AI Studio で発行した API キーを使用する、最もシンプルな方法です。
実装(TypeScript)
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-2.5-flash",
messages: [
{ role: "user", content: "こんにちは!" }
],
});
console.log(response.choices[0].message.content);
パターン2: Vertex AI(サービスアカウント認証)
GCP のサービスアカウントを使用する方法です。本番環境での利用に適しています。
準備するもの
- Google Cloud プロジェクト: Vertex AI API が有効化されていること
- サービスアカウント: 「Vertex AI ユーザー」権限を持ち、JSON キーを発行済みであること
- 環境変数: JSON キーへのパスを
GOOGLE_APPLICATION_CREDENTIALSに設定していること
依存ライブラリのインストール
npm install openai google-auth-library
実装(TypeScript)
Vertex AI では、API キーの代わりにアクセストークンを使用します。
import { OpenAI } from 'openai';
import { GoogleAuth } from 'google-auth-library';
async function callGeminiOnVertex() {
// 1. 設定情報
const projectId = process.env.GCP_PROJECT_ID;
const location = 'us-central1';
const modelId = 'gemini-1.5-flash';
// 2. Google Auth を利用してアクセストークンを生成
const auth = new GoogleAuth({
scopes: 'https://www.googleapis.com/auth/cloud-platform'
});
const authClient = await auth.getClient();
const tokenResponse = await authClient.getAccessToken();
const accessToken = tokenResponse.token;
if (!accessToken) {
throw new Error("Failed to get Google Access Token.");
}
// 3. OpenAI クライアントの初期化
const openai = new OpenAI({
baseURL: `https://${location}-aiplatform.googleapis.com/v1/projects/${projectId}/locations/${location}/publishers/google/models`,
apiKey: accessToken,
});
// 4. チャット実行
const response = await openai.chat.completions.create({
model: modelId,
messages: [
{ role: 'user', content: 'Gemini と OpenAI SDK の連携について教えてください。' },
],
});
console.log('Result:', response.choices[0].message.content);
}
callGeminiOnVertex().catch(console.error);
注意点
トークンの有効期限(Vertex AI の場合)
getAccessToken() で取得したトークンは通常 1 時間で失効します。
インスタンスを長時間Singletonで使いたい場合は注意が必要です。
- リクエスト毎にトークンを取得する
- 有効期限をチェックして自動更新するラッパーを作成する
等したほうが良いかと思います。
パラメータの差異
OpenAI SDK のすべてのパラメータが Gemini でサポートされているわけではありません。詳細は公式ドキュメントを参照してください。
まとめ
OpenAI SDK から Gemini を使う方法を紹介しました。
- 手軽に試したい場合: Google AI Studio の API キーを使用
- 本番環境で使いたい場合: Vertex AI のサービスアカウント認証を使用
既存の OpenAI SDK ベースのコードを最小限の変更で Gemini 対応できるのは大きなメリットです。ぜひ活用してみてください。

コメント