Gemini Chat Completions API を使用すると、Python と REST 用の OpenAI ライブラリを使用して、Vertex AI Gemini API にリクエストを送信できます。すでに OpenAI ライブラリを使用している場合は、この API を使用して、OpenAI モデルと Gemini モデルの呼び出しを切り替えることで、既存のコードを変更することなく、出力、コスト、スケーラビリティを比較できます。OpenAI ライブラリを使用していない場合は、Gemini API を直接呼び出すことをおすすめします。
サポートされているモデル
モデル | バージョン |
---|---|
Gemini 1.5 Flash | google/gemini-1.5-flash-preview-0514 google/gemini-1.5-flash-001 |
Gemini 1.5 Pro | google/gemini-1.5-pro-preview-0514 google/gemini-1.5-pro-preview-0409 google/gemini-1.5-pro-001 |
Gemini 1.0 Pro Vision | google/gemini-1.0-pro-vision google/gemini-1.0-pro-vision-001 |
Gemini 1.0 Pro | google/gemini-1.0-pro-002 google/gemini-1.0-pro-001 google/gemini-1.0-pro |
認証
OpenAI Python ライブラリを使用するには、OpenAI SDK をインストールします。
pip install openai
Gemini Chat Completions API で認証するには、クライアントの設定を変更するか、Google 認証と Vertex AI エンドポイントを使用するように環境構成を変更します。次のいずれか、簡単な方を選択します。
クライアントのセットアップ
Python で Google 認証情報をプログラムで取得するには、google-auth
Python SDK を使用します。
pip install google-auth
pip install requests
Vertex AI チャット補完エンドポイントを参照するように OpenAI SDK を変更します。
# Programmatically get an access token
creds, project = google.auth.default()
auth_req = google.auth.transport.requests.Request()
creds.refresh(auth_req)
# Note: the credential lives for 1 hour by default (https://cloud.google.com/docs/authentication/token-types#at-lifetime); after expiration, it must be refreshed.
# Pass the Vertex endpoint and authentication to the OpenAI SDK
PROJECT = 'PROJECT_ID'
LOCATION = 'LOCATION'
client = openai.OpenAI(
base_url = f'https://{LOCATION}-aiplatform.googleapis.com/v1beta1/projects/{PROJECT}/locations/{LOCATION}/endpoints/openapi',
api_key = creds.token)
デフォルトでは、アクセス トークンの有効期間は 1 時間です。アクセス トークンの有効期間を延長するか、トークンを定期的に更新して openai.api_key
変数を更新します。
環境変数
Google Cloud CLI をインストールします。OpenAI ライブラリは、OPENAI_API_KEY
環境変数と OPENAI_BASE_URL
環境変数を読み取って、デフォルト クライアントの認証とエンドポイントを変更できます。以下の変数を設定します。
$ export PROJECT=PROJECT_ID
$ export LOCATION=LOCATION
$ export OPENAI_API_KEY="$(gcloud auth application-default print-access-token)"
$ export OPENAI_BASE_URL="https://${LOCATION}-aiplatform.googleapis.com/v1beta1/projects/${PROJECT}/locations/${LOCATION}/endpoints/openapi"
次に、クライアントを初期化します。
client = openai.OpenAI()
Gemini Chat Completions API は、OAuth を使用して有効期間の短いアクセス トークンで認証します。デフォルトでは、アクセス トークンの有効期間は 1 時間です。アクセス トークンの有効期間を延長するか、トークンを定期的に更新して OPENAI_API_KEY
環境変数を更新します。
Gemini Chat Completions API を呼び出す
次のサンプルは、ストリーミング以外のリクエストを送信する方法を示しています。
curl
curl -X POST \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ https://${LOCATION}-aiplatform.googleapis.com/v1beta1/projects/${PROJECT_ID}/locations/${LOCATION}/endpoints/openapi/chat/completions \ -d '{ "model": "google/${MODEL_ID}", "messages": [{ "role": "user", "content": "Write a story about a magic backpack." }] }'
Python
import openai client = openai.OpenAI() model_response = client.chat.completions.create( model = "${MODEL_ID}", messages = [{"role": "user", "content": "Write a story about a magic backpack." }] ) print(model_response)
次のサンプルは、ストリーミング リクエストを送信する方法を示しています。
curl
curl -X POST \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ https://${LOCATION}-aiplatform.googleapis.com/v1beta1/projects/${PROJECT_ID}/locations/${LOCATION}/endpoints/openapi/chat/completions \ -d '{ "model": "google/gemini-1.5-flash-001", "stream": true, "messages": [{ "role": "user", "content": "Write a story about a magic backpack." }] }'
Python
import openai client = openai.OpenAI() model_response = client.chat.completions.create( model = "${MODEL_ID}", stream = True, messages = [{"role": "user", "content": "Write a story about a magic backpack." }] ) print(model_response)
サポートされるパラメータ
Gemini Chat Completions API は、次の OpenAI パラメータをサポートしています。各パラメータの説明については、OpenAI のチャット コンプリケーションの作成に関するドキュメントをご覧ください。
messages
System message
User message
:text
タイプとimage_url
タイプがサポートされています。image_url
型は、Cloud Storage に保存されている画像のみをサポートします。Cloud Storage バケットを作成してファイルをアップロードする方法については、オブジェクト ストレージの概要をご覧ください。detail
オプションはサポートされていません。Assistant message
model
max_tokens
n
response_format
json_object
: Gemini API に「application/json」を渡すものとして解釈されます。text
: Gemini API に「text/plain」を渡すものとして解釈されます。- 他の MIME タイプはそのままモデルに渡されます(「application/json」を直接渡すなど)。
stop
stream
temperature
top_p
tools
type
function
name
description
parameters
tool_choice
none
auto
required
:FunctionCallingConfig
のモードANY
に対応します。
function_call
: このフィールドは非推奨ですが、下位互換性のためにサポートされています。functions
: このフィールドは非推奨ですが、下位互換性のためにサポートされています。
サポートされていないパラメータを渡した場合、そのパラメータは無視されます。
次のステップ
- OpenAI 互換の構文で Inference API を呼び出す例をご覧ください。
- OpenAI 互換の構文で Function Calling API を呼び出す例をご覧ください。
- 詳細については、Gemini API をご覧ください。
- 詳細については、Azure OpenAI から Gemini API に移行するをご覧ください。