本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
在執行推論之前,透過計算字符來監控字符用量
當您執行模型推論時,您在輸入中傳送的字符數量將影響請求的成本,以及影響您每分鐘和每天可以使用的字符配額。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是 JSON 物件,其會指定對話中包含的messages和system提示。
嘗試範例
本節中的範例可讓您使用 Anthropic Claude 3 Haiku 計算 InvokeModel 和 Converse 請求的字符。
先決條件
-
您已下載 適用於 Python (Boto3) 的 AWS SDK,且您的組態已設定為自動辨識您的登入資料和預設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"])