Vertex AI 上的许多开放模型都以 API 形式提供全代管式无服务器模型,这些模型使用 Vertex AI Chat Completions API。对于这些模型,您无需预配或管理基础设施。
您可以流式传输回答,以降低最终用户对延迟时间的感知度。流式回答使用服务器发送的事件 (SSE) 来逐步流式传输回答。
本页展示了如何向支持 OpenAI Chat Completions API 的开放模型发出流式传输和非流式传输调用。如需了解特定于 Llama 的注意事项,请参阅请求 Llama 预测。
准备工作
如需将开放模型与 Vertex AI 搭配使用,您必须执行以下步骤。必须启用 Vertex AI API (aiplatform.googleapis.com
) 才能使用 Vertex AI。如果您已有启用了 Vertex AI API 的项目,则可以使用该项目,而无需创建新项目。
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator
(
roles/resourcemanager.projectCreator
), which contains theresourcemanager.projects.create
permission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
-
Enable the Vertex AI API.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin
), which contains theserviceusage.services.enable
permission. Learn how to grant roles. - 前往要使用的模型的 Model Garden 模型卡片,然后点击启用以启用该模型,以便在您的项目中使用。
- MODEL:您要使用的模型名称,例如
deepseek-ai/deepseek-v3.1-maas
。 - ROLE:与消息关联的角色。您可以指定
user
或assistant
。第一条消息必须使用user
角色。 模型使用交替的user
和assistant
回合运行。如果最终消息使用assistant
角色,则回答内容会立即从该消息中的内容继续。您可以使用它来限制模型的部分回答。 - CONTENT:
user
或assistant
消息的内容(如文本)。 - MAX_OUTPUT_TOKENS:响应中可生成的词元数量上限。词元约为 4 个字符。100 个词元对应大约 60-80 个单词。
指定较低的值可获得较短的回答,指定较高的值可获得可能较长的回答。
- LOCATION:支持开放模型的区域。
- MODEL:您要使用的模型名称,例如
deepseek-ai/deepseek-v2
。 - ROLE:与消息关联的角色。您可以指定
user
或assistant
。第一条消息必须使用user
角色。 模型使用交替的user
和assistant
回合运行。如果最终消息使用assistant
角色,则回答内容会立即从该消息中的内容继续。您可以使用它来限制模型的部分回答。 - CONTENT:
user
或assistant
消息的内容(如文本)。 - MAX_OUTPUT_TOKENS:响应中可生成的词元数量上限。词元约为 4 个字符。100 个词元对应大约 60-80 个单词。
指定较低的值可获得较短的回答,指定较高的值可获得可能较长的回答。
- STREAM:一个布尔值,用于指定是否流式传输回答。流式传输您的回答,以降低对最终使用延迟的感知度。设置为
true
可流式传输回答,设置为false
可一次性返回所有回答。 - MODEL:您要使用的模型名称,例如
deepseek-ai/deepseek-v3.1-maas
。 - ROLE:与消息关联的角色。您可以指定
user
或assistant
。第一条消息必须使用user
角色。 模型使用交替的user
和assistant
回合运行。如果最终消息使用assistant
角色,则回答内容会立即从该消息中的内容继续。您可以使用它来限制模型的部分回答。 - CONTENT:
user
或assistant
消息的内容(如文本)。 - MAX_OUTPUT_TOKENS:响应中可生成的词元数量上限。词元约为 4 个字符。100 个词元对应大约 60-80 个单词。
指定较低的值可获得较短的回答,指定较高的值可获得可能较长的回答。
- LOCATION:支持开放模型的区域。
- MODEL:您要使用的模型名称,例如
deepseek-ai/deepseek-v2
。 - ROLE:与消息关联的角色。您可以指定
user
或assistant
。第一条消息必须使用user
角色。 模型使用交替的user
和assistant
回合运行。如果最终消息使用assistant
角色,则回答内容会立即从该消息中的内容继续。您可以使用它来限制模型的部分回答。 - CONTENT:
user
或assistant
消息的内容(如文本)。 - MAX_OUTPUT_TOKENS:响应中可生成的词元数量上限。词元约为 4 个字符。100 个词元对应大约 60-80 个单词。
指定较低的值可获得较短的回答,指定较高的值可获得可能较长的回答。
- STREAM:一个布尔值,用于指定是否流式传输回答。流式传输您的回答,以降低对最终使用延迟的感知度。设置为
true
可流式传输回答,设置为false
可一次性返回所有回答。
对开放模型进行流式调用
以下示例会对开放模型进行流式调用:
Python
在尝试此示例之前,请按照《Vertex AI 快速入门:使用客户端库》中的 Python 设置说明执行操作。 如需了解详情,请参阅 Vertex AI Python API 参考文档。
如需向 Vertex AI 进行身份验证,请设置应用默认凭证。 如需了解详情,请参阅为本地开发环境设置身份验证。
在运行此示例之前,请务必设置 OPENAI_BASE_URL
环境变量。如需了解详情,请参阅身份验证和凭据。
from openai import OpenAI client = OpenAI() stream = client.chat.completions.create( model="MODEL", messages=[{"role": "ROLE", "content": "CONTENT"}], max_tokens=MAX_OUTPUT_TOKENS, stream=True, ) for chunk in stream: print(chunk.choices[0].delta.content or "", end="")
REST
设置您的环境后,您可以使用 REST 测试文本提示。以下示例会向发布方模型端点发送请求。
在使用任何请求数据之前,请先进行以下替换:
HTTP 方法和网址:
POST https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/endpoints/openapi/chat/completions
请求 JSON 正文:
{ "model": "MODEL", "messages": [ { "role": "ROLE", "content": "CONTENT" } ], "max_tokens": MAX_OUTPUT_TOKENS, "stream": true }
如需发送请求,请选择以下方式之一:
curl
将请求正文保存在名为 request.json
的文件中,然后执行以下命令:
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/endpoints/openapi/chat/completions"
PowerShell
将请求正文保存在名为 request.json
的文件中,然后执行以下命令:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/endpoints/openapi/chat/completions" | Select-Object -Expand Content
您应该收到类似以下内容的 JSON 响应。
对开放模型进行非流式调用
以下示例会对开放模型进行非流式调用:
Python
在尝试此示例之前,请按照《Vertex AI 快速入门:使用客户端库》中的 Python 设置说明执行操作。 如需了解详情,请参阅 Vertex AI Python API 参考文档。
如需向 Vertex AI 进行身份验证,请设置应用默认凭证。 如需了解详情,请参阅为本地开发环境设置身份验证。
在运行此示例之前,请务必设置 OPENAI_BASE_URL
环境变量。如需了解详情,请参阅身份验证和凭据。
from openai import OpenAI client = OpenAI() completion = client.chat.completions.create( model="MODEL", messages=[{"role": "ROLE", "content": "CONTENT"}], max_tokens=MAX_OUTPUT_TOKENS, stream=False, ) print(completion.choices[0].message)
REST
设置您的环境后,您可以使用 REST 测试文本提示。以下示例会向发布方模型端点发送请求。
在使用任何请求数据之前,请先进行以下替换:
HTTP 方法和网址:
POST https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/endpoints/openapi/chat/completions
请求 JSON 正文:
{ "model": "MODEL", "messages": [ { "role": "ROLE", "content": "CONTENT" } ], "max_tokens": MAX_OUTPUT_TOKENS, "stream": false }
如需发送请求,请选择以下方式之一:
curl
将请求正文保存在名为 request.json
的文件中,然后执行以下命令:
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/endpoints/openapi/chat/completions"
PowerShell
将请求正文保存在名为 request.json
的文件中,然后执行以下命令:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/endpoints/openapi/chat/completions" | Select-Object -Expand Content
您应该收到类似以下内容的 JSON 响应。
区域端点和全球端点
对于区域级端点,请求会从您指定的区域处理。如果您有数据驻留要求,或者模型不支持全球端点,请使用区域端点。
使用全球端点时,Google 可以在您所用模型支持的任何区域处理和提供您的请求。在某些情况下,这可能会导致延迟时间更长。全球端点有助于提高整体可用性并减少错误。
使用全球端点时,区域端点不会有价格差异。不过,全球端点的配额和支持的模型功能可能与区域级端点不同。如需了解详情,请参阅相关的第三方模型页面。
指定全球端点
如需使用全球端点,请将区域设置为 global
。
例如,curl 命令的请求网址采用以下格式:
https://aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/global/endpoints/openapi
对于 Vertex AI SDK,区域端点是默认端点。将区域设置为 GLOBAL
以使用全球端点。
限制全球 API 端点用量
为了帮助强制使用区域端点,请使用 constraints/gcp.restrictEndpointUsage
组织政策限制条件来阻止对全球 API 端点的请求。如需了解详情,请参阅限制端点用量。