在运行推理之前,通过计算词元来监控您的词元使用情况 - Amazon Bedrock

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

在运行推理之前,通过计算词元来监控您的词元使用情况

运行模型推理时,您在输入中发送的词元数量,会计入到请求的成本中,还会计入到您每分钟和每天可以使用的词元配额中。该 CountTokensAPI 可帮助您在向基础模型发送请求之前估算令牌使用情况,方法是返回在推理请求中向模型发送相同输入时将使用的令牌数量。

注意

使用 CountTokensAPI 不会产生任何费用。

词元计数特定于模型,因为不同的模型使用不同的词元计算策略。此操作返回的词元计数,与向模型发送相同输入来运行推理时将收费的词元计数相符。

您可以使用 CountTokens API 来执行以下操作:

  • 在发送推理请求之前估算成本。

  • 优化提示以适应词元限制。

  • 规划应用程序中的词元使用量。

支持词元计数的模型和区域

下表显示了基础模型对代币计数的支持:

Provider 模型 模型 ID 支持单区域模型
Anthropic Claude 3.5 Haiku anthropic.claude-3-5-haiku-20241022-v1:0

us-west-2

Anthropic Claude 3.5 Sonnet anthropic.claude-3-5-sonnet-20240620-v1:0

ap-northeast-1

ap-southeast-1

eu-central-1

eu-central-2

us-east-1

us-west-2

Anthropic Claude 3.5 Sonnet v2 anthropic.claude-3-5-sonnet-20241022-v2:0

ap-southeast-2

us-west-2

Anthropic Claude 3.7 Sonnet anthropic.claude-3-7-sonnet-20250219-v1:0

eu-west-2

Anthropic Claude Opus 4 anthropic.claude-opus-4-20250514-v1:0
Anthropic Claude Sonnet 4 anthropic.claude-sonnet-4-20250514-v1:0

计算请求中的词元

要计算推理请求中输入令牌的数量,请发送带有 Amazon Bedrock 运行时终端节点CountTokens请求,在标题中指定模型,在字段中指定要计算令牌的输入。bodybody字段的值取决于您是在计算输入令牌还是 C onverse 请求InvokeModel的输入标记:

  • 对于 InvokeModel 请求,body 的格式是表示一个 JSON 对象的字符串,其格式取决于您指定的模型。

  • 对于 Converse 请求,body 的格式是一个 JSON 对象,指定对话中包含的 messagessystem 提示。

尝试示例

此部分中的示例让您可以对通过 InvokeModelConverse 发出的 Anthropic 和 Claude 3 Haiku 计算词元数量。

先决条件
  • 您已下载适用于 Python (Boto3) 的 AWS SDK并且您的配置已设置为可以自动识别您的凭据和默认AWS区域。

  • 您的 IAM 身份有权执行以下操作(有关更多信息,请参阅 Amazon Bedrock 的操作、资源和条件键):

    • 基岩:CountTokens —允许使用. CountTokens

    • 基岩:InvokeModel — 允许使用InvokeModel和。Converse应至少将范围限arn:${Partition}:bedrock:${Region}::foundation-model/anthropic.claude-3-haiku-20240307-v1:0定为。

要尝试计算InvokeModel请求的令牌,请运行以下 Python 代码:

import boto3 import json bedrock_runtime = boto3.client("bedrock-runtime") input_to_count = json.dumps({ "anthropic_version": "bedrock-2023-05-31", "max_tokens": 500, "messages": [ { "role": "user", "content": "What is the capital of France?" } ] }) response = bedrock_runtime.count_tokens( modelId="anthropic.claude-3-5-haiku-20241022-v1:0", input={ "invokeModel": { "body": input_to_count } } ) print(response["inputTokens"])

要尝试计算用于 Converse 请求的词元,请运行以下 Python 代码:

import boto3 import json bedrock_runtime = boto3.client("bedrock-runtime") input_to_count = { "messages": [ { "role": "user", "content": [ { "text": "What is the capital of France?" } ] }, { "role": "assistant", "content": [ { "text": "The capital of France is Paris." } ] }, { "role": "user", "content": [ { "text": "What is its population?" } ] } ], "system": [ { "text": "You're an expert in geography." } ] } response = bedrock_runtime.count_tokens( modelId="anthropic.claude-3-5-haiku-20241022-v1:0", input={ "converse": input_to_count } ) print(response["inputTokens"])