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

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

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

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

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

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

嘗試範例

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

先決條件
  • 您已下載 適用於 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"])