本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
在執行推論之前,透過計算字符來監控字符用量
當您執行模型推論時,您在輸入中傳送的字符數量將影響請求的成本,以及影響您每分鐘和每天可以使用的字符配額。CountTokens API 透過傳回在推論請求中將相同輸入傳送至模型時將使用的字符計數,協助您在將請求傳送至基礎模型之前估計字符用量。
注意
使用 CountTokens API 不會產生費用。
注意
有些 Anthropic Claude 模型 – 包括僅在 上使用跨區域推論 (CRIS) 啟動的模型 bedrock-runtime – 不支援 上的 CountTokensbedrock-runtime。對於這些模型,請改為在bedrock-mantle端點上呼叫 Anthropic 的 count_tokens API 來計算輸入字符。如需 URL、請求內文和範例,使用 bedrock-mantle 端點計算權杖請參閱 。
字符計數是模型特定的,因為不同的模型會使用不同的字符化策略。此操作傳回的字符計數將與字符計數相符,如果將相同的輸入傳送到模型以執行推論,則將收費。
您可以使用 CountTokens API 執行下列動作:
-
在傳送推論請求之前估計成本。
-
最佳化提示以符合字符限制。
-
規劃應用程式中的字符用量。
支援字符計數的模型和區域
若要查看哪些模型支援字符計數,請快速瀏覽模型並挑選您感興趣的模型。
使用 bedrock-runtime 端點計算權杖
若要計算推論請求中的輸入字符數量,請使用 Amazon Bedrock 執行時期端點傳送 CountTokens 請求、在標頭中指定模型,以及在 body 欄位中指定要計算字符的輸入。body 欄位的值取決於您計算的是 InvokeModel 或 Converse 請求的輸入字符:
-
對於
InvokeModel請求,格式body是代表 JSON 物件的字串,其格式取決於您指定的模型。 -
對於
Converse請求,格式body是 JSON 物件,其會指定對話中包含的messages和system提示。
範例:Bdrock-runtime 請求的計數字符
本節中的範例可讓您使用 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"])
使用 bedrock-mantle 端點計算權杖
bedrock-mantle 端點會在 公開 Anthropic 的 count_tokens API/anthropic/v1/messages/count_tokens。使用它來計算不支援 CountTokens 之 Anthropic Claude 模型的輸入字符 bedrock-runtime- 例如,當模型僅透過 上的跨區域推論 (CRIS) 提供時,bedrock-runtime因此沒有 CountTokens 的目標區域特定端點。/anthropic/v1/messages 路徑為 Claude-specific;bedrock-mantle傳回 時的非 Anthropic 模型The model 'X' does not support the '/anthropic/v1/messages' API。
請求詳細資訊
-
URL –
POST https://bedrock-mantle.。若要了解支援的區域,請參閱 支援的區域和端點。region.api.aws/anthropic/v1/messages/count_tokens -
請求內文 – Anthropic
count_tokens形狀,包括model、messages和選用system和tools欄位。請參閱 Anthropic Messages 計數權杖參考。 -
身分驗證 – 服務名稱為 的 SigV4 簽章
bedrock-mantle,或x-api-key標頭中傳遞的 Amazon Bedrock API 金鑰。請參閱 API 金鑰。 -
IAM 動作 –
bedrock-mantle:CountTokens。授權的範圍是表單 的 Amazon Bedrock 專案資源arn:aws:bedrock-mantle:。預設專案名稱為region:account-id:project/project-namedefault。 -
SDK 支援 – AWS SDKs 目前不會公開以此端點為目標的方法。以 SigV4-signed HTTP 傳送請求
POST,或搭配 Amazon Bedrock API 金鑰使用任何 HTTP 用戶端。bedrock-runtime用戶端方法count_tokens不會將此端點設為目標,並針對 上不支援的模型傳回驗證錯誤bedrock-runtime。 -
錯誤格式 – 錯誤遵循 Anthropic 形狀:
{"type": "error", "request_id": "...", "error": {"type": "error-type", "message": "error-message"}}。這與 傳回的標準 AWS JSON 錯誤信封不同bedrock-runtime。
注意
count_tokens 端點會使用與對應推論端點相同的結構描述來驗證請求內文,因此使用 HTTP 400 拒絕模型不支援的請求欄位。例如,Anthropic Claude Opus 4.7 不接受 strict: true tools[]並傳回 。 tools.0.custom.strict: Extra inputs are not permitted如需特定模型的功能表面,請參閱模型卡。
下列範例使用 curl搭配 Amazon Bedrock API 金鑰來計算bedrock-mantle端點上的權杖:
curl -X POST https://bedrock-mantle.us-east-1.api.aws/anthropic/v1/messages/count_tokens \ -H "x-api-key: $BEDROCK_API_KEY" \ -H "anthropic-version: 2023-06-01" \ -H "Content-Type: application/json" \ -d '{ "model": "anthropic.claude-opus-4-7", "messages": [ {"role": "user", "content": "How many tokens is this prompt?"} ] }'
回應包含 input_tokens 欄位,其值為所提供輸入的字符計數。