Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Surveillance de l’utilisation de vos jetons en comptant les jetons avant l’exécution de l’inférence
Lorsque vous exécutez une inférence de modèle, le nombre de jetons que vous envoyez dans l’entrée contribue au coût de la demande et au quota de jetons que vous pouvez utiliser par minute et par jour. L'CountTokensAPI vous aide à estimer l'utilisation des jetons avant d'envoyer des demandes aux modèles de base en renvoyant le nombre de jetons qui serait utilisé si la même entrée était envoyée au modèle dans une demande d'inférence.
Note
L'utilisation de CountTokensl'API n'entraîne aucun frais.
Note
Certains modèles Anthropic Claude, y compris ceux qui sont lancés avec l'inférence interrégionale (CRIS) uniquement activéebedrock-runtime, ne sont pas compatibles avec. CountTokensbedrock-runtime Pour ces modèles, comptez les jetons d'entrée en appelant plutôt l'count_tokensAPI d'Anthropic sur le bedrock-mantle terminal. Voir Comptez les jetons en utilisant le point de terminaison Bedrock-Mantle pour l'URL, le corps de la requête et un exemple.
Le comptage des jetons est spécifique au modèle, car les différents modèles utilisent des stratégies de création de jetons différentes. Le nombre de jetons renvoyé par cette opération correspondra au nombre de jetons qui serait facturé si la même entrée était envoyée au modèle pour exécuter l’inférence.
Vous pouvez utiliser l’API CountTokens pour effectuer les opérations suivantes :
-
estimer les coûts avant d’envoyer des demandes d’inférence ;
-
optimiser les invites pour les adapter aux limites des jetons ;
-
planifier l’utilisation des jetons dans vos applications.
Rubriques
Modèles et régions pris en charge pour le comptage des jetons
Pour savoir quels modèles prennent en charge le comptage de jetons, consultez la section Modèles en un coup d'œil et sélectionnez le modèle qui vous intéresse.
Comptez les jetons à l'aide du point de terminaison bedrock-runtime
Pour compter le nombre de jetons d'entrée dans une demande d'inférence, envoyez une CountTokensdemande avec un point de terminaison Amazon Bedrock, spécifiez le modèle dans l'en-tête et l'entrée pour laquelle compter les jetons dans le body champ. La valeur du body champ varie selon que vous comptez les jetons d'entrée pour une demande InvokeModelou pour une requête Converse :
-
Pour une demande
InvokeModel, le format debodyest une chaîne représentant un objet JSON dont le format dépend du modèle que vous spécifiez. -
Pour une demande
Converse, le format debodyest un objet JSON spécifiant les invitesmessagesetsystemincluses dans la conversation.
Exemple : compter les jetons pour une requête bedrock-runtime
Les exemples de cette section vous permettent de compter les jetons pour une demande InvokeModel et Converse avec Anthropic Claude 3 Haiku.
Conditions préalables
-
Vous avez téléchargé AWS SDK pour Python (Boto3) et votre configuration est configurée de telle sorte que vos informations d'identification et votre AWS région par défaut soient automatiquement reconnues.
-
Votre identité IAM est autorisée à effectuer les actions suivantes (pour plus d’informations, consultez Actions, ressources et clés de condition pour Amazon Bedrock) :
-
bedrock : CountTokens — Permet l'utilisation de.
CountTokens -
bedrock : InvokeModel — Permet l'utilisation de
InvokeModeletConverse. Doit être limité auarn:${Partition}:bedrock:${Region}::foundation-model/anthropic.claude-3-haiku-20240307-v1:0minimum à.
-
Pour essayer de compter les jetons pour une InvokeModelrequête, exécutez le code Python suivant :
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"])
Pour essayer de compter les jetons pour une demande Converse, exécutez le code Python suivant :
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"])
Comptez les jetons en utilisant le point de terminaison Bedrock-Mantle
Le bedrock-mantle point de terminaison expose l'count_tokensAPI d'Anthropic à l'adresse. /anthropic/v1/messages/count_tokens Utilisez-le pour compter les jetons d'entrée pour les modèles Anthropic Claude qui ne sont pas CountTokenscompatiblesbedrock-runtime, par exemple, lorsque le modèle est proposé uniquement par inférence interrégionale (CRIS) activé bedrock-runtime et n'a donc aucun Region-specific point final à CountTokenscibler. La /anthropic/v1/messages voie à suivre est la Claude-specific suivante : modèles non anthropiques en bedrock-mantle retour. The model 'X' does not support the '/anthropic/v1/messages' API
Détails de la demande
-
URL —
POST https://bedrock-mantle.. Pour connaître les régions prises en charge, consultez Régions et terminaux pris en charge.region.api.aws/anthropic/v1/messages/count_tokens -
Corps de la demande — La
count_tokensforme anthropique, y comprismodelmessages, et lestoolschamps facultatifssystem. Consultez la référence sur le nombre de jetons dans les messages anthropiques. -
Authentification : soit une signature SigV4 avec le nom du service
bedrock-mantle, soit une clé d'API Amazon Bedrock transmise dans l'x-api-keyen-tête. Consultez clés d’API. -
Action IAM —
bedrock-mantle:CountTokens. L'autorisation est limitée à une ressource du formulaire Amazon Bedrock Project.arn:aws:bedrock-mantle:Le nom du projet par défaut estregion:account-id:project/project-namedefault. -
Support du SDK — Les AWS SDK n'exposent actuellement aucune méthode ciblant ce point de terminaison. Envoyez la demande au format SigV4-signed HTTP
POSTou utilisez n'importe quel client HTTP doté d'une clé d'API Amazon Bedrock. La méthodebedrock-runtimeclientcount_tokensne cible pas ce point de terminaison et renvoie une erreur de validation pour les modèles qui ne sont pas pris en charge surbedrock-runtime. -
Format d'erreur — Les erreurs suivent la forme anthropique :
{"type": "error", "request_id": "...", "error": {"type": "error-type", "message": "error-message"}}. Cela diffère de l'enveloppe d'erreur AWS JSON standard renvoyée parbedrock-runtime.
Note
Le count_tokens point de terminaison valide le corps de la demande en utilisant le même schéma que le point de terminaison d'inférence correspondant, de sorte que les champs de demande non pris en charge par le modèle sont rejetés avec le protocole HTTP 400. Par exemple, Anthropic Claude Opus 4.7 n'accepte pas strict: true tools[] les retourstools.0.custom.strict: Extra inputs are not permitted. Consultez la fiche du modèle pour connaître la surface fonctionnelle spécifique au modèle.
L'exemple suivant utilise une clé curl d'API Amazon Bedrock pour compter les jetons sur le bedrock-mantle point de terminaison :
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?"} ] }'
La réponse contient un input_tokens champ dont la valeur est le nombre de jetons pour l'entrée fournie.