使用 CountTokens API 防止请求超出模型上下文窗口,并根据计费字符数估算潜在费用。
CountTokens API 可以使用与 Gemini API 推理请求相同的 contents
参数。
支持的模型:
模型 | 代码 |
---|---|
Gemini 1.5 Flash | gemini-1.5-flash-preview-0514 |
Gemini 1.5 Pro | gemini-1.5-pro-preview-0514 |
Gemini 1.0 Pro Vision | gemini-1.0-pro-vision gemini-1.0-pro-vision-001 |
Gemini 1.0 Pro | gemini-1.0-pro gemini-1.0-pro-001 gemini-1.0-pro-002 |
Gemini Experimental | gemini-experimental |
限制:
gemini-1.0-pro-vision-001
和 gemini-1.0-ultra-vision-001
使用固定数量的词元作为视频输入。
示例语法
用于发送统计词元请求的语法。
curl
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}:countTokens \ -d '{ "contents": [{ ... }], "system_instruction": { "role": "...", "parts": [{ ... }], "tools": [{ "function_declarations": [{ ... }] }], } }'
Python
gemini_model = GenerativeModel(MODEL_ID) model_response = gemini_model.count_tokens([...])
参数列表
此类包含两个主要属性:role
和 parts
。role
属性表示生成内容的个人,而 parts
属性包含多个元素,每个元素表示消息中的一段数据。
参数 | |
---|---|
|
可选: 创建消息的实体的身份。请将该字符串设置为以下各项之一:
对于非多轮对话,此字段可以留空或未设置。 |
|
构成单条消息的有序部分的列表。不同的部分可能具有不同的 IANA MIME 类型。 |
Part
包含属于多部分 Content
消息一部分的媒体的数据类型。
参数 | |
---|---|
|
可选: 文本提示或代码段。 |
|
可选: 原始字节中的内嵌数据。 |
|
可选: 存储在文件中的数据。 |
Blob
内容 blob。如果可能,这会以文本而非原始字节的形式发送。
参数 | |
---|---|
|
数据的 IANA MIME 类型。 |
|
原始字节。 |
FileData
基于 URI 的数据。
参数 | |
---|---|
|
数据的 IANA MIME 类型。 |
|
存储数据的文件的 Cloud Storage URI。 |
system_instruction
此字段用于用户提供的 system_instructions
。它与 contents
相同,但对内容类型的支持有限。
参数 | |
---|---|
|
数据的 IANA MIME 类型。此字段在内部被忽略。 |
|
仅限文本。用户希望传递给模型的指令。 |
FunctionDeclaration
OpenAPI 3.0 规范定义的函数声明的结构化表示法,表示模型可能会为其生成 JSON 输入的函数。
参数 | |
---|---|
|
要调用的函数名称。 |
|
可选: 函数的说明和用途。 |
|
可选: 以 OpenAPI JSON 架构对象格式描述函数的参数:OpenAPI 3.0 规范。 |
|
可选: 以 OpenAPI JSON 架构对象格式描述函数的输出:OpenAPI 3.0 规范。 |
示例
从文本问题获取词元数
以下示例计算单个文本问题的词元数:
REST
如需使用 Vertex AI API 获取问题的词元数和计费字符数,请向发布者模型端点发送 POST
请求。
在使用任何请求数据之前,请先进行以下替换:
- LOCATION:处理请求的区域。可用的选项包括:
点击即可展开可用区域的部分列表
us-central1
us-west4
northamerica-northeast1
us-east4
us-west1
asia-northeast3
asia-southeast1
asia-northeast1
- PROJECT_ID:您的项目 ID。
- MODEL_ID:您要使用的多模态模型 ID。
- ROLE:与内容关联的对话中的角色。即使在单轮应用场景中,也需要指定角色。
可接受的值包括:
USER
:指定由您发送的内容。
- TEXT:要包含在提示中的文本说明。
- NAME:要调用的函数名称。
- DESCRIPTION:函数的说明和用途。
HTTP 方法和网址:
POST https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/publishers/google/models/MODEL_ID:countTokens
请求 JSON 正文:
{ "contents": [{ "role": "ROLE", "parts": [{ "text": "TEXT" }] }], "system_instruction": { "role": "ROLE", "parts": [{ "text": "TEXT" }] } "tools": [{ "function_declarations": [ { "name": "NAME", "description": "DESCRIPTION", "parameters": { "type": "OBJECT", "properties": { "location": { "type": "TYPE", "description": "DESCRIPTION" } }, "required": [ "location" ] } } ] }] }
如需发送请求,请选择以下方式之一:
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:countTokens"
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:countTokens" | Select-Object -Expand Content
您应该收到类似以下内容的 JSON 响应。
Python
NodeJS
Java
Go
从媒体问题获取词元数
此示例会对使用各种媒体类型的问题的词元数进行统计。
REST
如需使用 Vertex AI API 获取问题的词元数和计费字符数,请向发布者模型端点发送 POST
请求。
在使用任何请求数据之前,请先进行以下替换:
- LOCATION:处理请求的区域。可用的选项包括:
点击即可展开可用区域的部分列表
us-central1
us-west4
northamerica-northeast1
us-east4
us-west1
asia-northeast3
asia-southeast1
asia-northeast1
- PROJECT_ID:您的项目 ID。
- MODEL_ID:您要使用的多模态模型 ID。
- ROLE:与内容关联的对话中的角色。即使在单轮应用场景中,也需要指定角色。
可接受的值包括:
USER
:指定由您发送的内容。
- TEXT:要包含在提示中的文本说明。
- FILE_URI:要包含在提示中的文件的 Cloud Storage URI。存储桶对象必须可公开读取,或者位于发送请求的同一 Google Cloud 项目中。您还必须指定文件的媒体类型 (
mimeType
)。 - MIME_TYPE:在
data
或fileUri
字段中指定的文件的媒体类型。可接受的值包括:点击即可展开 MIME 类型
application/pdf
audio/mpeg
audio/mp3
audio/wav
image/png
image/jpeg
text/plain
video/mov
video/mpeg
video/mp4
video/mpg
video/avi
video/wmv
video/mpegps
video/flv
HTTP 方法和网址:
POST https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/publishers/google/models/MODEL_ID:countTokens
请求 JSON 正文:
{ "contents": [{ "role": "ROLE", "parts": [ { "file_data": { "file_uri": "FILE_URI", "mime_type": "MIME_TYPE" } }, { "text": "TEXT } ] }] }
如需发送请求,请选择以下方式之一:
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:countTokens"
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:countTokens" | Select-Object -Expand Content
您应该收到类似以下内容的 JSON 响应。
Python
NodeJS
Java
Go
后续步骤
- 详细了解 Gemini API。