

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

# 在运行推理之前，通过计算词元来监控您的词元使用情况
<a name="count-tokens"></a>

运行模型推理时，您在输入中发送的词元数量，会计入到请求的成本中，还会计入到您每分钟和每天可以使用的词元配额中。该 [CountTokens](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_CountTokens.html)API 可帮助您在向基础模型发送请求之前估算令牌使用情况，方法是返回在推理请求中向模型发送相同输入时将使用的令牌数量。

**注意**  
使用 [CountTokens](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_CountTokens.html)API 不会产生任何费用。

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

您可以使用 `CountTokens` API 来执行以下操作：
+ 在发送推理请求之前估算成本。
+ 优化提示以适应词元限制。
+ 规划应用程序中的词元使用量。

**Topics**
+ [支持词元计数的模型和区域](#count-tokens-supported)
+ [计算请求中的词元](#count-tokens-use)
+ [尝试示例](#count-tokens-example)

## 支持词元计数的模型和区域
<a name="count-tokens-supported"></a>

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


| 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 |  | 

## 计算请求中的词元
<a name="count-tokens-use"></a>

要计算推理请求中输入令牌的数量，请发送带有 [Amazon Bedrock 运行时终端节点](https://docs.aws.amazon.com/general/latest/gr/bedrock.html#br-rt)的[CountTokens](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_CountTokens.html)请求，在标题中指定模型，在字段中指定要计算令牌的输入。`body`该`body`字段的值取决于您是在计算输入令牌还是 C [onverse](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_Converse.html) 请求[InvokeModel](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_InvokeModel.html)的输入标记：
+ 对于 `InvokeModel` 请求，`body` 的格式是表示一个 JSON 对象的字符串，其格式取决于您指定的模型。
+ 对于 `Converse` 请求，`body` 的格式是一个 JSON 对象，指定对话中包含的 `messages` 和 `system` 提示。

## 尝试示例
<a name="count-tokens-example"></a>

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

**先决条件**
+ 您已下载适用于 Python (Boto3) 的 AWS SDK并且您的配置已设置为可以自动识别您的凭据和默认AWS区域。
+ 您的 IAM 身份有权执行以下操作（有关更多信息，请参阅 [Amazon Bedrock 的操作、资源和条件键](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonbedrock.html)）：
  + 基岩:CountTokens —允许使用. `CountTokens` 
  + 基岩:InvokeModel — 允许使用`InvokeModel`和。`Converse`应至少将范围限*arn:\$1\$1Partition\$1:bedrock:\$1\$1Region\$1::foundation-model/anthropic.claude-3-haiku-20240307-v1:0*定为。

要尝试计算[InvokeModel](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_InvokeModel.html)请求的令牌，请运行以下 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](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_Converse.html) 请求的词元，请运行以下 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"])
```