您可以在 Gemini 请求中添加文档(PDF 和 TXT 文件),以执行涉及理解所含文档内容的任务。本页面介绍了如何使用 Google Cloud 控制台和 Vertex AI API,在 Vertex AI 中向发送给 Gemini 的请求添加 PDF。
支持的模型
下表列出了支持文档理解的模型:
| 模型 | 媒体详情 | MIME 类型 |
|---|---|---|
| Gemini 2.5 Flash(预览版) |
|
|
| Gemini 2.5 Flash-Lite(预览版) |
|
|
| Gemini 2.5 Flash 图片 |
|
|
| Gemini 2.5 Flash-Lite |
|
|
| Gemini 2.0 Flash(支持图片生成)(预览版) |
|
|
| Gemini 2.5 Pro |
|
|
| Gemini 2.5 Flash |
|
|
| Gemini 2.0 Flash |
|
|
| Gemini 2.0 Flash-Lite |
|
|
1这是项目中所有请求的文档输入的 TPM 上限。对于其他模态,该 TPM 上限也适用。
配额指标为 generate_content_document_input_per_base_model_id_and_resolution。
如需查看 Gemini 模型支持的语言列表,请参阅 Google 模型的模型信息。如需详细了解如何设计多模态提示,请参阅设计多模态提示。如果您正在寻找一种直接在移动应用和 Web 应用中使用 Gemini 的方法,请参阅适用于 Swift、Android、Web、Flutter 和 Unity 应用的 Firebase AI Logic 客户端 SDK。
在请求中添加文档
以下代码示例展示了如何在提示请求中添加 PDF 文件。此 PDF 文件示例适用于所有 Gemini 多模态模型。
Python
安装
pip install --upgrade google-genai
如需了解详情,请参阅 SDK 参考文档。
设置环境变量以将 Gen AI SDK 与 Vertex AI 搭配使用:
# Replace the `GOOGLE_CLOUD_PROJECT` and `GOOGLE_CLOUD_LOCATION` values # with appropriate values for your project. export GOOGLE_CLOUD_PROJECT=GOOGLE_CLOUD_PROJECT export GOOGLE_CLOUD_LOCATION=global export GOOGLE_GENAI_USE_VERTEXAI=True
Go
了解如何安装或更新 Go。
如需了解详情,请参阅 SDK 参考文档。
设置环境变量以将 Gen AI SDK 与 Vertex AI 搭配使用:
# Replace the `GOOGLE_CLOUD_PROJECT` and `GOOGLE_CLOUD_LOCATION` values # with appropriate values for your project. export GOOGLE_CLOUD_PROJECT=GOOGLE_CLOUD_PROJECT export GOOGLE_CLOUD_LOCATION=global export GOOGLE_GENAI_USE_VERTEXAI=True
Java
了解如何安装或更新 Java。
如需了解详情,请参阅 SDK 参考文档。
设置环境变量以将 Gen AI SDK 与 Vertex AI 搭配使用:
# Replace the `GOOGLE_CLOUD_PROJECT` and `GOOGLE_CLOUD_LOCATION` values # with appropriate values for your project. export GOOGLE_CLOUD_PROJECT=GOOGLE_CLOUD_PROJECT export GOOGLE_CLOUD_LOCATION=global export GOOGLE_GENAI_USE_VERTEXAI=True
Node.js
安装
npm install @google/genai
如需了解详情,请参阅 SDK 参考文档。
设置环境变量以将 Gen AI SDK 与 Vertex AI 搭配使用:
# Replace the `GOOGLE_CLOUD_PROJECT` and `GOOGLE_CLOUD_LOCATION` values # with appropriate values for your project. export GOOGLE_CLOUD_PROJECT=GOOGLE_CLOUD_PROJECT export GOOGLE_CLOUD_LOCATION=global export GOOGLE_GENAI_USE_VERTEXAI=True
REST
设置您的环境后,您可以使用 REST 测试文本提示。以下示例会向发布方模型端点发送请求。
在使用任何请求数据之前,请先进行以下替换:
PROJECT_ID:您的项目 ID。FILE_URI:要包含在提示中的文件的 URI 或网址。可接受的值包括:- Cloud Storage 存储桶 URI:对象必须可公开读取,或者位于发送请求的同一 Google Cloud 项目中。对于
gemini-2.0-flash和gemini-2.0-flash-lite,大小限制为 2 GB。 - HTTP 网址:文件网址必须可公开读取。您可以为每个请求指定一个视频文件、一个音频文件和最多 10 个图片文件。音频文件、视频文件和文档的大小不得超过 15 MB。
- YouTube 视频网址:YouTube 视频必须由您用于登录 Google Cloud 控制台的账号所拥有,或者是公开的。每个请求仅支持一个 YouTube 视频网址。
指定
fileURI时,您还必须指定文件的媒体类型 (mimeType)。 如果启用了 VPC Service Controls,则不支持为fileURI指定媒体文件网址。如果您在 Cloud Storage 中没有 PDF 文件,则可以使用以下公开提供的文件:
gs://cloud-samples-data/generative-ai/pdf/2403.05530.pdf,MIME 类型为application/pdf。如需查看此 PDF,请打开示例 PDF 文件。- Cloud Storage 存储桶 URI:对象必须可公开读取,或者位于发送请求的同一 Google Cloud 项目中。对于
MIME_TYPE:在data或fileUri字段中指定的文件的媒体类型。可接受的值包括:点击即可展开 MIME 类型
application/pdfaudio/mpegaudio/mp3audio/wavimage/pngimage/jpegimage/webptext/plainvideo/movvideo/mpegvideo/mp4video/mpgvideo/avivideo/wmvvideo/mpegpsvideo/flv
TEXT:要包含在提示中的文本说明。 例如You are a very professional document summarization specialist. Please summarize the given document.
如需发送请求,请选择以下方式之一:
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://aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/global/publishers/google/models/gemini-2.0-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://aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/global/publishers/google/models/gemini-2.0-flash:generateContent" | Select-Object -Expand Content
您应该收到类似以下内容的 JSON 响应。
请注意此示例网址中的以下内容:- 使用
generateContent方法请求在回答完全生成后返回回答。 为了降低真人观众对于延迟的感知度,请使用streamGenerateContent方法在生成回答时流式传输回答。 - 多模态模型 ID 位于网址末尾且位于方法之前(例如
gemini-2.0-flash)。此示例可能还支持其他模型。
控制台
如需使用 Google Cloud 控制台发送多模态提示,请执行以下操作:在 Google Cloud 控制台的 Vertex AI 部分中,进入 Vertex AI Studio 页面。
点击创建提示。
可选:配置模型和参数:
- 模型:选择一个模型。
可选:如需配置高级参数,请点击高级,然后按如下方式进行配置:
点击即可展开高级配置
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。 - 回答数量上限:使用滑块或文本框输入要生成的回答数量的值。
- 流式回答:启用此选项可在生成回答时输出回答。
- 安全过滤器阈值:选择您看到可能有害的回答的可能性的阈值。
- 启用接地:多模态提示不支持接地。
- 区域:选择您要使用的区域。
- 温度:使用滑块或文本框输入温度值。
The temperature is used for sampling during response generation, which occurs whenandtopPtopKare applied. Temperature controls the degree of randomness in token selection. Lower temperatures are good for prompts that require a less open-ended or creative response, while higher temperatures can lead to more diverse or creative results. A temperature of0means that the highest probability tokens are always selected. In this case, responses for a given prompt are mostly deterministic, but a small amount of variation is still possible.If the model returns a response that's too generic, too short, or the model gives a fallback response, try increasing the temperature.
</li> <li>**Output token limit**: Use the slider or textbox to enter a value for the max output limit. Maximum number of tokens that can be generated in the response. A token is approximately four characters. 100 tokens correspond to roughly 60-80 words.Specify a lower value for shorter responses and a higher value for potentially longer responses.
</li> <li>**Add stop sequence**: Optional. Enter a stop sequence, which is a series of characters that includes spaces. If the model encounters a stop sequence, the response generation stops. The stop sequence isn't included in the response, and you can add up to five stop sequences.</li> </ul>
点击插入媒体,然后为文件选择一个来源。
上传
选择您要上传的文件,然后点击打开。
通过网址
输入要使用的文件的网址,然后点击插入。
Cloud Storage
选择存储桶,接着从存储桶选择您要导入的文件,然后点击选择。
Google 云端硬盘
- 选择一个账号,并在您首次选择此选项时同意 Vertex AI Studio 访问您的账号。您可以上传多个文件,但总大小不得超过 10 MB。单个文件的大小不能超过 7 MB。
- 点击要添加的文件。
点击选择。
文件缩略图会显示在提示窗格中。 系统还会显示 token 总数。如果提示数据超过 token 限制,则 token 会被截断,并且不会用于处理数据。
在提示窗格中输入文本提示。
可选:如需查看 Token ID 到文本和 Token ID,请点击提示窗格中的 token 数量。
点击提交。
可选:如需将提示保存到我的提示,请点击 保存。
可选:如需获取提示对应的 Python 代码或 curl 命令,请点击 使用代码构建 > 获取代码。
设置可选模型参数
每个模型都有一组可设置的可选参数。如需了解详情,请参阅内容生成参数。
文档 token 化
PDF 词元化
PDF 文件被视为图片,因此 PDF 文件的每页都会以与图片相同的方式进行词元化。
此外,PDF 的费用遵循 Gemini 图片价格。 例如,如果您在 Gemini API 调用中包含一个两页的 PDF 文件,则会产生处理两张图片的输入费用。
PDF 文件最佳实践
使用 PDF 文件时,请遵循以下最佳实践和信息以获得最佳结果:
- 如果提示包含单个 PDF 文件,请将该 PDF 文件放在请求中的文本提示前面。
- 如果您的文档很长,请考虑将其拆分为多个 PDF 进行处理。
- 使用以文本形式呈现的 PDF 文件,而不是使用扫描图片中的文本。此格式可确保文本是机器可读的,与扫描的图片 PDF 相比,文本更易于模型修改、搜索和操作。在使用合同等包含大量文本的文档时,这样可以提供最佳结果。
限制
虽然多模态 Gemini 模型在许多多模态应用场景中表现出强大功能,但了解模型的限制非常重要:
- 空间推理:模型在定位 PDF 中的文本或对象时并不精确。它们可能只返回对象数的近似值。
- 准确性:模型在解读 PDF 文档中的手写文字时可能会产生幻觉。
后续步骤
- 开始使用多模态 Gemini 模型进行构建 - 新客户可获享 $300 免费 Google Cloud 赠金,探索他们可以使用 Gemini 执行的操作。
- 了解如何发送聊天提示请求。
- 了解 Responsible AI 最佳实践和 Vertex AI 的安全过滤条件。