

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# 推論を実行する前にトークンをカウントしてトークンの使用量をモニタリングする
<a name="count-tokens"></a>

モデル推論を実行する場合、入力で送信するトークンの数は、リクエストのコストと、1 分間および 1 日に使用できるトークンのクォータに影響します。[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 を使用しても料金は発生しません。

**注記**  
クロスリージョン推論 (CRIS) でのみ起動するモデルを含む一部の Anthropic Claude モデルは`bedrock-runtime`、 で [CountTokens](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_CountTokens.html) をサポートしていません`bedrock-runtime`。これらのモデルでは、代わりに`bedrock-mantle`エンドポイントで Anthropic の `count_tokens` API を呼び出して入力トークンをカウントします。URL、リクエスト本文、および例[bedrock-mantle エンドポイントを使用してトークンをカウントする](#count-tokens-mantle)については、「」を参照してください。

使用されるトークン化戦略はモデルによって異なるため、トークンのカウントはモデル固有です。このオペレーションによって返されるトークン数は、推論を実行するために同じ入力がモデルに送信された場合に課金対象となるトークン数と一致します。

`CountTokens` API を使用して、以下のことを実行できます。
+ 推論リクエストを送信する前にコストを見積もる。
+ トークンの制限内に収まるようにプロンプトを最適化する。
+ アプリケーションでのトークンの使用量を計画する。

**Topics**
+ [トークンのカウントでサポートされているモデルおよびリージョン](#count-tokens-supported)
+ [bedrock-runtime エンドポイントを使用してトークンをカウントする](#count-tokens-use)
+ [例: bedrock-runtime リクエストのトークンをカウントする](#count-tokens-example)
+ [bedrock-mantle エンドポイントを使用してトークンをカウントする](#count-tokens-mantle)

## トークンのカウントでサポートされているモデルおよびリージョン
<a name="count-tokens-supported"></a>

トークンカウントをサポートするモデルを確認するには、[モデルを一目で](model-cards.md)確認し、関心のあるモデルを選択してください。

## bedrock-runtime エンドポイントを使用してトークンをカウントする
<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` フィールドの値は、[InvokeModel](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_InvokeModel.html) リクエストの入力トークンをカウントするのか、[Converse](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_Converse.html) リクエストの入力トークンをカウントするのかによって異なります。
+ `InvokeModel` リクエストの場合、`body` の形式は、指定したモデルによって異なる形式の JSON オブジェクトを表す文字列です。
+ `Converse` リクエストの場合、`body` の形式は、会話に含まれる `messages` プロンプトと `system` プロンプトを指定する JSON オブジェクトです。

## 例: bedrock-runtime リクエストのトークンをカウントする
<a name="count-tokens-example"></a>

このセクションの例では、Anthropic Claude 3 Haiku を使用して `InvokeModel` リクエストと `Converse` リクエストのトークンをカウントします。

**前提条件**
+ ダウンロードすると AWS SDK for Python (Boto3) 、認証情報とデフォルトの AWS リージョンが自動的に認識されるように設定が設定されます。
+ IAM アイデンティティに、次のアクションを行うためのアクセス許可が付与されていること (詳細については、「[Amazon Bedrock のアクション、リソース、条件キー](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonbedrock.html)」を参照してください)。
  + bedrock:CountTokens – `CountTokens` の使用を許可します。
  + bedrock:InvokeModel – `InvokeModel` および `Converse` の使用を許可します。少なくとも {{arn:${Partition}:bedrock:${Region}::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"])
```

## bedrock-mantle エンドポイントを使用してトークンをカウントする
<a name="count-tokens-mantle"></a>

`bedrock-mantle` エンドポイントは、 で Anthropic の `count_tokens` API を公開します`/anthropic/v1/messages/count_tokens`。これを使用して、 で [CountTokens](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_CountTokens.html) をサポートしていない Anthropic Claude モデルの入力トークンをカウントします`bedrock-runtime`。たとえば、モデルが でクロスリージョン推論 (CRIS) を介してのみ提供される場合`bedrock-runtime`、 には [CountTokens](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_CountTokens.html) がターゲットとするリージョン固有のエンドポイントがありません。`/anthropic/v1/messages` パスは Claude 固有です。 を`bedrock-mantle`返すと、Anthropic 以外のモデルが返されます`The model 'X' does not support the '/anthropic/v1/messages' API`。

**詳細をリクエストする**
+ **URL** – `POST https://bedrock-mantle.{{region}}.api.aws/anthropic/v1/messages/count_tokens`。サポートされているリージョンについては、「[サポートされているリージョンとエンドポイント](bedrock-mantle.md#bedrock-mantle-supported)」を参照してください。
+ **リクエスト本文** – 、、オプションの `system`フィールド`messages`と `tools`フィールドを含む Anthropic `model``count_tokens`シェイプ。[「Anthropic Messages count tokens reference](https://docs.anthropic.com/en/api/messages-count-tokens)」を参照してください。
+ **認証** – サービス名 の SigV4 署名`bedrock-mantle`、または `x-api-key`ヘッダーに渡された Amazon Bedrock API キー。「[API キー](api-keys.md)」を参照してください。
+ **IAM アクション** – `bedrock-mantle:CountTokens`。このアクションでは、`bedrock-mantle`サービスプレフィックスを使用し、[Amazon Bedrock () リファレンスではなく、Amazon Bedrock Powered by AWS Mantle サービス認可](https://docs.aws.amazon.com/service-authorization/latest/reference/list_bedrock-mantle.html)リファレンスに表示されます。`bedrock`認可は、 形式の Amazon Bedrock [プロジェクト](projects.md)リソースに限定されます`arn:aws:bedrock-mantle:{{region}}:{{account-id}}:project/{{project-name}}`。デフォルトのプロジェクト名は です`default`。
+ **SDK サポート** – AWS SDKs は現在、このエンドポイントをターゲットとするメソッドを公開していません。リクエストを SigV4-signed HTTP として送信するか`POST`、Amazon Bedrock API キーで任意の HTTP クライアントを使用します。`bedrock-runtime` クライアントメソッド`count_tokens`はこのエンドポイントをターゲットにせず、 でサポートされていないモデルの検証エラーを返します`bedrock-runtime`。
+ **エラー形式** – エラーは Anthropic シェイプに従います: `{"type": "error", "request_id": "...", "error": {"type": "error-type", "message": "error-message"}}`。これは、 によって返される標準の AWS JSON エラーエンベロープとは異なります`bedrock-runtime`。

**注記**  
`count_tokens` エンドポイントは、対応する推論エンドポイントと同じスキーマを使用してリクエストボディを検証するため、モデルがサポートしていないリクエストフィールドは HTTP 400 で拒否されます。たとえば、Anthropic Claude Opus 4.7 は `strict: true`を で受け入れず`tools[]`、 を返します`tools.0.custom.strict: Extra inputs are not permitted`。[モデル固有の特徴表面については、モデルカード](model-cards.md)を参照してください。

次の例では、Amazon Bedrock API キー`curl`で を使用して`bedrock-mantle`エンドポイントのトークンをカウントします。

```
curl -X POST https://bedrock-mantle.us-east-1.api.aws/anthropic/v1/messages/count_tokens \
  -H "x-api-key: $BEDROCK_API_KEY" \
  -H "anthropic-version: 2023-06-01" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "anthropic.claude-opus-4-7",
    "messages": [
        {"role": "user", "content": "How many tokens is this prompt?"}
    ]
  }'
```

レスポンスには `input_tokens`フィールドが含まれており、その値は指定された入力のトークン数です。