使用 OpenAI 库调用 Vertex AI 模型的完整指南

概述

借助 Chat Completions API,开发者可以利用 Python 和 REST 版的 OpenAI 库向 Vertex AI 模型发送请求。如果您已经在使用 OpenAI 库,则可以通过此 API 在调用 OpenAI 模型和 Vertex AI 托管模型之间灵活切换,从而轻松比较它们在输出、成本和可扩展性方面的表现,而无需修改现有代码。如果您尚未使用 OpenAI 库,建议直接调用 Gemini API 以获得更高效的体验。

👉 野卡 | 一分钟注册,轻松订阅海外线上服务

支持的模型

Chat Completions API 同时支持 Gemini 模型和来自 Model Garden 的部分自行部署模型。

来自 Model Garden 的自行部署模型

身份验证

在开始之前,请确保您已经安装了 OpenAI SDK:

bash
pip install openai

使用 Chat Completions API 进行身份验证时,您可以修改客户端设置或更改环境配置以使用 Google 身份验证和 Vertex AI 端点。选择更适合您的方法,并根据您要调用的模型(Gemini 或 Model Garden)进行相应的设置。

在 Python 中,您可以通过 google-auth SDK 获取 Google 凭据。默认情况下,访问令牌的有效期为 1 小时。您可以延长访问令牌的有效期,或定期刷新令牌并更新 openai.api_key 变量。

调用 Gemini 模型

要调用 Gemini 模型,请设置 MODEL_ID 变量并使用 openapi 端点。

Python 示例

以下代码展示了如何使用 Chat Completions API 向 Gemini 模型发送流式传输请求:

python
client = openai.OpenAI()

调用自行部署的模型

要调用自行部署的模型,请设置 ENDPOINT 变量,并在 URL 中使用该变量。

非流式请求示例

以下代码展示了如何发送非流式请求:

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.”
}]
}’

支持的参数

对于 Google 模型,Chat Completions API 支持以下 OpenAI 参数。第三方模型的参数支持可能因模型而异。以下是部分支持的参数:

| 参数 | 描述 |
|——————–|———————————————————————-|
| messages | 包含系统消息、用户消息(支持 textimage_url)等。 |
| model | 指定使用的模型。 |
| max_tokens | 限制生成内容的最大令牌数。 |
| temperature | 控制生成内容的随机性。 |
| top_p | 用于采样算法的核采样参数。 |

刷新凭据

以下代码展示了如何根据需要自动刷新凭据:

python
from typing import Any
import google.auth
import google.auth.transport.requests
import openai

class OpenAICredentialsRefresher:
def init(self, kwargs: Any) -> None:
self.client = openai.OpenAI(
kwargs, api_key=”DUMMY”)
self.creds, self.project = google.auth.default(
scopes=[“https://www.googleapis.com/auth/cloud-platform”]
)

def __getattr__(self, name: str) -> Any:
    if not self.creds.valid:
        auth_req = google.auth.transport.requests.Request()
        self.creds.refresh(auth_req)
        self.client.api_key = self.creds.token
    return getattr(self.client, name)

后续步骤

  • 查看使用 OpenAI 兼容语法调用 Inference API 的示例。
  • 详细了解 Gemini API 的使用方法。
  • 探索如何从 Azure OpenAI 迁移到 Gemini API。

👉 野卡 | 一分钟注册,轻松订阅海外线上服务

上一篇 2025年7月19日
下一篇 2025年7月19日

相关推荐