View a markdown version of this page

Monitoraggio dell’utilizzo dei token contando i token prima di eseguire l’inferenza - Amazon Bedrock

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Monitoraggio dell’utilizzo dei token contando i token prima di eseguire l’inferenza

Quando esegui l’inferenza del modello, il numero di token inviati nell’input contribuisce al costo della richiesta e alla quota di token che puoi utilizzare al minuto e al giorno. L'CountTokensAPI consente di stimare l'utilizzo dei token prima di inviare richieste ai modelli di base restituendo il conteggio dei token che verrebbe utilizzato se lo stesso input fosse inviato al modello in una richiesta di inferenza.

Nota

L'utilizzo dell'CountTokensAPI non comporta costi.

Nota

Alcuni modelli Anthropic Claude, compresi quelli che vengono avviati con l'inferenza tra regioni (CRIS) solo in modalità attiva, non supportano l'attivazione. bedrock-runtime CountTokensbedrock-runtime Per questi modelli, contate i token di input chiamando invece l'API di Anthropic sull'endpoint. count_tokens bedrock-mantle Vedi Conta i token usando l'endpoint bedrock-mantle l'URL, il corpo della richiesta e un esempio.

Il conteggio dei token è specifico per ogni modello, poiché modelli diversi utilizzano strategie di tokenizzazione diverse. Il conteggio dei token restituito da questa operazione corrisponderà al conteggio dei token che verrebbe addebitato se lo stesso input fosse inviato al modello per eseguire l’inferenza.

Puoi usare l’API CountTokens per effettuare quanto segue:

  • Stimare i costi prima di inviare richieste di inferenza.

  • Ottimizzare i prompt per adattarli ai limiti dei token.

  • Pianificare l’utilizzo dei token nelle applicazioni.

Modelli e Regioni supportati per il conteggio dei token

Per vedere quali modelli supportano il conteggio dei token, consulta la sezione Modelli a colpo d'occhio e scegli il modello che ti interessa.

Conta i token utilizzando l'endpoint bedrock-runtime

Per contare il numero di token di input in una richiesta di inferenza, invia una CountTokensrichiesta con un endpoint di runtime Amazon Bedrock, specifica il modello nell'intestazione e l'input per cui contare i token nel campo. body Il valore del body campo dipende dal fatto che tu stia contando i token di input per una richiesta o Converse: InvokeModel

  • Per una richiesta InvokeModel, il formato di body è una stringa che rappresenta un oggetto JSON il cui formato dipende dal modello specificato.

  • Per una richiesta Converse, il formato di body è un oggetto JSON che specifica i prompt messages e system inclusi nella conversazione.

Esempio: conta i token per una richiesta bedrock-runtime

Gli esempi in questa sezione consentono di contare i token per una richiesta InvokeModel e Converse con Anthropic Claude 3 Haiku.

Prerequisiti
  • Hai scaricato AWS SDK per Python (Boto3) e la configurazione è configurata in modo tale che le tue credenziali e la AWS regione predefinita vengano riconosciute automaticamente.

  • L’identità IAM dispone delle autorizzazioni per le seguenti azioni (per ulteriori informazioni, consulta Azioni, risorse e chiavi di condizione per Amazon Bedrock):

    • bedrock: CountTokens — Consente l'utilizzo di. CountTokens

    • bedrock: InvokeModel — Consente l'utilizzo di InvokeModel e. Converse Dovrebbe essere limitato aarn:${Partition}:bedrock:${Region}::foundation-model/anthropic.claude-3-haiku-20240307-v1:0, come minimo.

Per provare a contare i token per una InvokeModelrichiesta, esegui il seguente codice 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"])

Per provare a contare i token per una richiesta Converse, esegui il seguente codice 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"])

Conta i token usando l'endpoint bedrock-mantle

L'bedrock-mantleendpoint espone l'API di Anthropic all'indirizzo. count_tokens /anthropic/v1/messages/count_tokens Usalo per contare i token di input per i modelli Anthropic Claude che non supportano CountTokensonbedrock-runtime, ad esempio, quando il modello viene offerto solo tramite l'inferenza interregionale (CRIS) e quindi non ha un endpoint su bedrock-runtime cui puntare. Region-specific CountTokens Il /anthropic/v1/messages percorso è: modelli non antropici in cambio. Claude-specific bedrock-mantle The model 'X' does not support the '/anthropic/v1/messages' API

Dettagli della richiesta
  • URL —. POST https://bedrock-mantle.region.api.aws/anthropic/v1/messages/count_tokens Per un elenco delle Regioni supportate, consulta Regioni ed endpoint supportati.

  • Corpo della richiesta: la count_tokens forma antropica modelmessages, inclusi tools i campi opzionali system e. Vedi il riferimento al conteggio dei token dei messaggi antropici.

  • Autenticazione: una firma SigV4 con il nome del bedrock-mantle servizio o una chiave API Amazon Bedrock passata nell'intestazione. x-api-key Per informazioni, consulta Chiavi API.

  • Azione IAM:. bedrock-mantle:CountTokens L'autorizzazione si riferisce a una risorsa Amazon Bedrock Project del modulo. arn:aws:bedrock-mantle:region:account-id:project/project-name Il nome predefinito del progetto è. default

  • Supporto SDK: attualmente gli AWS SDK non espongono un metodo destinato a questo endpoint. Invia la richiesta come SigV4-signed HTTP POST o utilizza qualsiasi client HTTP con una chiave API Amazon Bedrock. Il metodo bedrock-runtime client count_tokens non si rivolge a questo endpoint e restituisce un errore di convalida per i modelli su cui non sono supportati. bedrock-runtime

  • Formato dell'errore: gli errori seguono la forma antropica:. {"type": "error", "request_id": "...", "error": {"type": "error-type", "message": "error-message"}} Ciò differisce dalla busta di errore AWS JSON standard restituita da. bedrock-runtime

Nota

L'count_tokensendpoint convalida il corpo della richiesta utilizzando lo stesso schema dell'endpoint di inferenza corrispondente, pertanto i campi di richiesta che il modello non supporta vengono rifiutati con HTTP 400. Ad esempio, Anthropic Claude Opus 4.7 non accetta e restituisce. strict: true tools[] tools.0.custom.strict: Extra inputs are not permitted Consultate la scheda del modello per la superficie delle caratteristiche specifiche del modello.

L'esempio seguente utilizza curl una chiave API Amazon Bedrock per contare i token sull'bedrock-mantleendpoint:

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 risposta contiene un input_tokens campo il cui valore è il conteggio dei token per l'input fornito.