您可以向 Gemini 请求添加图片,以便执行涉及理解所含图片内容的任务。本页面介绍了如何使用 Google Cloud 控制台和 Vertex AI API,在 Vertex AI 中向发送给 Gemini 的请求添加图片。
支持的模型
下表列出了支持图片理解的模型:
模型 | 图片模态详细信息 |
---|---|
Gemini 1.5 Flash 前往 Gemini 1.5 Flash 模型卡片 |
每个提示的图片数量上限:3,000 |
Gemini 1.5 Pro 前往 Gemini 1.5 Pro 模型卡片 |
每个提示的图片数量上限:3,000 |
Gemini 1.0 Pro Vision 前往 Gemini 1.0 Pro Vision 模型卡片 |
每个提示的图片数量上限:16 |
如需查看 Gemini 模型支持的语言列表,请参阅 Google 模型的模型信息。如需详细了解如何设计多模态提示,请参阅设计多模态提示。如果您正在寻找一种直接在移动应用和 Web 应用中使用 Gemini 的方法,请参阅适用于 Android、Swift、Web 和 Flutter 应用的 Vertex AI in Firebase SDK。
向请求添加图片
您可以在向 Gemini 发送的请求中添加单张图片或多张图片。
单张图片
以下各个标签页中的示例代码展示了标识图片中内容的不同方式。此示例适用于所有多模态 Gemini 模型。
Python
如需了解如何安装或更新 Vertex AI SDK for Python,请参阅安装 Vertex AI SDK for Python。如需了解详情,请参阅 Vertex AI SDK for Python API 参考文档。
流式回答和非流式回答
您可以选择模型是生成流式回答还是非流式回答。 对于流式回答,您将在生成每个响应的输出词元后立即收到响应。对于非流式回答,您将在生成所有输出词元后收到所有响应。
对于流式回答,请使用 generate_content
中的 stream
参数。
response = model.generate_content(contents=[...], stream = True)
对于非流式回答,请移除该参数或将参数设置为 False
。
示例代码
Java
在尝试此示例之前,请按照《Vertex AI 快速入门》中的 Java 设置说明执行操作。如需了解详情,请参阅适用于 Gemini 的 Vertex AI Java SDK 参考文档。
如需向 Vertex AI 进行身份验证,请设置应用默认凭据。如需了解详情,请参阅为本地开发环境设置身份验证。
流式回答和非流式回答
您可以选择模型是生成流式回答还是非流式回答。 对于流式回答,您将在生成每个响应的输出词元后立即收到响应。对于非流式回答,您会在生成所有输出词元之后收到所有回答。
对于流式回答,请使用 generateContentStream
方法。
public ResponseStream<GenerateContentResponse> generateContentStream(Content content)
对于非流式回答,请使用 generateContent
方法。
public GenerateContentResponse generateContent(Content content)
示例代码
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);
示例代码
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?"))
示例代码
C#
在尝试此示例之前,请按照《Vertex AI 快速入门》中的 C# 设置说明执行操作。如需了解详情,请参阅 Vertex AI C# 参考文档。
如需向 Vertex AI 进行身份验证,请设置应用默认凭据。如需了解详情,请参阅为本地开发环境设置身份验证。
流式回答和非流式回答
您可以选择模型是生成流式回答还是非流式回答。 对于流式回答,您将在生成每个响应的输出词元后立即收到响应。对于非流式回答,您会在生成所有输出词元之后收到所有回答。
对于流式回答,请使用 StreamGenerateContent
方法。
public virtual PredictionServiceClient.StreamGenerateContentStream StreamGenerateContent(GenerateContentRequest request)
对于非流式回答,请使用 GenerateContentAsync
方法。
public virtual Task<GenerateContentResponse> GenerateContentAsync(GenerateContentRequest request)
如需详细了解服务器如何流式传输回答,请参阅流式传输 RPC。
示例代码
REST
设置您的环境后,您可以使用 REST 测试文本提示。以下示例会向发布方模型端点发送请求。
您可以添加存储在 Cloud Storage 中的图片,也可以使用 base64 编码的图片数据。Cloud Storage 中的图片
在使用任何请求数据之前,请先进行以下替换:
LOCATION
:处理请求的区域。输入支持的区域。如需查看支持的区域的完整列表,请参阅可用位置。点击即可展开可用区域的部分列表
us-central1
us-west4
northamerica-northeast1
us-east4
us-west1
asia-northeast3
asia-southeast1
asia-northeast1
PROJECT_ID
:您的项目 ID。FILE_URI
:要包含在提示中的文件的 URI 或网址。可接受的值包括:- Cloud Storage 存储桶 URI:对象必须可公开读取,或者位于发送请求的同一 Google Cloud 项目中。
- HTTP 网址:文件网址必须可公开读取。您可以为每个请求指定一个视频文件和最多 10 个图片文件。音频文件和文档的大小不得超过 15 MB。
- YouTube 视频网址:YouTube 视频必须由您用于登录 Google Cloud 控制台的账号所拥有,或者是公开的。每个请求仅支持一个 YouTube 视频网址。
指定
fileURI
时,您还必须指定文件的媒体类型 (mimeType
)。如果您在 Cloud Storage 中没有图片文件,则可以使用以下公开可用的文件:
gs://cloud-samples-data/generative-ai/image/scones.jpg
,其 MIME 类型为image/jpeg
。如需查看此图片,请打开示例图片文件。MIME_TYPE
:在data
或fileUri
字段中指定的文件的媒体类型。可接受的值包括:点击即可展开 MIME 类型
application/pdf
audio/mpeg
audio/mp3
audio/wav
image/png
image/jpeg
image/webp
text/plain
video/mov
video/mpeg
video/mp4
video/mpg
video/avi
video/wmv
video/mpegps
video/flv
TEXT
:要包含在提示中的文本说明。 例如What is shown in this image?
如需发送请求,请选择以下方式之一:
curl
将请求正文保存在名为 request.json
的文件中。在终端中运行以下命令,在当前目录中创建或覆盖此文件:
cat > request.json << 'EOF' { "contents": { "role": "USER", "parts": [ { "fileData": { "fileUri": "FILE_URI", "mimeType": "MIME_TYPE" } }, { "text": "TEXT" } ] } } EOF
然后,执行以下命令以发送 REST 请求:
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/gemini-1.5-flash:generateContent"
PowerShell
将请求正文保存在名为 request.json
的文件中。在终端中运行以下命令,在当前目录中创建或覆盖此文件:
@' { "contents": { "role": "USER", "parts": [ { "fileData": { "fileUri": "FILE_URI", "mimeType": "MIME_TYPE" } }, { "text": "TEXT" } ] } } '@ | Out-File -FilePath request.json -Encoding utf8
然后,执行以下命令以发送 REST 请求:
$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/gemini-1.5-flash:generateContent" | Select-Object -Expand Content
您应该收到类似以下内容的 JSON 响应。
Base64 图片数据
在使用任何请求数据之前,请先进行以下替换:
LOCATION
:处理请求的区域。输入支持的区域。如需查看支持的区域的完整列表,请参阅可用位置。点击即可展开可用区域的部分列表
us-central1
us-west4
northamerica-northeast1
us-east4
us-west1
asia-northeast3
asia-southeast1
asia-northeast1
PROJECT_ID
:您的项目 ID。 要在提示中包含内嵌的图片、PDF 或视频的 base64 编码。添加媒体内嵌时,您还必须指定数据的媒体类型 (B64_BASE_IMAGE
mimeType
)。MIME_TYPE
:在data
或fileUri
字段中指定的文件的媒体类型。可接受的值包括:点击即可展开 MIME 类型
application/pdf
audio/mpeg
audio/mp3
audio/wav
image/png
image/jpeg
image/webp
text/plain
video/mov
video/mpeg
video/mp4
video/mpg
video/avi
video/wmv
video/mpegps
video/flv
TEXT
:要包含在提示中的文本说明。 例如,What is shown in this image?
。
如需发送请求,请选择以下方式之一:
curl
将请求正文保存在名为 request.json
的文件中。在终端中运行以下命令,在当前目录中创建或覆盖此文件:
cat > request.json << 'EOF' { "contents": { "role": "USER", "parts": [ { "inlineData": { "data": "B64_BASE_IMAGE", "mimeType": "MIME_TYPE" } }, { "text": "TEXT" } ] } } EOF
然后,执行以下命令以发送 REST 请求:
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/gemini-1.5-flash:generateContent"
PowerShell
将请求正文保存在名为 request.json
的文件中。在终端中运行以下命令,在当前目录中创建或覆盖此文件:
@' { "contents": { "role": "USER", "parts": [ { "inlineData": { "data": "B64_BASE_IMAGE", "mimeType": "MIME_TYPE" } }, { "text": "TEXT" } ] } } '@ | Out-File -FilePath request.json -Encoding utf8
然后,执行以下命令以发送 REST 请求:
$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/gemini-1.5-flash:generateContent" | Select-Object -Expand Content
您应该收到类似以下内容的 JSON 响应。
- 使用
generateContent
方法请求在回答完全生成后返回回答。 为了降低真人观众对于延迟的感知度,请使用streamGenerateContent
方法在生成回答时流式传输回答。 - 多模态模型 ID 位于网址末尾且位于方法之前(例如
gemini-1.5-flash
或gemini-1.0-pro-vision
)。此示例可能还支持其他模型。
控制台
如需使用 Google Cloud 控制台发送多模态提示,请执行以下操作:在 Google Cloud 控制台的 Vertex AI 部分中,进入 Vertex AI Studio 页面。
点击打开自由格式模式。
可选:配置模型和参数:
- 模型:选择一个模型。
- 区域:选择您要使用的区域。
温度:使用滑块或文本框输入温度值。
温度 (temperature) 在生成回复期间用于采样,在应用
topP
和topK
时会生成回复。温度可以控制词元选择的随机性。 较低的温度有利于需要更少开放性或创造性回复的提示,而较高的温度可以带来更具多样性或创造性的结果。温度为0
表示始终选择概率最高的词元。在这种情况下,给定提示的回复大多是确定的,但可能仍然有少量变化。如果模型返回的回答过于笼统、过于简短,或者模型给出后备回答,请尝试提高温度。
输出 token 限制:使用滑块或文本框输入输出上限值。
回复中可生成的词元数量上限。词元约为 4 个字符。100 个词元对应大约 60-80 个单词。
指定较低的值可获得较短的回答,指定较高的值可获得可能较长的回答。
添加停止序列:可选。输入停止序列,即包含空格的一系列字符。如果模型遇到停止序列,则回答生成会停止。停止序列不包含在回答中,您最多可以添加五个停止序列。
可选:如需配置高级参数,请点击高级,然后按如下方式进行配置:
点击即可展开高级配置
Top-K:使用滑块或文本框输入 top-K 值。 (Gemini 1.5 不支持)。
Top-K 可更改模型选择输出词元的方式。如果 top-K 设为1
,表示所选词元是模型词汇表的所有词元中概率最高的词元(也称为贪心解码)。如果 top-K 设为3
,则表示系统将从 3 个概率最高的词元(通过温度确定)中选择下一个词元。在每个词元选择步骤中,系统都会对概率最高的 top-K 词元进行采样。然后,系统会根据 top-P 进一步过滤词元,并使用温度采样选择最终的词元。
指定较低的值可获得随机程度较低的回答,指定较高的值可获得随机程度较高的回答。
- Top-P:使用滑块或文本框输入 top-P 值。
系统会按照概率从最高到最低的顺序选择词元,直到所选词元的概率总和等于 top-P 的值。如需获得数量最小的变量结果,请将 top-P 设置为
0
。 - 回答数量上限:使用滑块或文本框输入要生成的回答数量的值。
- 流式回答:启用此选项可在生成回答时输出回答。
- 安全过滤器阈值:选择您看到可能有害的回答的可能性的阈值。
- 启用接地:多模态提示不支持接地。
点击插入媒体,然后为文件选择一个来源。
上传
选择您要上传的文件,然后点击打开。
通过网址
输入要使用的文件的网址,然后点击插入。
Cloud Storage
选择存储桶,接着从存储桶选择您要导入的文件,然后点击选择。
Google 云端硬盘
- 选择一个账号,并在您首次选择此选项时同意 Vertex AI Studio 访问您的账号。您可以上传多个文件,但总大小不得超过 10 MB。单个文件的大小不能超过 7 MB。
- 点击要添加的文件。
点击选择。
文件缩略图会显示在提示窗格中。 系统还会显示 token 总数。如果提示数据超过 token 限制,则 token 会被截断,并且不会用于处理数据。
在提示窗格中输入文本提示。
可选:如需查看 Token ID 到文本和 Token ID,请点击提示窗格中的 token 数量。
点击提交。
可选:如需将提示保存到我的提示,请点击
保存。可选:如需获取提示的 Python 代码或 curl 命令,请点击
获取代码。
多张图片
以下各个标签页展示了在提示请求中添加多张图片的不同方式。每个示例接受以下两组输入:
- 热门城市地标的图片
- 图片的媒体类型
- 图片中指示城市和地标的文字
该示例还接受第三个图片和媒体类型,但不接受文本。该示例会返回一个文本回复,指明第三张图片中的城市和地标。
这些图片示例适用于所有多模态 Gemini 模型。
Python
如需了解如何安装或更新 Vertex AI SDK for Python,请参阅安装 Vertex AI SDK for Python。如需了解详情,请参阅 Vertex AI SDK for Python API 参考文档。
流式回答和非流式回答
您可以选择模型是生成流式回答还是非流式回答。 对于流式回答,您将在生成每个响应的输出词元后立即收到响应。对于非流式回答,您将在生成所有输出词元后收到所有响应。
对于流式回答,请使用 generate_content
中的 stream
参数。
response = model.generate_content(contents=[...], stream = True)
对于非流式回答,请移除该参数或将参数设置为 False
。
示例代码
Java
在尝试此示例之前,请按照《Vertex AI 快速入门》中的 Java 设置说明执行操作。如需了解详情,请参阅适用于 Gemini 的 Vertex AI Java SDK 参考文档。
如需向 Vertex AI 进行身份验证,请设置应用默认凭据。如需了解详情,请参阅为本地开发环境设置身份验证。
流式回答和非流式回答
您可以选择模型是生成流式回答还是非流式回答。 对于流式回答,您将在生成每个响应的输出词元后立即收到响应。对于非流式回答,您会在生成所有输出词元之后收到所有回答。
对于流式回答,请使用 generateContentStream
方法。
public ResponseStream<GenerateContentResponse> generateContentStream(Content content)
对于非流式回答,请使用 generateContent
方法。
public GenerateContentResponse generateContent(Content content)
示例代码
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);
示例代码
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?"))
示例代码
C#
在尝试此示例之前,请按照《Vertex AI 快速入门》中的 C# 设置说明执行操作。如需了解详情,请参阅 Vertex AI C# 参考文档。
如需向 Vertex AI 进行身份验证,请设置应用默认凭据。如需了解详情,请参阅为本地开发环境设置身份验证。
流式回答和非流式回答
您可以选择模型是生成流式回答还是非流式回答。 对于流式回答,您将在生成每个响应的输出词元后立即收到响应。对于非流式回答,您会在生成所有输出词元之后收到所有回答。
对于流式回答,请使用 StreamGenerateContent
方法。
public virtual PredictionServiceClient.StreamGenerateContentStream StreamGenerateContent(GenerateContentRequest request)
对于非流式回答,请使用 GenerateContentAsync
方法。
public virtual Task<GenerateContentResponse> GenerateContentAsync(GenerateContentRequest request)
如需详细了解服务器如何流式传输回答,请参阅流式传输 RPC。
示例代码
REST
设置您的环境后,您可以使用 REST 测试文本提示。以下示例会向发布方模型端点发送请求。
在使用任何请求数据之前,请先进行以下替换:
LOCATION
:处理请求的区域。输入支持的区域。如需查看支持的区域的完整列表,请参阅可用位置。点击即可展开可用区域的部分列表
us-central1
us-west4
northamerica-northeast1
us-east4
us-west1
asia-northeast3
asia-southeast1
asia-northeast1
PROJECT_ID
:您的项目 ID。FILE_URI1
:要包含在提示中的文件的 URI 或网址。可接受的值包括:- Cloud Storage 存储桶 URI:对象必须可公开读取,或者位于发送请求的同一 Google Cloud 项目中。
- HTTP 网址:文件网址必须可公开读取。您可以为每个请求指定一个视频文件和最多 10 个图片文件。音频文件和文档的大小不得超过 15 MB。
- YouTube 视频网址:YouTube 视频必须由您用于登录 Google Cloud 控制台的账号所拥有,或者是公开的。每个请求仅支持一个 YouTube 视频网址。
指定
fileURI
时,您还必须指定文件的媒体类型 (mimeType
)。如果您在 Cloud Storage 中没有图片文件,则可以使用以下公开可用的文件:
gs://cloud-samples-data/vertex-ai/llm/prompts/landmark1.png
,其 MIME 类型为image/png
。如需查看此图片,请打开示例图片文件。MIME_TYPE
:在data
或fileUri
字段中指定的文件的媒体类型。可接受的值包括:点击即可展开 MIME 类型
application/pdf
audio/mpeg
audio/mp3
audio/wav
image/png
image/jpeg
image/webp
text/plain
video/mov
video/mpeg
video/mp4
video/mpg
video/avi
video/wmv
video/mpegps
video/flv
TEXT1
:要包含在提示中的文本说明。 例如city: Rome, Landmark: the Colosseum
FILE_URI2
:要包含在提示中的文件的 URI 或网址。可接受的值包括:- Cloud Storage 存储桶 URI:对象必须可公开读取,或者位于发送请求的同一 Google Cloud 项目中。
- HTTP 网址:文件网址必须可公开读取。您可以为每个请求指定一个视频文件和最多 10 个图片文件。音频文件和文档的大小不得超过 15 MB。
- YouTube 视频网址:YouTube 视频必须由您用于登录 Google Cloud 控制台的账号所拥有,或者是公开的。每个请求仅支持一个 YouTube 视频网址。
指定
fileURI
时,您还必须指定文件的媒体类型 (mimeType
)。如果您在 Cloud Storage 中没有图片文件,则可以使用以下公开可用的文件:
gs://cloud-samples-data/vertex-ai/llm/prompts/landmark2.png
,其 MIME 类型为image/png
。如需查看此图片,请打开示例图片文件。TEXT2
:要包含在提示中的文本说明。 例如city: Beijing, Landmark: Forbidden City
FILE_URI3
:要包含在提示中的文件的 URI 或网址。可接受的值包括:- Cloud Storage 存储桶 URI:对象必须可公开读取,或者位于发送请求的同一 Google Cloud 项目中。
- HTTP 网址:文件网址必须可公开读取。您可以为每个请求指定一个视频文件和最多 10 个图片文件。音频文件和文档的大小不得超过 15 MB。
- YouTube 视频网址:YouTube 视频必须由您用于登录 Google Cloud 控制台的账号所拥有,或者是公开的。每个请求仅支持一个 YouTube 视频网址。
指定
fileURI
时,您还必须指定文件的媒体类型 (mimeType
)。如果您在 Cloud Storage 中没有图片文件,则可以使用以下公开可用的文件:
gs://cloud-samples-data/vertex-ai/llm/prompts/landmark3.png
,其 MIME 类型为image/png
。如需查看此图片,请打开示例图片文件。
如需发送请求,请选择以下方式之一:
curl
将请求正文保存在名为 request.json
的文件中。在终端中运行以下命令,在当前目录中创建或覆盖此文件:
cat > request.json << 'EOF' { "contents": { "role": "USER", "parts": [ { "fileData": { "fileUri": "FILE_URI1", "mimeType": "MIME_TYPE" } }, { "text": "TEXT1" }, { "fileData": { "fileUri": "FILE_URI2", "mimeType": "MIME_TYPE" } }, { "text": "TEXT2" }, { "fileData": { "fileUri": "FILE_URI3", "mimeType": "MIME_TYPE" } } ] } } EOF
然后,执行以下命令以发送 REST 请求:
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/gemini-1.5-flash:generateContent"
PowerShell
将请求正文保存在名为 request.json
的文件中。在终端中运行以下命令,在当前目录中创建或覆盖此文件:
@' { "contents": { "role": "USER", "parts": [ { "fileData": { "fileUri": "FILE_URI1", "mimeType": "MIME_TYPE" } }, { "text": "TEXT1" }, { "fileData": { "fileUri": "FILE_URI2", "mimeType": "MIME_TYPE" } }, { "text": "TEXT2" }, { "fileData": { "fileUri": "FILE_URI3", "mimeType": "MIME_TYPE" } } ] } } '@ | Out-File -FilePath request.json -Encoding utf8
然后,执行以下命令以发送 REST 请求:
$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/gemini-1.5-flash:generateContent" | Select-Object -Expand Content
您应该收到类似以下内容的 JSON 响应。
请注意此示例网址中的以下内容:- 使用
generateContent
方法请求在回答完全生成后返回回答。 为了降低真人观众对于延迟的感知度,请使用streamGenerateContent
方法在生成回答时流式传输回答。 - 多模态模型 ID 位于网址末尾且位于方法之前(例如
gemini-1.5-flash
或gemini-1.0-pro-vision
)。此示例可能还支持其他模型。
控制台
如需使用 Google Cloud 控制台发送多模态提示,请执行以下操作:在 Google Cloud 控制台的 Vertex AI 部分中,进入 Vertex AI Studio 页面。
点击打开自由格式模式。
可选:配置模型和参数:
- 模型:选择一个模型。
- 区域:选择您要使用的区域。
温度:使用滑块或文本框输入温度值。
温度 (temperature) 在生成回复期间用于采样,在应用
topP
和topK
时会生成回复。温度可以控制词元选择的随机性。 较低的温度有利于需要更少开放性或创造性回复的提示,而较高的温度可以带来更具多样性或创造性的结果。温度为0
表示始终选择概率最高的词元。在这种情况下,给定提示的回复大多是确定的,但可能仍然有少量变化。如果模型返回的回答过于笼统、过于简短,或者模型给出后备回答,请尝试提高温度。
输出 token 限制:使用滑块或文本框输入输出上限值。
回复中可生成的词元数量上限。词元约为 4 个字符。100 个词元对应大约 60-80 个单词。
指定较低的值可获得较短的回答,指定较高的值可获得可能较长的回答。
添加停止序列:可选。输入停止序列,即包含空格的一系列字符。如果模型遇到停止序列,则回答生成会停止。停止序列不包含在回答中,您最多可以添加五个停止序列。
可选:如需配置高级参数,请点击高级,然后按如下方式进行配置:
点击即可展开高级配置
Top-K:使用滑块或文本框输入 top-K 值。 (Gemini 1.5 不支持)。
Top-K 可更改模型选择输出词元的方式。如果 top-K 设为1
,表示所选词元是模型词汇表的所有词元中概率最高的词元(也称为贪心解码)。如果 top-K 设为3
,则表示系统将从 3 个概率最高的词元(通过温度确定)中选择下一个词元。在每个词元选择步骤中,系统都会对概率最高的 top-K 词元进行采样。然后,系统会根据 top-P 进一步过滤词元,并使用温度采样选择最终的词元。
指定较低的值可获得随机程度较低的回答,指定较高的值可获得随机程度较高的回答。
- Top-P:使用滑块或文本框输入 top-P 值。
系统会按照概率从最高到最低的顺序选择词元,直到所选词元的概率总和等于 top-P 的值。如需获得数量最小的变量结果,请将 top-P 设置为
0
。 - 回答数量上限:使用滑块或文本框输入要生成的回答数量的值。
- 流式回答:启用此选项可在生成回答时输出回答。
- 安全过滤器阈值:选择您看到可能有害的回答的可能性的阈值。
- 启用接地:多模态提示不支持接地。
点击插入媒体,然后为文件选择一个来源。
上传
选择您要上传的文件,然后点击打开。
通过网址
输入要使用的文件的网址,然后点击插入。
Cloud Storage
选择存储桶,接着从存储桶选择您要导入的文件,然后点击选择。
Google 云端硬盘
- 选择一个账号,并在您首次选择此选项时同意 Vertex AI Studio 访问您的账号。您可以上传多个文件,但总大小不得超过 10 MB。单个文件的大小不能超过 7 MB。
- 点击要添加的文件。
点击选择。
文件缩略图会显示在提示窗格中。 系统还会显示 token 总数。如果提示数据超过 token 限制,则 token 会被截断,并且不会用于处理数据。
在提示窗格中输入文本提示。
可选:如需查看 Token ID 到文本和 Token ID,请点击提示窗格中的 token 数量。
点击提交。
可选:如需将提示保存到我的提示,请点击
保存。可选:如需获取提示的 Python 代码或 curl 命令,请点击
获取代码。
设置模型参数
可以对多模态模型设置以下模型参数:
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 进一步过滤词元,并使用温度采样选择最终的词元。
指定较低的值可获得随机程度较低的回答,指定较高的值可获得随机程度较高的回答。
温度
温度 (temperature) 在生成回复期间用于采样,在应用 topP
和 topK
时会生成回复。温度可以控制词元选择的随机性。
较低的温度有利于需要更少开放性或创造性回复的提示,而较高的温度可以带来更具多样性或创造性的结果。温度为 0
表示始终选择概率最高的词元。在这种情况下,给定提示的回复大多是确定的,但可能仍然有少量变化。
如果模型返回的回答过于笼统、过于简短,或者模型给出后备回答,请尝试提高温度。
有效的参数值
参数 | Gemini 1.0 Pro Vision | Gemini 1.5 Pro | Gemini 1.5 Flash |
---|---|---|---|
Top-K | 1 - 40(默认为 32) | 不支持 | 不支持 |
Top-P | 0 - 1.0(默认 1.0) | 0 - 1.0(默认 0.95) | 0 - 1.0(默认 0.95) |
温度 | 0 - 1.0(默认 0.4) | 0 - 2.0(默认 1.0) | 0 - 2.0(默认 1.0) |
图片要求
多模态 Gemini 模型支持以下图片 MIME 类型:
图片 Mime 类型 | Gemini 1.5 Flash | Gemini 1.5 Pro | Gemini 1.0 Pro Vision |
---|---|---|---|
PNG - image/png |
|||
JPEG - image/jpeg |
|||
WebP - image/webp |
对图片中的像素数量没有具体限制。不过,较大的图片会被缩小和填充,以适应最大分辨率 (3072 x 3072),同时保留其原始宽高比。
问题请求中允许的图片文件数量上限如下:
- Gemini 1.0 Pro Vision:16 张图片
- Gemini 1.5 Flash 和 Gemini 1.5 Pro:3,000 张图片
以下是图片的 token 计算方式:
- Gemini 1.0 Pro Vision:每张图片占 258 个 token。
- Gemini 1.5 Flash 和 Gemini 1.5 Pro:
- 如果图片的两个维度均小于或等于 384 像素,则使用 258 个 token。
- 如果图片的某个维度大于 384 像素,则图片会被剪裁成图块。每个图块大小默认为最小维度(宽度或高度)除以 1.5。如有必要,系统会调整每个图块,使其不小于 256 像素且不大于 768 像素。随后系统会将每个图块的大小调整为 768x768,并使用 258 个 token。
最佳做法
使用图片时,请遵循以下最佳实践和信息以获得最佳结果。
- 如果您想要检测图片中的文本,则使用包含单张图片的提示可生成比包含多张图片的提示更好的结果。
- 如果提示包含单张图片,请将该图片放在请求中的文本提示前面。
- 如果您的提示包含多个图片,并且您希望稍后在提示中引用这些图片,或者希望模型在模型响应中引用这些图片,则在图片之前为每张图片提供索引会有所帮助。对于索引,请使用
或a
b
c
。以下是在提示中使用已编入索引的图片的示例:image 1
image 2
image 3
image 1
image 2 image 3 Write a blogpost about my day using image 1 and image 2. Then, give me ideas for tomorrow based on image 3. - 使用分辨率较高的图片,效果会更好。
- 在提示中添加一些示例。
- 请先将图片旋转到适当方向,然后再将其添加到提示中。
- 避免使用模糊的图片。
限制
虽然多模态 Gemini 模型在许多多模态应用场景中表现出强大功能,但了解模型的限制非常重要:
- 内容审核:模型拒绝对违反我们安全政策的图片提供回答。
- 空间推理:模型在定位图片中的文本或对象时并不精确。它们可能只返回对象数的近似值。
- 医疗用途:模型不适合解读医学图片(例如 X 光片和 CT 扫描),也不适合提供医学建议。
- 人物识别:模型不应用于识别图片中并非名人的人。
- 准确率:模型在解读低画质、旋转或分辨率极低的图片时可能会产生幻觉或出错。在解读图片文档中的手写文本时,模型也可能会产生幻觉。
后续步骤
- 开始使用 Gemini 多模态模型进行构建 - 新客户可获享 $300 免费 Google Cloud 赠金,探索他们可以使用 Gemini 执行的操作。
- 了解如何发送聊天提示请求。
- 了解 Responsible AI 最佳实践和 Vertex AI 的安全过滤条件。