推論を実行する前にトークンをカウントしてトークンの使用状況をモニタリングする - Amazon Bedrock

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

推論を実行する前にトークンをカウントしてトークンの使用状況をモニタリングする

モデル推論を実行する場合、入力で送信するトークンの数は、リクエストのコストと、1 分あたりおよび 1 日あたりに使用できるトークンのクォータに影響します。CountTokens API は、推論リクエストで同じ入力がモデルに送信された場合に使用されるトークン数を返すことで、基盤モデルにリクエストを送信する前にトークン使用量を推定するのに役立ちます。

注記

CountTokens API を使用しても料金は発生しません。

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

CountTokens API を使用して、以下を実行できます。

  • 推論リクエストを送信する前にコストを見積もります。

  • トークンの制限内に収まるようにプロンプトを最適化します。

  • アプリケーションでトークンの使用を計画します。

トークンカウントでサポートされているモデルとリージョン

カウントトークン API は、次のリージョンでサポートされています (Amazon Bedrock でサポートされているリージョンの詳細については、「Amazon Bedrock エンドポイントとクォータ」を参照してください)。

  • 米国東部 (バージニア北部)

  • 米国東部 (オハイオ)

  • 米国西部 (オレゴン)

  • アジアパシフィック (東京)

  • アジアパシフィック (ムンバイ)

  • アジアパシフィック (シンガポール)

  • アジアパシフィック (シドニー)

  • 欧州 (フランクフルト)

  • 欧州 (チューリッヒ)

  • 欧州 (アイルランド)

  • 欧州 (ロンドン)

  • 南米 (サンパウロ)

カウントトークン 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 フィールドの値は、InvokeModel リクエストまたは Converse リクエストの入力トークンをカウントするかどうかによって異なります。 https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_Converse.html

  • InvokeModel リクエストの場合、 の形式bodyは、指定したモデルに依存する形式を持つ JSON オブジェクトを表す文字列です。

  • Converse リクエストの場合、 の形式bodyは、会話に含まれる messagessystemプロンプトを指定する JSON オブジェクトです。

例を試す

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

前提条件
  • ダウンロードすると AWS SDK for Python (Boto3) 、認証情報とデフォルトの AWS リージョンが自動的に認識されるように設定が設定されます。

  • IAM ID には、次のアクションに対するアクセス許可があります (詳細については、「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"])