借助 Chat Completions API,您可以通过 Python 和 REST 版本的 OpenAI 库向 Vertex AI 模型发送请求。如果您已经在使用 OpenAI 库,可以通过此 API 在调用 OpenAI 模型和 Vertex AI 托管模型之间无缝切换,从而轻松比较输出结果、成本以及可扩展性,而无需修改现有代码。对于尚未使用 OpenAI 库的用户,我们建议直接调用 Gemini API。
Chat Completions API 支持以下两类模型的应用:
Gemini 模型
来自 Model Garden 的自行部署模型
首先,您需要安装 OpenAI SDK。使用以下命令进行安装:
bash
pip install openai
使用 Chat Completions API 进行身份验证时,您可以通过修改客户端设置或环境配置,以使用 Google 身份验证和 Vertex AI 端点。选择最适合您的方式,并根据您要调用的模型类型(Gemini 或 Model Garden 自行部署模型)进行相应设置。
在 Python 中,您可以使用 google-auth SDK 以编程方式获取 Google 凭据。
python
import google.auth
creds, project = google.auth.default()
默认情况下,访问令牌的有效期为 1 小时。您可以通过延长访问令牌有效期或定期刷新令牌并更新 openai.api_key 变量来管理凭据。
以下是一个使用 Chat Completions API 向 Gemini 模型发送流式请求的示例代码:
python
client = openai.OpenAI()
response = client.chat.completions.create(
model="google/gemini-1.5-flash-002",
messages=[{"role": "user", "content": "Why is the sky blue?"}]
)
print(response.choices[0].message.content)
您也可以通过 curl 命令直接发送请求:
bash
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."
}]
}'
以下示例展示了如何向 Model Garden 中的自行部署模型发送非流式请求:
python
response = client.chat.completions.create(
model="custom-model-endpoint",
messages=[{"role": "user", "content": "Generate a report on Q3 sales."}]
)
Chat Completions API 支持以下 OpenAI 参数(Google 模型):
messages:支持系统消息、用户消息、助手消息、工具消息和函数消息。
model:模型名称。
max_tokens:最大输出标记数。
temperature:控制生成文本的随机性。
top_p:用于控制生成文本的多样性。
更多参数请参考 OpenAI 官方文档。
如果需要自动刷新凭据,可以参考以下 Python 示例:
python
from google.auth.transport.requests import Request
class OpenAICredentialsRefresher:
def init(self, **kwargs):
self.client = openai.OpenAI(**kwargs)
self.creds, self.project = google.auth.default()
def refresh_credentials(self):
if not self.creds.valid:
self.creds.refresh(Request())
self.client.api_key = self.creds.token
查看 Inference API 的示例。
了解如何从 Azure OpenAI 迁移到 Gemini API。
详细探索 Gemini API 的功能。