Ir para o conteúdo

Como faço para verificar o número de tokens quando invoco um modelo no Amazon Bedrock?

3 minuto de leitura
0

Quero verificar o número de tokens de entrada e saída quando invoco um modelo no Amazon Bedrock.

Resolução

Observação: se você receber mensagens de erro ao executar comandos da AWS Command Line Interface (AWS CLI), consulte Solução de problemas da AWS CLI. Além disso, verifique se você está usando a versão mais recente da AWS CLI.

Para verificar a contagem de tokens, use um dos métodos a seguir.

Use um playground do Amazon Bedrock

Para usar um playground para verificar os tokens de entrada e saída quando você invocar o modelo, consulte Gerar respostas no console usando playgrounds.

Verifique os logs de invocação do modelo

Pré-requisito: você deve criar um destino para o qual entregar seus logs. É possível usar o Amazon Simple Storage Service (Amazon S3) para configurar um bucket do S3 ou usar o Amazon CloudWatch Logs para configurar um grupo de logs. Se você usar um bucket do S3, adicione uma política de bucket ao bucket que inclua a declaração de política da etapa 2 em Configurar um destino do Amazon S3. Se você usa um grupo de logs, crie um perfil do AWS Identity and Access Management (AWS IAM) que inclua a relação de confiança e a declaração de política da etapa 2 em Set up a CloudWatch Logs destination (Configurar um destino do CloudWatch Logs).

Para verificar os logs, conclua as seguintes etapas:

  1. Use o console do CloudWatch ou a API para ativar o registro em log em todas as invocações de modelo.
  2. Nos logs, veja o número de inputTokens e outputTokens para cada invocação de modelo.

Exemplo de log:

{
    "schemaType": "ModelInvocationLog",
    "schemaVersion": "1.0",
    "timestamp": "2025-03-31T21:34:03Z",
    "accountId": "123456789",
    "identity": {
        "arn": "arn:aws:sts::123456789:role/MyRole"
    },
    "region": "us-east-1",
    "requestId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx",
    "operation": "ConverseStream",
    "modelId": "amazon.nova-pro-v1:0",
    "input": {
        "inputContentType": "application/json",
        "inputBodyJson": {
            "messages": [
                {
                    "role": "user",
                    "content": [
                        {
                            "text": "Good morning."
                        }
                    ]
                }
            ],
            "inferenceConfig": {
                "maxTokens": 512,
                "temperature": 0.7,
                "topP": 0.9,
                "stopSequences": []
            },
            "additionalModelRequestFields": {}
        },
        "inputTokenCount": 3,
        "cacheReadInputTokenCount": 0,
        "cacheWriteInputTokenCount": 0
    },
    "output": {
        "outputContentType": "application/json",
        "outputBodyJson": {
            "output": {
                "message": {
                    "role": "assistant",
                    "content": [
                        {
                            "text": "Good morning! How can I assist you today? Whether you have questions, need information, or just want to chat, feel free to ask."
                        }
                    ]
                }
            },
            "stopReason": "end_turn",
            "metrics": {
                "latencyMs": 454
            },
            "usage": {
                "inputTokens": 3,
                "outputTokens": 29,
                "totalTokens": 32
            }
        },
        "outputTokenCount": 29
    }
}

Verifique a resposta da operação Converse

Use a AWS CLI para obter uma resposta da operação da API Converse.

Execute o seguinte comando bedrock-runtime com o comando converse:

aws bedrock-runtime converse \
    --region your-region\
    --model-id amazon.nova-pro-v1:0 \
    --messages '{"role": "user", "content": [{"text": "Hello"}]}'

Observação: o comando anterior obtém a contagem de tokens para o modelo amazon.nova-pro-v1:0. Substitua your-region pela sua região da AWS, model-id pelo ID do seu modelo e text pela sua própria mensagem.

Exemplo de resposta:

{
    "output": {
        "message": {
            "role": "assistant",
            "content": [
                {
                    "text": "Hello! It's nice to have you here. I'm here to help with whatever you might need. Whether you have a question, need assistance with a topic, or just want to chat, feel free to ask. What can I assist you with today?"
                }
            ]
        }
    },
    "stopReason": "end_turn",
    "usage": {
        "inputTokens": 1,
        "outputTokens": 54,
        "totalTokens": 55
    },
    "metrics": {
        "latencyMs": 852
    }
}