本文介绍如何通过阿里云 AI 网关快速接入 Google Vertex AI,实现对 Gemini 等模型的统一管理和调用。
背景说明
Google Vertex AI 是 Google Cloud 提供的企业级 AI 平台,支持 Gemini、PaLM 等多种先进的大语言模型。通过阿里云 AI 网关接入 Vertex AI,您可以:
统一接入:通过 OpenAI 兼容协议访问 Vertex AI,无需适配原生 API
灵活鉴权:支持 GCP Service Account 和 Vertex AI Express Mode 两种鉴权方式
协议转换:支持 AI 网关自动协议转换或使用 Vertex AI 原生兼容端点
高可用保障:结合 AI 网关的 Fallback 能力实现跨供应商容灾
前提条件
场景概览
场景 | 描述 |
使用 GCP Service Account 密钥进行身份验证,支持完整的 Vertex AI 功能和 OpenAI 协议兼容方式选择 | |
使用 Vertex AI 提供的快速模式,通过 API Key 直接接入,配置更简单 | |
代理 Vertex AI 原生 REST API,适用于 Imagen、Veo 等非 Gemini 系列模型 | |
使用 Google 官方 GenAI SDK 接入,客户端自行完成 OAuth 认证,通过网关进行请求观测和计量(不推荐) | |
使用 Gemini 模型通过 Chat Completions 接口理解和分析图片、视频等多模态内容 | |
使用 Gemini Nano Banana Pro 等模型通过 OpenAI 兼容协议进行图片生成、编辑和变体 |
场景一:GCP Service Account 模式接入
GCP Service Account 是 Google Cloud 的标准身份验证方式,适用于需要完整 Vertex AI 功能的企业级应用场景。
1. 准备 GCP Service Account
在开始配置之前,您需要在 Google Cloud Console 中创建 Service Account 并下载 JSON 密钥文件。
在左侧导航栏,选择 IAM 和管理 > 服务账号。
单击 创建服务账号,填写服务账号名称和描述。
为服务账号分配 Vertex AI User 角色(或更高权限)。
单击 KEY,选择创建,下载密钥JSON文件。
说明 密钥文件包含敏感信息,请妥善保管。JSON 文件格式示例如下:
{
"type": "service_account",
"project_id": "your-project-id",
"private_key_id": "your-private-key-id",
"private_key": "-----BEGIN PRIVATE KEY-----\n...\n-----END PRIVATE KEY-----\n",
"client_email": "your-sa@your-project.iam.gserviceaccount.com",
"token_uri": "https://oauth2.googleapis.com/token"
}对于 GCP Service Account 的管理,详见Google官方文档。
2. 创建 AI 服务
登录 AI 网关控制台。
在左侧导航栏,选择 实例,并在顶部菜单栏选择地域。
在 实例 页面,单击目标 实例 ID。
在左侧导航栏,单击 服务,并单击 服务 页签。
单击 创建服务,在 创建服务 面板,参考如下信息配置 AI 服务:
配置项 | 说明 |
服务来源 | 选择 AI 服务 |
服务名称 | 填写服务名称,如 |
大模型供应商 | 选择 Vertex AI |
鉴权方式 | 选择 GCP Service Account |
GCP Service Account KEY | 粘贴完整的 Service Account JSON 密钥内容 |
vertexLocation | Vertex AI 服务区域,默认值为 |
vertexProjectId | GCP 项目 ID(只读),系统会自动从 JSON 密钥中解析 |
OpenAI 协议兼容方式 | 选择协议转换方式(详见下方说明) |
OpenAI 协议兼容方式说明:
选项 | 描述 | 适用场景 |
AI 网关转换 | 通过 AI 网关在请求和响应阶段进行协议转换。网关会将 OpenAI 格式的请求转换为 Vertex AI 原生格式,并将响应转换回 OpenAI 格式 | 需要使用 Vertex AI 原生功能(如特定安全设置)的场景 |
Vertex AI 原生兼容端点 | 使用 Vertex AI 提供的 OpenAI 兼容 Chat Completions 端点,直接接收 OpenAI 格式请求 | 如需要获取 Vertex AI 独有的 |
重要提示:
如果 JSON 密钥格式不正确或缺少必要字段,系统会显示相应的错误提示。
vertexProjectId为只读字段,前端会自动解析 JSON 密钥中的project_id。使用「Vertex AI 原生兼容端点」模式时,请求体中的
model参数需要添加 Provider 前缀google/。例如:原本使用gemini-3-flash-preview需要改为google/gemini-3-flash-preview。
关于「Vertex AI 原生兼容端点」模式支持的参数及模型,详见Google官方文档。
3. 创建 Model API
登录 AI 网关控制台。
在左侧导航栏,选择 实例,并在顶部菜单栏选择地域。
在 实例 页面,单击目标 实例 ID。
在左侧导航栏,单击 Model API,然后单击 创建 Model API。
在 创建 Model API 面板中,配置基本信息如下:
域名:建议配置自定义域名(使用默认环境域名存在限流)。
Base Path:API 的基本路径,如
/gemini。模型类型:选择 文本生成。
协议:选择 OpenAI 兼容。
路由配置:需要勾选
/v1/chat/completions路由。AI 请求观测:开启。
服务模型:单模型服务。
服务列表:
服务名称:选择上一步中配置的 Vertex AI 服务。
模型名称:选择透传,或指定具体模型如
gemini-2.0-flash。
单击 确定 完成创建。
4. 调试 Model API
单击目标 Model API 操作 列下的 调试 按钮进行测试。
在 调试 控制面板中,模型名称 输入 Gemini 系列模型(如
gemini-3-flash-preview),在右侧 模型返回 页签下与大模型进行对话。
重要 在模型返回页签下,使用的是 /v1/chat/completions 对话接口,如需使用其他接口,您可选择 CURL 命令 或 原始输出 的方式通过 curl、SDK 调试。
CURL 调用示例:
curl -X POST "http://your-gateway-domain/gemini/v1/chat/completions" \
-H "Content-Type: application/json" \
-d '{
"model": "gemini-3-flash-preview",
"messages": [
{"role": "user", "content": "你好,请介绍一下你自己"}
],
"stream": false
}'场景二:Vertex AI Express Mode 接入
Vertex AI Express Mode 是 Google 提供的快速接入方式,通过 API Key 即可直接访问 Vertex AI 服务,无需配置 Service Account,适合快速验证和轻量级应用场景。
1. 获取 Vertex AI Express Mode API Key
获取API-KEY的方式请参考文档 Vertex AI in express mode。
说明 Express Mode API Key 可能有使用限制,详情请参考 Google 官方文档。
2. 创建 AI 服务
登录 AI 网关控制台。
在左侧导航栏,选择 实例,并在顶部菜单栏选择地域。
在 实例 页面,单击目标 实例 ID。
在左侧导航栏,单击 服务,并单击 服务 页签。
单击 创建服务,在 创建服务 面板,参考如下信息配置 AI 服务:
配置项 | 说明 |
服务来源 | 选择 AI 服务 |
服务名称 | 填写服务名称,如 |
大模型供应商 | 选择 Vertex AI |
鉴权方式 | 选择 Vertex AI Express Mode |
API-KEY | 填写从 Google AI Studio 获取的 API Key |
说明 Express Mode 配置方式与其他大模型供应商(如 OpenAI、Claude)类似,只需填写 API Key 即可。
3. 创建 Model API
在左侧导航栏,单击 Model API,然后单击 创建 Model API。
在 创建 Model API 面板中,配置基本信息如下:
域名:建议配置自定义域名(使用默认环境域名存在限流)。
Base Path:API 的基本路径,如
/gemini。模型类型:选择 文本生成。
协议:选择 OpenAI 兼容。
路由配置:需要勾选
/v1/chat/completions路由。AI 请求观测:开启。
服务模型:单模型服务。
服务列表:
服务名称:选择上一步中配置的 Vertex AI Express 服务。
模型名称:选择透传。
单击 确定 完成创建。
4. 调试 Model API
单击目标 Model API 操作 列下的 调试 按钮进行测试。
在 调试 控制面板中,选择 Gemini 模型进行对话测试。
场景三:Vertex AI REST API 接入
本场景介绍如何通过 AI 网关代理 Vertex AI 原生 REST API,适用于使用 Imagen 4、Veo 3 等非 Gemini 系列模型的场景。与前两个场景不同,此模式使用 Vertex AI 原生协议而非 OpenAI 兼容协议。
适用场景
使用 Imagen 4 等图片生成模型
使用 Veo 3 等视频生成模型
使用通过 Vertex AI Model Garden 托管的第三方模型
需要直接调用 Vertex AI 原生 REST API 的场景
1. 创建 AI 服务
创建 AI 服务的步骤与场景一或场景二类似,关键差异如下:
登录 AI 网关控制台。
在左侧导航栏,选择 实例,并在顶部菜单栏选择地域。
在 实例 页面,单击目标 实例 ID。
在左侧导航栏,单击 服务,并单击 服务 页签。
单击 创建服务,在 创建服务 面板,参考如下信息配置 AI 服务:
配置项 | 说明 |
服务来源 | 选择 AI 服务 |
服务名称 | 填写服务名称,如 |
大模型供应商 | 选择 Vertex AI |
鉴权方式 | 选择 GCP Service Account 或 Vertex AI Express Mode(参考场景一、场景二) |
模型协议 | 选择「原生协议」 |
重要提示:
模型协议必须选择「原生协议」,表示使用 Vertex AI 原生 REST API 格式。
选择「原生协议」后,将不会显示「OpenAI 协议兼容方式」选项,因为此模式不进行协议转换。
2. 创建 Model API
在左侧导航栏,单击 Model API,然后单击 创建 Model API。
在 创建 Model API 面板中,配置基本信息如下:
域名:建议配置自定义域名(使用默认环境域名存在限流)。
Base Path:API 的基本路径,如
/vertex-api。使用场景:根据您的需求选择(此处仅是控制台的分类辅助,混用也不会有问题):
文本生成:适用于 Llama 等文本模型
图片生成:适用于 Imagen 4 等图片生成模型
视频生成:适用于 Veo 3 等视频生成模型
协议:选择 VertexAI。
路由配置:选择 VertexAI 协议后,网关会自动配置以下两条内置路由:
路由路径
用途
/{api-version}/publishers/{publisher}/models/{model}:{action}Express Mode 使用的路径格式
/{api-version}/projects/{project}/locations/{location}/publishers/{publisher}/models/{model}:{action}Service Account 模式使用的路径格式
服务模型:单模型服务。
服务列表:
服务名称:选择上一步中创建的 AI 服务(如
vertex-rest-api)。模型名称:选择透传。
单击 确定 完成创建。
3. 调用示例
配置完成后,您可以使用 Vertex AI 原生 REST API 格式进行调用。
使用 Imagen 4 生成图片(Express Mode):
curl -X POST "https://your-gateway-domain/vertex-api/v1/publishers/google/models/imagen-4.0-generate-preview-06-06:predict" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '{
"instances": [
{
"prompt": "一只可爱的橘猫在阳光下打盹"
}
],
"parameters": {
"sampleCount": 1,
"aspectRatio": "1:1"
}
}'使用 Veo 3 生成视频(Express Mode):
curl -X POST "https://your-gateway-domain/vertex-api/v1/publishers/google/models/veo-3.0-generate-preview:predictLongRunning" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '{
"instances": [
{
"prompt": "一只橘猫在草地上奔跑的慢动作视频"
}
],
"parameters": {
"aspectRatio": "16:9",
"durationSeconds": 8
}
}'支持的模型
模型类别 | 模型示例 | Publisher |
图片生成 | Imagen 4 ( | |
视频生成 | Veo 3 ( | |
文本生成 | Llama 4 ( | meta |
说明 具体支持的模型列表请参考 Google官方文档。
场景四:Google GenAI SDK 模式接入
不推荐使用:此模式下网关仅作为透明代理,无法使用 AI 服务中配置的鉴权信息,功能受限。建议使用场景一、场景二或场景三的接入方式,可获得更完整的功能支持。
如果您使用 Google 官方提供的 google-genai SDK 进行开发,可以通过此模式将 SDK 请求代理到 AI 网关,实现请求观测和计量功能。
重要说明:由于 GenAI SDK 的鉴权方式是客户端先向 Google 认证服务器发起 OAuth 2.0 认证请求,再进行模型推理 API 调用,因此在此模式下无法使用 AI 服务中配置的鉴权信息。网关仅作为透明代理,用于观测和计量推理 API 的调用。
1. 创建 DNS 服务
由于 SDK 自行完成鉴权,您需要创建一个 DNS 类型的服务直接指向 Vertex AI 后端。
登录 AI 网关控制台。
在左侧导航栏,选择 实例,并在顶部菜单栏选择地域。
在 实例 页面,单击目标 实例 ID。
在左侧导航栏,单击 服务,并单击 服务 页签。
单击 创建服务,在 创建服务 面板,参考如下信息配置 DNS 服务:
配置项 | 说明 |
服务来源 | 选择 DNS 域名 |
服务名称 | 填写服务名称,如 |
服务地址 | 填写 Vertex AI API 地址,可选择以下两种格式: |
TLS 模式 | 选择 单向 |
SNI | 默认与填入的域名一致,无需手动修改 |
说明
使用全局端点
aiplatform.googleapis.com:443适用于 Express Mode。使用区域端点
{location}-aiplatform.googleapis.com:443适用于 Service Account 模式,需根据您的 GCP 项目所在区域填写。
2. 创建 Model API
在左侧导航栏,单击 Model API,然后单击 创建 Model API。
在 创建 Model API 面板中,配置基本信息如下:
域名:建议配置自定义域名(使用默认环境域名存在限流)。
Base Path:API 的基本路径(可选),如
/vertex。模型类型:选择 文本生成 或 图片生成。
协议:选择 VertexAI。
路由配置:选择 VertexAI 协议后,网关会自动配置以下两条内置路由:
| 路由路径 | 用途 |
|------------------------------------------------------------------------------------------------|---------|
|
/{api-version}/publishers/{publisher}/models/{model}:{action}| Express Mode 使用的路径格式 ||
/{api-version}/projects/{project}/locations/{location}/publishers/{publisher}/models/{model}:{action}| Service Account 模式使用的路径格式 |服务模型:单模型服务。
服务列表:
服务名称:选择上一步中创建的 DNS 服务(如
vertex-dns)。模型名称:选择透传。
单击 确定 完成创建。
3. 配置 GenAI SDK
在您的 Python 代码中,将 GenAI SDK 的 base_url 指向 AI 网关地址:
from google import genai
# 配置 API Key(Express Mode)或使用默认凭证(Service Account)
API_KEY = "your-api-key"
# 网关地址 = 域名 + Base Path(如果配置了的话)
# 示例:如果域名为 your-gateway-domain.com,Base Path 为 /vertex
base_url = "https://your-gateway-domain.com/vertex"
# 创建客户端,将请求代理到 AI 网关
client = genai.Client(
vertexai=True, # 目前仅支持 vertexai=True
api_key=API_KEY,
http_options={
'base_url': base_url,
},
)
# 调用模型
response = client.models.generate_content(
model="gemini-2.0-flash",
contents="你好,请介绍一下你自己",
)
print(response.text)配置说明:
参数 | 说明 |
| 必须设置为 |
| Express Mode 的 API Key,或留空使用默认的 Service Account 凭证 |
| AI 网关的访问地址,格式为 |
使用 Service Account 模式:
如果使用 Service Account 进行认证,可以通过环境变量配置凭证:
# 设置 Service Account 密钥文件路径
export GOOGLE_APPLICATION_CREDENTIALS="/path/to/service-account-key.json"from google import genai
# Service Account 模式下无需设置 api_key
base_url = "https://your-gateway-domain.com/vertex"
client = genai.Client(
vertexai=True,
http_options={
'base_url': base_url,
},
)
response = client.models.generate_content(
model="gemini-2.0-flash",
contents="你好,请介绍一下你自己",
)
print(response.text)4. 验证接入效果
配置完成后,您可以在 AI 网关控制台查看请求的观测数据:
在左侧导航栏,单击 观测分析 > 日志中心。
查看通过 GenAI SDK 发起的请求记录,包括:
请求路径
响应状态码
响应时间
Token 用量(如果响应中包含)
说明 由于鉴权在客户端完成,网关无法进行鉴权配置代理。如需完整的AI网关使用体验,建议使用场景一、场景二或场景三的接入方式。
场景五:多模态理解场景接入
本场景介绍如何使用 Gemini 模型通过 Chat Completions 接口理解和分析图片、视频等多模态内容。多模态理解基于文本对话接口,因此可以复用场景一或场景二中创建的 AI 服务和 Model API。
配置要点
AI 服务:选择 Vertex AI 作为大模型供应商,GCP Service Account 或 Express Mode 均可
Model API:使用场景选择 文本生成,协议选择 OpenAI 兼容,路由需要勾选
/v1/chat/completions
图片理解
方式一:使用图片 URL
from openai import OpenAI
client = OpenAI(
base_url="http(s)://{your-domain}/{model-api-base-path}/v1"
)
completion = client.chat.completions.create(
model="gemini-3-flash-preview",
messages=[
{
"role": "user",
"content": [
{"type": "text", "text": "这道题怎么解答?"},
{
"type": "image_url",
"image_url": {
"url": "https://img.alicdn.com/imgextra/i1/O1CN01gDEY8M1W114Hi3XcN_!!6000000002727-0-tps-1024-406.jpg"
},
},
],
}
],
)
print(completion.choices[0].message.content)方式二:使用 Base64 编码图片
import base64
from openai import OpenAI
client = OpenAI(
base_url="http(s)://{your-domain}/{model-api-base-path}/v1"
)
# 将本地图片编码为 Base64
def encode_image(image_path):
with open(image_path, "rb") as image_file:
return base64.b64encode(image_file.read()).decode("utf-8")
# 指定图片路径
image_path = "<your-image-path>"
base64_image = encode_image(image_path)
completion = client.chat.completions.create(
model="gemini-3-flash-preview",
messages=[
{
"role": "user",
"content": [
{"type": "text", "text": "这张图片里有什么?"},
{
"type": "image_url",
"image_url": {
"url": f"data:image/jpeg;base64,{base64_image}",
},
},
],
}
],
)
print(completion.choices[0].message.content)支持的图片格式:image/png, image/jpeg, image/webp, image/heic, image/heif
不同模型的支持能力详见Google官方文档。
视频理解
说明:由于 OpenAI 的接口规范仅定义了 image_url 类型,但这不妨碍我们传入视频内容。AI 网关会自动完成兼容性转换,将视频内容正确传递给 Vertex AI。
方式一:使用视频 URL
from openai import OpenAI
client = OpenAI(
base_url="http(s)://{your-domain}/{model-api-base-path}/v1"
)
completion = client.chat.completions.create(
model="gemini-3-flash-preview",
messages=[
{
"role": "user",
"content": [
{"type": "text", "text": "简要描述视频内容"},
{
"type": "image_url",
"image_url": {
"url": "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20241115/cqqkru/1.mp4"
},
},
],
}
],
)
print(completion.choices[0].message.content)方式二:使用 Base64 编码视频
import base64
from openai import OpenAI
client = OpenAI(
base_url="http(s)://{your-domain}/{model-api-base-path}/v1"
)
# 将本地视频编码为 Base64
def encode_video(video_path):
with open(video_path, "rb") as video_file:
return base64.b64encode(video_file.read()).decode("utf-8")
# 指定视频路径
video_path = "example.mp4"
base64_video = encode_video(video_path)
completion = client.chat.completions.create(
model="gemini-3-flash-preview",
messages=[
{
"role": "user",
"content": [
{"type": "text", "text": "简要描述视频内容"},
{
"type": "image_url",
"image_url": {
"url": f"data:video/mp4;base64,{base64_video}",
},
},
],
}
],
)
print(completion.choices[0].message.content)支持的视频格式:video/x-flv, video/quicktime, video/mpeg, video/mpegs, video/mpg, video/mp4, video/webm, video/wmv, video/3gpp
不同模型的支持能力详见Google官方文档。
代码说明
参数 | 说明 |
| 支持多模态理解的 Gemini 模型,如 |
| 消息内容数组,包含文本和媒体(图片/视频)两部分 |
| 文本提示,描述您希望模型对媒体内容进行的分析 |
| 媒体内容,支持图片或视频的 URL 及 Base64 编码格式 |
场景六:图片生成场景接入
本场景介绍如何使用 Vertex AI 的 Gemini Nano Banana Pro(模型 ID:gemini-3-pro-image-preview)等模型,通过 OpenAI 兼容协议实现图片生成、图片编辑(Edit)和图片变体(Variation)。
配置要点
与场景一或场景二类似,但有以下关键差异:
配置项 | 图片生成场景配置 |
AI 服务 - 大模型供应商 | 选择 Vertex AI |
AI 服务 - 鉴权方式 | GCP Service Account 或 Express Mode 均可 |
AI 服务 - OpenAI 协议兼容方式(仅 GCP Service Account 模式) | 必须选择「AI 网关转换」 |
Model API - 使用场景 | 选择 图片生成 |
Model API - 协议 | 选择 OpenAI 兼容 |
Model API - 路由配置 | 按需勾选 |
重要提示:在 GCP Service Account 模式下进行图片生成/编辑/变体时,OpenAI 协议兼容方式必须选择「AI 网关转换」。这是因为 Vertex AI 原生兼容端点目前仅支持文本对话接口(Chat Completions),而 AI 网关的协议转换支持图片相关接口的转换。
接口支持矩阵
接口 | OpenAI SDK 推荐调用方式 |
|
|
| 不涉及(该接口通常无需传 |
|
| OpenAI SDK 对 |
|
| OpenAI SDK 对 |
图片生成(/v1/images/generations)
配置完成后,您可以使用 OpenAI Python SDK 调用图片生成接口:
from openai import OpenAI
from PIL import Image
from io import BytesIO
import base64
# 创建客户端,指向 AI 网关地址
client = OpenAI(
base_url="http(s)://{your-domain}/{model-api-base-path}/v1"
)
# 调用图片生成接口
response = client.images.generate(
model="gemini-3-pro-image-preview", # Gemini Nano Banana Pro 模型
prompt="一只可爱的橘猫在阳光下打盹",
size="1024x1024",
n=1
)
# 获取生成的图片(base64 编码)
image_data = response.data[0].b64_json
if image_data:
# 解码并保存图片到本地
image = Image.open(BytesIO(base64.b64decode(image_data)))
image.save("output_folder/example-image-cat.png")
print("图片已保存到 output_folder/example-image-cat.png")代码说明:
参数 | 说明 |
| AI 网关的访问地址,格式为 |
| 模型 ID,Gemini Nano Banana Pro 的模型 ID 为 |
| 图片生成的提示词,描述您想要生成的图片内容 |
| 生成图片的尺寸,如 |
| 生成图片的数量 |
尺寸参数映射:
由于 OpenAI 接口使用分辨率(如 1024x1024)而 Vertex AI 使用宽高比(aspectRatio)+ 分辨率等级(imageSize)的方式,AI 网关会自动进行参数转换。
Vertex AI 支持的宽高比:1:1、3:2、2:3、3:4、4:3、4:5、5:4、9:16、16:9、21:9
Vertex AI 支持的分辨率等级:1k、2k、4k
OpenAI size 参数 | Vertex AI aspectRatio | Vertex AI imageSize |
| 1:1 | 1k |
| 1:1 | 1k |
| 1:1 | 1k |
| 16:9 | 2k |
| 9:16 | 2k |
| 1:1 | 2k |
| 1:1 | 4k |
| 3:2 | 2k |
| 2:3 | 2k |
| 4:3 | 1k |
| 3:4 | 1k |
| 5:4 | 1k |
| 4:5 | 1k |
| 21:9 | 2k |
CURL 调用示例:
curl -X POST "https://your-gateway-domain/gemini-image/v1/images/generations" \
-H "Content-Type: application/json" \
-d '{
"model": "gemini-3-pro-image-preview",
"prompt": "一只可爱的橘猫在阳光下打盹",
"size": "1024x1024",
"n": 1
}'图片编辑(/v1/images/edits)
配置完成后,您可以使用 OpenAI Python SDK 通过 multipart 方式上传原图并执行编辑:
from openai import OpenAI
from PIL import Image
from io import BytesIO
import base64
client = OpenAI(
base_url="http(s)://{your-domain}/{model-api-base-path}/v1",
api_key="YOUR_API_KEY"
)
# 使用文件上传方式调用 Edit 接口(OpenAI SDK 推荐方式)
with open("assets/image-cat.png", "rb") as image_file:
response = client.images.edit(
model="gemini-3-pro-image-preview",
prompt="将猫的品种修改为布偶猫,保持原图姿势",
image=image_file,
size="1024x1024",
n=1
)
image_data = response.data[0].b64_json
if image_data:
image = Image.open(BytesIO(base64.b64decode(image_data)))
image.save("output_folder/edited-image-cat.png")
print("图片编辑完成,已保存到 output_folder/edited-image-cat.png")使用 HTTP 请求传递 image_url(SDK 不支持该写法)
/v1/images/edits 在 HTTP JSON 请求中支持传入 data URL。以下示例展示如何将本地图片转为 Base64 后通过 curl 直接调用:
# 1) 将本地图片转为 Base64(去掉换行)
BASE64_IMAGE=$(base64 < assets/image-cat.png | tr -d '\n')
# 2) 通过 image_url(data URL) 调用 edits 接口
curl -X POST "https://your-gateway-domain/{model-api-base-path}/v1/images/edits" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d "{
\"model\": \"gemini-3-pro-image-preview\",
\"prompt\": \"将猫的品种修改为布偶猫,保持原图姿势\",
\"image_url\": {
\"url\": \"data:image/png;base64,${BASE64_IMAGE}\"
},
\"size\": \"1024x1024\",
\"n\": 1
}"图片变体(/v1/images/variations)
配置完成后,您可以使用 OpenAI Python SDK 通过 multipart 方式生成图片变体:
from openai import OpenAI
from PIL import Image
from io import BytesIO
import base64
client = OpenAI(
base_url="http(s)://{your-domain}/{model-api-base-path}/v1",
api_key="YOUR_API_KEY"
)
with open("assets/image-cat.png", "rb") as image_file:
response = client.images.create_variation(
model="gemini-3-pro-image-preview",
image=image_file,
size="1792x1024",
n=1
)
image_data = response.data[0].b64_json
if image_data:
image = Image.open(BytesIO(base64.b64decode(image_data)))
image.save("output_folder/variation-image-cat.png")
print("图片变体生成完成,已保存到 output_folder/variation-image-cat.png")如果您希望在 Variation 场景中使用 image_url(URL 或 data URL)而不是文件上传,也可以直接使用 HTTP JSON 请求:
# 1) 将本地图片转为 Base64(去掉换行)
BASE64_IMAGE=$(base64 < assets/image-cat.png | tr -d '\n')
# 2) 通过 image_url(data URL) 调用 variations 接口
curl -X POST "https://your-gateway-domain/{model-api-base-path}/v1/images/variations" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d "{
\"model\": \"gemini-3-pro-image-preview\",
\"image_url\": {
\"url\": \"data:image/png;base64,${BASE64_IMAGE}\"
},
\"size\": \"1792x1024\",
\"n\": 1
}"支持的图片生成模型
模型名称 | 模型 ID | 描述 |
Gemini Nano Banana Pro |
| Google 最新的图片生成模型,支持高质量图片生成 |
Gemini Nano Banana |
| Google 上一代图片生成模型,支持高质量图片生成 |
说明 具体支持的图片生成模型列表请参考 Google官方文档。
高级配置
多供应商高可用配置
为了实现更高的可用性,您可以配置 Vertex AI 与其他供应商形成 Fallback 关系:
创建多个 AI 服务(如 Vertex AI + 阿里云百炼)。
创建 Model API 时,选择 多模型服务(按模型名称)。
配置路由规则:
服务名称:vertex-ai,模型名称匹配规则:
gemini*服务名称:bailian,模型名称匹配规则:
qwen*
开启 Fallback,选择备用服务。
安全配置建议
凭证管理:建议通过引用凭据方式将 Service Account Key 或 API Key 存储在阿里云 KMS 中,避免凭证泄露风险。
访问控制:配置 IP 白名单或其他访问控制策略,限制 API 访问来源。
限流保护:设置合理的限流规则,避免意外的高额费用。
常见问题
401/403 鉴权失败
检查 Service Account JSON 密钥的完整性,确保包含
private_key、client_email、token_uri等必要字段。确认 Service Account 具有 Vertex AI User 或更高权限。
对于 Express Mode,确认 API Key 有效且未过期。
404 模型不存在
确认使用的模型名称正确,如
gemini-3-flash-preview、gemini-3-pro-preview等。检查所选区域是否支持该模型。
JSON 解析失败
确保粘贴的是完整的 Service Account JSON 内容,不要遗漏开头的
{或结尾的}。检查 JSON 格式是否正确,可使用在线 JSON 验证工具进行验证。
请求超时
检查 VPC 是否正确配置公网 NAT 网关。
确认目标区域的网络连通性。
支持的模型
说明 具体支持的模型列表请参考 Google Vertex AI 官方文档。
总结
通过阿里云 AI 网关,您可以轻松接入 Google Vertex AI,享受统一的 API 管理、灵活的鉴权方式和企业级的高可用保障:
GCP Service Account 模式:适用于需要完整 Vertex AI 功能的企业级应用,支持 OpenAI 协议转换
Vertex AI Express Mode:通过 API Key 快速接入,配置简单,适合快速验证
Vertex AI REST API 模式:代理 Vertex AI 原生 REST API,适用于所有模型,常见用于 Imagen、Veo、Claude 等非 Gemini 系列模型
多模态理解场景:使用 Gemini 模型通过 Chat Completions 接口理解和分析图片、视频等多模态内容
图片生成/编辑/变体场景:使用 Gemini Nano Banana Pro 等模型进行生成、编辑和变体,通过 AI 网关协议转换实现 OpenAI 兼容
无论您选择哪种接入方式,AI 网关都能提供可靠的代理服务和丰富的观测能力。