OpenAI SDK で Gemini を使う方法

AI

こんにちは。KIYONOエンジニアです。

OpenAI SDK ベースで開発したアプリケーションに対して、Gemini を追加したいケースがあります。例えば、特定の処理だけ別のモデルを使いたい場合などです。

実は Gemini には OpenAI 互換のエンドポイントが用意されており、これを使えば最小限の修正で Gemini 対応が可能です。


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 のサービスアカウントを使用する方法です。本番環境での利用に適しています。

準備するもの

  1. Google Cloud プロジェクト: Vertex AI API が有効化されていること
  2. サービスアカウント: 「Vertex AI ユーザー」権限を持ち、JSON キーを発行済みであること
  3. 環境変数: 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 対応できるのは大きなメリットです。ぜひ活用してみてください。

参考ドキュメント

お問い合わせ

    AIGCP
    盛林寛史をフォローする
    KIYONO Engineer Blog

    コメント

    PAGE TOP
    タイトルとURLをコピーしました