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