跳到主要内容
版本:3.9.x

将企业 AI 流量路由到 Vertex AI

Vertex AI 通过 Google Cloud 的企业基础设施提供 Google Gemini 模型,支持服务账户身份认证、区域端点和企业级 SLA。本指南介绍如何使用 ai-proxy 插件,通过 API7 网关将流量路由到 Vertex AI。

前置条件

  • 安装 Docker

  • 安装 cURL,用于发送请求并验证服务。

  • 安装 jq,用于将服务账户 JSON 压缩为适合 Shell 使用的格式。

  • 拥有一个正在运行的 API7 网关实例。

  • 拥有一个已启用 Vertex AI API 的 Google Cloud 项目。

  • 从控制台获取令牌,并将其保存到环境变量:

    export API_KEY=your-dashboard-token   # 请替换为你的控制台令牌
  • {gateway_group_id} 替换为网关组 ID。如果正在按照快速入门操作,请使用 default

  • 如果使用 Admin API 示例,请在 API7 网关中创建或复用一个服务。如果尚无服务,请按照创建或复用服务操作,然后将其 ID 保存到环境变量:

    export SERVICE_ID=your-service-id         # 请替换为你的服务 ID

配置 GCP 身份认证

按照 Google Cloud 服务账户文档创建服务账户和 JSON 密钥。请确保该服务账户拥有 Vertex AI User 角色。

将服务账户 JSON 作为压缩后的单行 JSON 字符串保存到环境变量:

export GCP_SERVICE_ACCOUNT_JSON="$(jq -c . /path/to/service-account.json)"

jq -c 参数会让 JSON 保持在一行内,避免在 Admin API 或 ADC 示例中复用变量时出现 Shell 引号问题。网关会根据服务账户凭证自动生成并缓存 OAuth 2.0 令牌。

为 Vertex AI 配置 AI 代理

创建一个启用 ai-proxy 插件的路由:

curl -k "https://localhost:7443/apisix/admin/routes?gateway_group_id={gateway_group_id}" -X PUT \
-H "X-API-KEY: ${API_KEY}" \
-d '{
"id": "vertex-ai-route",
"service_id": "'"$SERVICE_ID"'",
"paths": ["/vertex-ai"],
"plugins": {
"ai-proxy": {
"provider": "vertex-ai",
"provider_conf": {
"project_id": "your-gcp-project-id",
"region": "us-central1"
},
"auth": {
"gcp": {
"service_account_json": "'"$GCP_SERVICE_ACCOUNT_JSON"'"
}
},
"options": {
"model": "google/gemini-2.5-flash"
}
}
}
}'

❶ 将服务提供方设置为 vertex-ai,并配置 GCP project_idregion。网关会自动构造正确的区域端点。

❷ 提供 GCP 服务账户 JSON。网关会自动生成并缓存 OAuth 2.0 令牌。

❸ 设置模型。Vertex AI 模型名称使用 google/ 前缀。

也可以使用 override.endpoint 字段直接指定完整的 Vertex AI 端点,而不使用 provider_conf

验证配置

发送聊天补全请求:

curl "http://127.0.0.1:9080/vertex-ai" -X POST \
-H "Content-Type: application/json" \
-d '{
"messages": [
{ "role": "system", "content": "You are a mathematician." },
{ "role": "user", "content": "What is 1+1?" }
]
}'

你应收到类似以下内容的响应:

{
"object": "chat.completion",
"model": "google/gemini-2.5-flash",
"choices": [
{
"index": 0,
"message": {
"role": "assistant",
"content": "1 + 1 = 2\n"
},
"finish_reason": "stop"
}
],
"usage": {
"prompt_tokens": 11,
"completion_tokens": 8,
"total_tokens": 19
}
}

要启用流式响应,请在请求体中设置 "stream": true。使用 proxy-buffering 插件禁用 NGINX proxy_buffering,避免服务器发送事件(SSE)被缓冲。

后续步骤

你已经了解如何通过 API7 网关将流量路由到 Vertex AI。更多信息请参阅 Vertex AI 文档Gemini 模型