Chat Completions API を使用すると、Python と REST 用の OpenAI ライブラリを使用して、Vertex AI モデルにリクエストを送信できます。すでに OpenAI ライブラリを使用している場合は、この API を使用して、OpenAI モデルと Vertex AI ホストモデルの呼び出しを切り替えることで、既存のコードを変更することなく、出力、コスト、スケーラビリティを比較できます。OpenAI ライブラリを使用していない場合は、Gemini API を直接呼び出すことをおすすめします。
サポートされているモデル
Chat Completions API は、Gemini モデルと、Model Garden から選択したセルフデプロイ モデルの両方をサポートしています。
Gemini モデル
次の表に、サポートされている Gemini モデルを示します。
モデル | バージョン |
---|---|
Gemini 1.5 Flash | google/gemini-1.5-flash |
Gemini 1.5 Pro | google/gemini-1.5-pro |
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 |
Model Garden からセルフデプロイされたモデル
HuggingFace Text Generation Interface(HF TGI)と Vertex AI Model Garden のビルド済み vLLM コンテナは、Chat Completions API をサポートしています。ただし、これらのコンテナにデプロイされたすべてのモデルが Chat Completions API をサポートしているわけではありません。次の表に、コンテナ別にサポートされている最も一般的なモデルを示します。
HF TGI |
vLLM |
---|---|
認証
OpenAI Python ライブラリを使用するには、OpenAI SDK をインストールします。
pip install openai
Chat Completions API で認証するには、クライアントの設定を変更するか、Google 認証と Vertex AI エンドポイントを使用するように環境構成を変更します。どちらか簡単な方法を選択します。Gemini モデルを呼び出すか、セルフデプロイの Model Garden モデルを呼び出すかによって、設定手順が異なります。
Model Garden の一部のモデルとサポートされている Hugging Face モデルは、リクエストを処理する前に、まず Vertex AI エンドポイントにデプロイする必要があります。Chat Completions API からこれらのセルフデプロイ モデルを呼び出す場合は、エンドポイント ID を指定する必要があります。既存の Vertex AI エンドポイントを一覧取得するには、gcloud ai endpoints list
コマンドを使用します。
クライアントのセットアップ
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_ID = 'PROJECT_ID'
LOCATION = 'LOCATION'
##############################
# Choose one of the following:
##############################
# If you are calling a Gemini model, set the MODEL_ID variable and set
# your client's base URL to use openapi.
MODEL_ID = 'MODEL_ID'
client = openai.OpenAI(
base_url = f'https://{LOCATION}-aiplatform.googleapis.com/v1beta1/projects/{PROJECT_ID}/locations/{LOCATION}/endpoints/openapi',
api_key = creds.token)
# If you are calling a self-deployed model from Model Garden, set the
# ENDPOINT_ID variable and set your client's base URL to use your endpoint.
MODEL_ID = 'MODEL_ID'
client = openai.OpenAI(
base_url = f'https://{LOCATION}-aiplatform.googleapis.com/v1beta1/projects/{PROJECT_ID}/locations/{LOCATION}/endpoints/{ENDPOINT}',
api_key = creds.token)
デフォルトでは、アクセス トークンの有効期間は 1 時間です。アクセス トークンの有効期間を延長するか、トークンを定期的に更新して openai.api_key
変数を更新します。
環境変数
Google Cloud CLI をインストールします。OpenAI ライブラリは、OPENAI_API_KEY
環境変数と OPENAI_BASE_URL
環境変数を読み取って、デフォルト クライアントの認証とエンドポイントを変更できます。以下の変数を設定します。
$ export PROJECT_ID=PROJECT_ID
$ export LOCATION=LOCATION
$ export OPENAI_API_KEY="$(gcloud auth application-default print-access-token)"
Gemini モデルを呼び出すには、MODEL_ID
変数を設定し、openapi
エンドポイントを使用します。
$ export MODEL_ID=MODEL_ID
$ export OPENAI_BASE_URL="https://${LOCATION}-aiplatform.googleapis.com/v1beta1/projects/${PROJECT_ID}/locations/${LOCATION}/endpoints/openapi"
Model Garden からセルフデプロイ モデルを呼び出すには、ENDPOINT
変数を設定し、代わりに URL で使用します。
$ export ENDPOINT=ENDPOINT_ID
$ export OPENAI_BASE_URL="https://${LOCATION}-aiplatform.googleapis.com/v1beta1/projects/${PROJECT_ID}/locations/${LOCATION}/endpoints/${ENDPOINT}"
次に、クライアントを初期化します。
client = openai.OpenAI()
Gemini Chat Completions API は、OAuth を使用して有効期間の短いアクセス トークンで認証します。デフォルトでは、アクセス トークンの有効期間は 1 時間です。アクセス トークンの有効期間を延長するか、トークンを定期的に更新して OPENAI_API_KEY
環境変数を更新します。
Chat Completions API を使用して Gemini を呼び出す
次のサンプルは、ストリーミング以外のリクエストを送信する方法を示しています。
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
Vertex AI SDK for Python のインストールまたは更新の方法については、Vertex AI SDK for Python をインストールするをご覧ください。 詳細については、Python API リファレンス ドキュメントをご覧ください。
次のサンプルは、Chat Completions API を使用して Gemini モデルにストリーミング リクエストを送信する方法を示しています。
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}", "stream": true, "messages": [{ "role": "user", "content": "Write a story about a magic backpack." }] }'
Python
Vertex AI SDK for Python のインストールまたは更新の方法については、Vertex AI SDK for Python をインストールするをご覧ください。 詳細については、Python API リファレンス ドキュメントをご覧ください。
Chat Completions API を使用してセルフデプロイ モデルを呼び出す
次のサンプルは、ストリーミング以外のリクエストを送信する方法を示しています。
curl -X POST \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ https://us-central1-aiplatform.googleapis.com/v1beta1/projects/${PROJECT_ID}/locations/us-central1/endpoints/${ENDPOINT}/chat/completions \ -d '{ "messages": [{ "role": "user", "content": "Write a story about a magic backpack." }] }'
次のサンプルは、Chat Completions API を使用して、セルフデプロイ モデルにストリーミング リクエストを送信する方法を示しています。
curl -X POST \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ https://us-central1-aiplatform.googleapis.com/v1beta1/projects/${PROJECT_ID}/locations/us-central1/endpoints/${ENDPOINT}/chat/completions \ -d '{ "stream": true, "messages": [{ "role": "user", "content": "Write a story about a magic backpack." }] }'
サポートされるパラメータ
Google モデルの場合、Chat Completions API は次の OpenAI パラメータをサポートしています。各パラメータの説明については、OpenAI のチャット補完の作成に関するドキュメントをご覧ください。サードパーティ モデルのパラメータのサポートはモデルによって異なります。サポートされているパラメータを確認するには、モデルのドキュメントをご覧ください。
messages |
|
model |
|
max_tokens |
|
n |
|
frequency_penalty |
|
presence_penalty |
|
response_format |
|
stop |
|
stream |
|
temperature |
|
top_p |
|
tools |
|
tool_choice |
|
function_call |
このフィールドは非推奨ですが、下位互換性確保のためにサポートされています。 |
functions |
このフィールドは非推奨ですが、下位互換性確保のためにサポートされています。 |
サポートされていないパラメータを渡した場合、そのパラメータは無視されます。
認証情報を更新する
次の例は、必要に応じて認証情報を自動的に更新する方法を示しています。
Python
次のステップ
- OpenAI 互換の構文で Inference API を呼び出す例をご覧ください。
- OpenAI 互換の構文で Function Calling API を呼び出す例をご覧ください。
- 詳細については、Gemini API をご覧ください。
- 詳細については、Azure OpenAI から Gemini API に移行するをご覧ください。