本页面介绍了如何使用 Google Cloud 控制台、REST API 和受支持的 SDK 向 Gemini 1.0 Pro (gemini-1.0-pro
) 模型发送聊天提示。Gemini 1.0 Pro 支持仅含文本的输入,包括自然语言任务、多轮文本和代码聊天以及代码生成。可输出文本和代码。
Gemini 1.0 Pro 基础模型是一种大语言模型,擅长理解和生成语言。通过单轮提示和回复,与 Gemini Pro 互动,或者在多轮连续对话中与它聊天,甚至用于理解和生成代码。
如需查看 Gemini 1.0 Pro 支持的语言列表,请参阅模型信息语言支持。
如需在控制台中探索此模型,请选择 Model Garden 中的 gemini-1.0-pro
模型卡片。
如果您正在寻找一种直接在移动应用和 Web 应用中使用 Gemini 的方法,请查看适用于 Android、Swift 和 Web 的 Google AI SDK。
发送聊天提示
如需测试和迭代聊天提示,我们建议使用 Google Cloud 控制台。如需以编程方式将提示发送到模型,您可以使用 REST API、Python 版 Vertex AI SDK 或以下标签页中显示的其他受支持的库和 SDK。
Python
如需了解如何安装或更新 Python 版 Vertex AI SDK,请参阅安装 Python 版 Vertex AI SDK。如需了解详情,请参阅 Python 版 Vertex AI SDK API 参考文档。
流式回答和非流式回答
您可以选择模型是生成流式回答还是非流式回答。流式传输涉及在生成对提示的回答时接收这些回答。也就是说,只要模型生成输出词元,就会发送这些输出词元。只有在生成所有输出词元后,才会发送对提示的非流式回答。
对于流式回答,请使用 generate_content
中的 stream
参数。
response = model.generate_content(contents=[...], stream = True)
对于非流式回答,请移除该参数或将参数设置为 False
。
示例代码
C#
在尝试此示例之前,请按照《Vertex AI 快速入门:使用客户端库》中的 C# 设置说明执行操作。如需了解详情,请参阅 Vertex AI C# API 参考文档。
如需向 Vertex AI 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
Node.js
在尝试此示例之前,请按照《生成式 AI 快速入门:使用 Node.js SDK》中的 Node.js 设置说明执行操作。如需了解详情,请参阅适用于 Gemini 的 Node.js SDK 参考文档。
如需向 Vertex AI 进行身份验证,请设置应用默认凭据。如需了解详情,请参阅为本地开发环境设置身份验证。
流式回答和非流式回答
您可以选择模型是生成流式回答还是非流式回答。流式传输涉及在生成对提示的回答时接收这些回答。也就是说,只要模型生成输出词元,就会发送这些输出词元。只有在生成所有输出词元后,才会发送对提示的非流式回答。
对于流式回答,请使用 generateContentStream
方法。
const streamingResp = await generativeModel.generateContentStream(request);
对于非流式回答,请使用 generateContent
方法。
const streamingResp = await generativeModel.generateContent(request);
示例代码
Java
在尝试此示例之前,请按照《Vertex AI 快速入门》中的 Java 设置说明执行操作。如需了解详情,请参阅适用于 Gemini 的 Vertex AI Java SDK 参考文档。
如需向 Vertex AI 进行身份验证,请设置应用默认凭据。如需了解详情,请参阅为本地开发环境设置身份验证。
流式回答和非流式回答
您可以选择模型是生成流式回答还是非流式回答。流式传输涉及在生成对提示的回答时接收这些回答。也就是说,只要模型生成输出词元,就会发送这些输出词元。只有在生成所有输出词元后,才会发送对提示的非流式回答。
对于流式回答,请使用 generateContentStream
方法。
public ResponseStreamgenerateContentStream(Content content)
对于非流式回答,请使用 generateContent
方法。
public GenerateContentResponse generateContent(Content content)
示例代码
Go
在尝试此示例之前,请按照《Vertex AI 快速入门》中的 Go 设置说明执行操作。如需了解详情,请参阅适用于 Gemini 的 Vertex AI Go SDK 参考文档。
如需向 Vertex AI 进行身份验证,请设置应用默认凭据。如需了解详情,请参阅为本地开发环境设置身份验证。
流式回答和非流式回答
您可以选择模型是生成流式回答还是非流式回答。流式传输涉及在生成对提示的回答时接收这些回答。也就是说,只要模型生成输出词元,就会发送这些输出词元。只有在生成所有输出词元后,才会发送对提示的非流式回答。
对于流式回答,请使用 GenerateContentStream
方法。
iter := model.GenerateContentStream(ctx, genai.Text("Tell me a story about a lumberjack and his giant ox. Keep it very short."))
对于非流式回答,请使用 GenerateContent
方法。
resp, err := model.GenerateContent(ctx, genai.Text("What is the average size of a swallow?"))
示例代码
REST
您可以使用 REST 发送聊天提示,方法是使用 Vertex AI API 向发布方模型端点发送 POST 请求。
在使用任何请求数据之前,请先进行以下替换:
- GENERATE_RESPONSE_METHOD:您希望模型生成的回答类型。选择一种方法来生成您希望返回模型回答的方式:
streamGenerateContent
:在生成回答时进行流式传输,以降低真人受众群体对于延迟的感知度。generateContent
:回答在完全生成后返回。
- LOCATION:处理请求的区域。可用的选项包括:
点击即可展开可用的区域
us-central1
us-west4
northamerica-northeast1
us-east4
us-west1
asia-northeast3
asia-southeast1
asia-northeast1
- PROJECT_ID:您的项目 ID。
- MODEL_ID:您要使用的多模态模型 ID。选项包括:
gemini-1.0-pro-002
gemini-1.0-pro-vision-001
gemini-1.5-pro-preview-0409
- ROLE:与内容关联的对话中的角色。即使在单轮应用场景中,也需要指定角色。
可接受的值包括:
USER
:指定由您发送的内容。MODEL
:指定模型的响应。
- TEXT:要包含在提示中的文本说明。
- SAFETY_CATEGORY:要为其配置阈值的安全类别。可接受的值包括:
点击即可展开安全类别
HARM_CATEGORY_SEXUALLY_EXPLICIT
HARM_CATEGORY_HATE_SPEECH
HARM_CATEGORY_HARASSMENT
HARM_CATEGORY_DANGEROUS_CONTENT
- THRESHOLD:基于概率阻止属于指定安全类别的响应的阈值。可接受的值包括:
点击即可展开屏蔽阈值
BLOCK_NONE
BLOCK_ONLY_HIGH
BLOCK_MEDIUM_AND_ABOVE
(默认)BLOCK_LOW_AND_ABOVE
BLOCK_LOW_AND_ABOVE
屏蔽得最多,而BLOCK_ONLY_HIGH
屏蔽得最少。 - SYSTEM_INSTRUCTION:(可选)适用于
gemini-1.0-pro-002
和gemini-1.5-pro-preview-0409
。 有关引导模型获得更好性能的说明。例如,“回答尽可能简洁”或“以 JSON 格式输出结果”。 - TEMPERATURE:温度 (temperature) 在生成回复期间用于采样,在应用
topP
和topK
时会生成回复。温度可以控制词元选择的随机性。 较低的温度有利于需要更少开放性或创造性回复的提示,而较高的温度可以带来更具多样性或创造性的结果。温度为0
表示始终选择概率最高的词元。在这种情况下,给定提示的回复大多是确定的,但可能仍然有少量变化。如果模型返回的回答过于笼统、过于简短,或者模型给出后备回答,请尝试提高温度。
- TOP_P:Top-P 可更改模型选择输出词元的方式。系统会按照概率从最高(见 top-K)到最低的顺序选择词元,直到所选词元的概率总和等于 top-P 的值。例如,如果词元 A、B 和 C 的概率分别为 0.3、0.2 和 0.1,并且 top-P 值为
0.5
,则模型将选择 A 或 B 作为下一个词元(通过温度确定),并会排除 C,将其作为候选词元。指定较低的值可获得随机程度较低的回答,指定较高的值可获得随机程度较高的回答。
- TOP_K:Top-K 可更改模型选择输出词元的方式。如果 top-K 设为
1
,表示所选词元是模型词汇表的所有词元中概率最高的词元(也称为贪心解码)。如果 top-K 设为3
,则表示系统将从 3 个概率最高的词元(通过温度确定)中选择下一个词元。在每个词元选择步骤中,系统都会对概率最高的 top-K 词元进行采样。然后,系统会根据 top-P 进一步过滤词元,并使用温度采样选择最终的词元。
指定较低的值可获得随机程度较低的回答,指定较高的值可获得随机程度较高的回答。
- MAX_OUTPUT_TOKENS:响应中可生成的词元数量上限。词元约为 4 个字符。100 个词元对应大约 60-80 个单词。
指定较低的值可获得较短的回复,指定较高的值可获得可能较长的回复。
- STOP_SEQUENCES:
指定一个字符串列表,告知模型在响应中遇到其中一个字符串时,停止生成文本。如果某个字符串在响应中多次出现,则响应会在首次出现的位置截断。字符串区分大小写。
例如,未指定stopSequences
时,如果下面的内容是返回的回复:
public static string reverse(string myString)
则返回的回复为以下内容,其中stopSequences
设置为["Str", "reverse"]
:
public static string
HTTP 方法和网址:
POST https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/publishers/google/models/MODEL_ID:GENERATE_RESPONSE_METHOD
请求 JSON 正文:
{ "contents": { "role": "ROLE", "parts": { "text": "TEXT" } }, "system_instruction": { "parts": [ { "text": "SYSTEM_INSTRUCTION" } ] }, "safety_settings": { "category": "SAFETY_CATEGORY", "threshold": "THRESHOLD" }, "generation_config": { "temperature": TEMPERATURE, "topP": TOP_P, "topK": TOP_K, "candidateCount": 1, "maxOutputTokens": MAX_OUTPUT_TOKENS, "stopSequences": STOP_SEQUENCES, } }
如需发送请求,请选择以下方式之一:
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/publishers/google/models/MODEL_ID:GENERATE_RESPONSE_METHOD"
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/publishers/google/models/MODEL_ID:GENERATE_RESPONSE_METHOD" | Select-Object -Expand Content
您应该收到类似以下内容的 JSON 响应。
示例 curl 命令
LOCATION="us-central1"
MODEL_ID="gemini-1.0-pro"
PROJECT_ID="test-project"
GENERATE_RESPONSE_METHOD="generateContent"
curl \
-X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
https://${LOCATION}-aiplatform.googleapis.com/v1/projects/${PROJECT_ID}/locations/${LOCATION}/publishers/google/models/${MODEL_ID}:${GENERATE_RESPONSE_METHOD} -d \
$'{
"contents": [
{
"role": "user",
"parts": { "text": "Hello!" }
},
{
"role": "model",
"parts": { "text": "Argh! What brings ye to my ship?" }
},
{
"role": "user",
"parts": { "text": "Wow! You are a real-life pirate!" }
}
],
"safety_settings": {
"category": "HARM_CATEGORY_SEXUALLY_EXPLICIT",
"threshold": "BLOCK_LOW_AND_ABOVE"
},
"generation_config": {
"temperature": 0.9,
"topP": 1,
"candidateCount": 1,
"maxOutputTokens": 2048
}
}'
控制台
如需使用 Vertex AI Studio 在 Google Cloud 控制台中发送聊天提示,请执行以下操作:
- 在 Google Cloud 控制台的 Vertex AI 部分,进入 Vertex AI Studio 的语言部分。
- 点击文本聊天。
配置模型和参数:
- 区域:选择您要使用的区域。
- 模型:选择 Gemini Pro。
温度:使用滑块或文本框输入温度值。
温度 (temperature) 在生成回复期间用于采样,在应用topP
和topK
时会生成回复。温度可以控制词元选择的随机性。 较低的温度有利于需要更少开放性或创造性回复的提示,而较高的温度可以带来更具多样性或创造性的结果。温度为0
表示始终选择概率最高的词元。在这种情况下,给定提示的回复大多是确定的,但可能仍然有少量变化。如果模型返回的回答过于笼统、过于简短,或者模型给出后备回答,请尝试提高温度。
词元上限:使用滑块或文本框输入输出上限值。
回答中可生成的词元数量上限。词元约为 4 个字符。100 个词元对应大约 60-80 个单词。指定较低的值可获得较短的回复,指定较高的值可获得可能较长的回复。
- 添加停止序列:输入停止序列,即模型遇到时停止回复的一系列字符(包括空格)。该序列不包含在回复中。您最多可以添加五个停止序列。
- 可选:如需配置高级参数,请点击高级,然后按如下方式进行配置:
点击即可展开高级配置
Top-K:使用滑块或文本框输入 top-K 值。
Top-K 可更改模型选择输出词元的方式。如果 top-K 设为1
,表示所选词元是模型词汇表的所有词元中概率最高的词元(也称为贪心解码)。如果 top-K 设为3
,则表示系统将从 3 个概率最高的词元(通过温度确定)中选择下一个词元。在每个词元选择步骤中,系统都会对概率最高的 top-K 词元进行采样。然后,系统会根据 top-P 进一步过滤词元,并使用温度采样选择最终的词元。
指定较低的值可获得随机程度较低的回答,指定较高的值可获得随机程度较高的回答。
- Top-P:使用滑块或文本框输入 top-P 值。
系统会按照概率从最高到最低的顺序选择词元,直到所选词元的概率总和等于 top-P 的值。如需获得数量最小的变量结果,请将 top-P 设置为
0
。
Google Cloud 控制台仅支持流式传输,涉及在生成对提示的回答时接收这些回答。您现在可以在消息框中输入消息,以开始与模型对话。
随后,模型会使用之前的消息作为新回答的语境。
- 可选:如需将提示保存到我的提示,请点击 保存。
- 可选:如需获取提示的 Python 代码或 curl 命令,请点击 获取代码。
- 可选:如需清除之前的所有消息,请点击 清除对话
使用系统说明
系统说明可让用户根据其特定需求和使用情形来控制模型的行为。设置系统说明时,您可以为模型提供额外的上下文来了解任务、提供自定义程度更高的回答,并在用户与模型的完整交互中遵循特定的准则。对于开发者,可以在系统说明中指定产品级行为,与最终用户提供的提示分开。
您可以通过多种方式使用系统说明,包括:
- 定义人设或角色(例如,针对聊天机器人)
- 定义输出格式(Markdown、YAML 等)
- 定义输出风格和语气(例如详细程度、正式程度和目标阅读水平)
- 定义任务的目标或规则(例如,返回代码段而不带进一步说明)
- 为提示提供其他上下文(例如知识临界值)
如果设置了系统说明,则该说明会应用于整个请求。包含在提示中时,它适用于多个用户和模型回合。
系统说明代码示例
以下示例展示了如何使用 Vertex AI Python SDK 指定简单系统说明。
from vertexai.generative_models import GenerativeModel
model = GenerativeModel(
"gemini-1.0-pro-002",
system_instruction=[
"Don't use technical terms in your response",
],
)
print(model.generate_content("Explain gravity"))
以下示例展示了如何在 curl 命令中添加简单的系统说明。
LOCATION="us-central1"
MODEL_ID="gemini-1.0-pro-002"
PROJECT_ID="test-project"
GENERATE_RESPONSE_METHOD="generateContent"
curl \
-X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
"https://${LOCATION}-aiplatform.googleapis.com/v1/projects/${PROJECT_ID}/locations/${LOCATION}/publishers/google/models:generateContent" -d \
{
"contents": [
{
"role": "user",
"parts": [
{
"text": "randomly select 10 words from a history book"
}
]
}
],
"system_instruction":
{
"parts": [
{
"text": "please print the results in json format."
}
]
},
"generation_config": {
"maxOutputTokens": 2048,
"temperature": 0.4,
"topP": 1,
"topK": 32
}
}
系统说明示例
以下是定义模型预期行为的系统提示示例。第一个是前端代码生成的系统提示,第二个是市场情感分析用例的示例,第三个是消费者聊天机器人。
代码生成
- 系统:您是编码专家,专门负责为前端界面呈现代码。当我描述要构建的网站的组件时,请返回执行此操作所需的 HTML 和 CSS。请勿为此代码提供说明。同时请提供一些界面设计建议。
- 用户:在页面中间创建一个框,其中包含滚动式图片选择,每张图片都带有图片说明。页面中心的图片后面应该有阴影,以使其更加醒目。图片还应链接到网站的另一个页面。将网址留空,以便我填写它。
市场情感分析
系统:您是股票市场分析师,根据新闻片段分析市场情绪。根据新闻摘要,您可以提取影响投资者情绪的陈述。
以 JSON 格式回答每个语句:
- 给出 1 - 10 分,建议情感是消极的还是积极的(1 是最消极的,10 是最积极的,5 是中立的)。
- 重复语句。
- 给出一句话解释。
用户:Mobileye 报告称,近年来顶级客户因供应链限制而积累了过多的库存。Mobileye 表示,第一季度的收入预计将比一年前 4.58 亿美元减少约 50%,然后再在 2024 年剩余时间内实现标准化。Mobileye 预计 2024 年全年的收入为 18.3 亿美元至 19.6 亿美元,低于 2023 年的约 20.8 亿美元。
音乐聊天机器人
- 系统:您将以音乐历史学家的身份进行回答,展示对各种音乐流派的全面知识,并提供相关示例。您的语气需要热情友好,能传递音乐的快乐。如果问题与音乐无关,则回答应为“这超出了我的知识范围”。
- 用户:如果一个人出生于 60 年代,那么他/她所播放的最热门的音乐流派是什么?按项目符号列出五首歌曲。