在執行推論之前,透過計算字符來監控字符用量 - Amazon Bedrock

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

在執行推論之前,透過計算字符來監控字符用量

當您執行模型推論時,您在輸入中傳送的字符數量將影響請求的成本,以及影響您每分鐘和每天可以使用的字符配額。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 欄位的值取決於您計算的是 InvokeModelConverse 請求的輸入字符:

  • 對於 InvokeModel 請求,格式 body 是代表 JSON 物件的字串,其格式取決於您指定的模型。

  • 對於 Converse 請求,格式 body 是 JSON 物件,其會指定對話中包含的 messagessystem 提示。

嘗試範例

本節中的範例可讓您使用 Anthropic Claude 3 Haiku 計算 InvokeModelConverse 請求的字符。

先決條件
  • 您已下載 適用於 Python (Boto3) 的 AWS SDK,且您的組態已設定為自動辨識您的登入資料和預設AWS區域。

  • IAM 身分具有下列動作的許可 (如需詳細資訊,請參閱 Amazon Bedrock 的動作、資源和條件索引鍵):

    • bedrock:CountTokens:允許使用 CountTokens

    • bedrock:InvokeModel:允許使用 InvokeModelConverse。應至少將範圍設為 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"])