借助 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-001 |
Gemini 1.5 Pro | 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
将 OpenAI SDK 更改为指向 Vertex AI 聊天补全端点:
# 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'
MODEL_ID = 'MODEL_ID'
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 MODEL_ID=MODEL_ID
$ 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 = f"google/{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/${MODEL_ID}", "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 = f"google/{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 |
|
model |
|
max_tokens |
|
n |
|
response_format |
|
stop |
|
stream |
|
temperature |
|
top_p |
|
tools |
|
tool_choice |
|
function_call |
此字段已弃用,但仍受支持,以实现向后兼容性。 |
functions |
此字段已弃用,但仍受支持,以实现向后兼容性。 |
如果您传递任何不受支持的参数,系统会忽略该参数。
后续步骤
- 查看使用 OpenAI 兼容语法调用 Inference API 的示例。
- 查看使用 OpenAI 兼容语法调用 Function Calling API 的示例。
- 详细了解 Gemini API。
- 详细了解如何从 Azure OpenAI 迁移到 Gemini API。