本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
在运行推理之前,通过计算代币来监控您的代币使用情况
运行模型推理时,您在输入中发送的令牌数量会影响请求的成本以及您每分钟和每天可以使用的令牌配额。该 CountTokensAPI 可帮助您在向基础模型发送请求之前估算令牌使用情况,方法是返回在推理请求中向模型发送相同输入时将使用的令牌数量。
注意
使用 CountTokensAPI 不会产生任何费用。
代币计数因模型而异,因为不同的模型使用不同的代币化策略。此操作返回的令牌计数将与向模型发送相同输入以运行推理时将收取的令牌计数相匹配。
您可以使用 CountTokens
API 执行以下操作:
-
在发送推理请求之前估算成本。
-
优化提示以适应代币限制。
-
规划应用程序中令牌的使用。
代币计数支持的型号和区域
以下区域支持计数令牌 API(有关 Amazon Bedrock 支持的区域的更多信息,请参阅 Amazon Bedroc k 终端节点和配额):
-
美国东部(弗吉尼亚州北部)
-
美国东部(俄亥俄州)
-
美国西部(俄勒冈)
-
亚太地区(东京)
-
亚太地区(孟买)
-
亚太地区(新加坡)
-
亚太地区(悉尼)
-
欧洲地区(法兰克福)
-
欧洲(苏黎世)
-
欧洲地区(爱尔兰)
-
欧洲地区(伦敦)
-
南美洲(圣保罗)
以下基础模型支持 Count tokens API(要查看哪些区域支持每种模型,请参阅Amazon Bedrock 中支持的根基模型):
-
Anthropic Claude 3.5 Haiku
-
Anthropic Claude 3.5 Sonnet v2
-
Anthropic Claude 3.5 Sonnet
-
Anthropic Claude 3.7 Sonnet
-
Anthropic Claude Opus 4
-
Anthropic Claude Sonnet 4
计算请求中的代币
要计算推理请求中输入令牌的数量,请发送带有 Amazon Bedrock 运行时终端节点的CountTokens请求,在标题中指定模型,在字段中指定要计算令牌的输入。body
该body
字段的值取决于您是在计算输入令牌还是 C onverse 请求InvokeModel的输入标记:
-
对于
InvokeModel
请求,的格式body
是表示一个 JSON 对象的字符串,其格式取决于您指定的模型。 -
对于
Converse
请求,的格式body
是一个 JSON 对象,用于指定对话中包含的messages
和system
提示。
试试一个例子
本节中的示例允许您计算InvokeModel
和Converse
请求的令牌AnthropicClaude 3 Haiku。
先决条件
-
您已下载 适用于 Python (Boto3) 的 AWS SDK 并且您的配置已设置为可以自动识别您的凭据和默认 AWS 区域。
-
您的 IAM 身份有权执行以下操作(有关更多信息,请参阅 A mazon 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"])
要尝试计算匡威请求的代币,请运行以下 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"])