翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
推論を実行する前にトークンをカウントしてトークンの使用量をモニタリングする
モデル推論を実行する場合、入力で送信するトークンの数は、リクエストのコストと、1 分間および 1 日に使用できるトークンのクォータに影響します。CountTokens API は、推論リクエストで同じ入力がモデルに送信された場合に使用されるトークン数を返すため、基盤モデルにリクエストを送信する前にトークンの使用量を推定するのに役立ちます。
注記
CountTokens API を使用しても料金は発生しません。
使用されるトークン化戦略はモデルによって異なるため、トークンのカウントはモデル固有です。このオペレーションによって返されるトークン数は、推論を実行するために同じ入力がモデルに送信された場合に課金対象となるトークン数と一致します。
CountTokens API を使用して、以下のことを実行できます。
-
推論リクエストを送信する前にコストを見積もる。
-
トークンの制限内に収まるようにプロンプトを最適化する。
-
アプリケーションでのトークンの使用量を計画する。
トークンのカウントでサポートされているモデルおよびリージョン
次の表は、トークンカウントの基盤モデルサポートを示しています。
| プロバイダー | モデル | モデル 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 リクエストを送信します。モデルをヘッダーに指定し、トークンをカウントする入力を body フィールドに指定します。body フィールドの値は、InvokeModel リクエストの入力トークンをカウントするのか、Converse リクエストの入力トークンをカウントするのかによって異なります。
-
InvokeModelリクエストの場合、bodyの形式は、指定したモデルによって異なる形式の JSON オブジェクトを表す文字列です。 -
Converseリクエストの場合、bodyの形式は、会話に含まれるmessagesプロンプトとsystemプロンプトを指定する JSON オブジェクトです。
例を試す
このセクションの例では、Anthropic Claude 3 Haiku を使用して InvokeModel リクエストと Converse リクエストのトークンをカウントします。
前提条件
-
ダウンロードするとAWS SDK for Python (Boto3)、認証情報とデフォルトのAWSリージョンが自動的に認識されるように設定が設定されます。
-
IAM アイデンティティに、次のアクションを行うためのアクセス許可が付与されていること (詳細については、「Amazon Bedrock のアクション、リソース、条件キー」を参照してください)。
-
bedrock:CountTokens –
CountTokensの使用を許可します。 -
bedrock: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"])