View a markdown version of this page

추론을 실행하기 전에 토큰을 계산하여 토큰 사용량 모니터링 - Amazon Bedrock

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

추론을 실행하기 전에 토큰을 계산하여 토큰 사용량 모니터링

모델 추론을 실행하면 입력에서 전송하는 토큰 수가 요청 비용과 분당 및 하루에 사용할 수 있는 토큰 할당량에 영향을 미칩니다. CountTokens API를 사용하면 추론 요청에서 동일한 입력이 모델에 전송된 경우 사용할 토큰 수를 반환하여 파운데이션 모델에 요청을 보내기 전에 토큰 사용량을 추정할 수 있습니다.

참고

CountTokens API를 사용해도 요금이 발생하지 않습니다.

참고

리전 간 추론(CRIS)으로만 시작하는 모델을 포함한 일부 Anthropic Claude 모델은에서 CountTokens를 지원하지 bedrock-runtime 않습니다bedrock-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의 형식은 대화에 포함된 messagessystem 프롬프트를 지정하는 JSON 객체입니다.

예: bedrock-runtime 요청에 대한 토큰 수 계산

이 섹션의 예제는 Anthropic Claude 3 Haiku를 사용하여 InvokeModelConverse 요청에 대한 토큰을 계산할 수 있도록 합니다.

사전 조건
  • 를 다운로드했으며 자격 증명 AWS SDK for Python (Boto3) 과 기본 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"])

bedrock-mantle 엔드포인트를 사용하여 토큰 계산

bedrock-mantle 엔드포인트는에서 Anthropic의 count_tokens API를 노출합니다/anthropic/v1/messages/count_tokens. 이를 사용하여 CountTokens on을 지원하지 않는 Anthropic Claude 모델의 입력 토큰 수를 계산합니다bedrock-runtime. 예를 들어, 모델이의 교차 리전 추론(CRIS)을 통해서만 제공bedrock-runtime되므로 CountTokens가 대상으로 지정할 리전별 엔드포인트가 없는 경우입니다. /anthropic/v1/messages 경로는 Claude별이며 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. 지원되는 리전은 지원되는 리전 및 엔드포인트 섹션을 참조하세요.

  • 요청 본문 - , 및 선택적 model messagessystem tools 필드를 포함한 Anthropic count_tokens셰이프입니다. 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-name. 기본 프로젝트 이름은 입니다default.

  • 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. 모델별 특성 표면은 모델 카드를 참조하세요.

다음 예제에서는를 Amazon Bedrock API 키curl와 함께 사용하여 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 필드가 포함됩니다.