View a markdown version of this page

Configurar a telemetria do Vercel AI SDK para avaliações AgentCore - Base da Amazônia AgentCore

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Configurar a telemetria do Vercel AI SDK para avaliações AgentCore

Esta página explica como instrumentar um agente Vercel AI SDK, como as extensões são identificadas e como os campos de avaliação são extraídos. O Vercel AI SDK é uma TypeScript-only estrutura, portanto, todo o suporte nesta página se aplica aos TypeScript agentes.

nota

AgentCore As avaliações oferecem suporte ao Vercel AI SDK somente para TypeScript agentes. O Python não é suportado no momento.

Tópicos

TypeScript suporte de agentes

Um agente do Vercel AI SDK produz extensões sob o nome do escopo. @aws/aws-distro-opentelemetry-instrumentation-vercel-ai

Instrumente seu agente

Instrumente um agente Vercel AI SDK com o AWS Distro for OpenTelemetry (ADOT). Adicione o pacote de autoinstrumentação do AWS Distro Node (@aws/aws-distro-opentelemetry-node-autoinstrumentation) às suas dependências. Ele inclui a instrumentação integrada do Vercel AI, que é ativada na inicialização e emite o nome do escopo. @aws/aws-distro-opentelemetry-instrumentation-vercel-ai

package.json:

{ "dependencies": { "@aws/aws-distro-opentelemetry-node-autoinstrumentation": "^0.12.0" } }

A instrumentação segue as convenções semânticas da OpenTelemetry IA generativa: ela classifica as extensões e conduz a conversa em atributos. gen_ai.operation.name gen_ai.*

nota

A instrumentação é uma etapa na configuração da observabilidade. Para exportar a telemetria para avaliação, conclua a configuração completa em Configurar observabilidade.

Como os intervalos são identificados

A instrumentação de IA da Vercel define o gen_ai.operation.name atributo em cada extensão. O serviço de avaliação usa esse atributo para classificar extensões:

Tipo de extensão Atributo de identificação

Invoque o agente

gen_ai.operation.name = invoke_agent

Ferramenta de execução

gen_ai.operation.name = execute_tool

Inferência

gen_ai.operation.name = chat

Como os campos de avaliação são extraídos

O Vercel AI SDK serializa as mensagens em duas formas, e o AgentCore Evaluations lê as duas:

  • Uma forma de ditado de objeto na entrada do agente de invocação e dos intervalos de inferência, na qual gen_ai.input.messages há um objeto JSON com um system campo (o prompt do sistema) e uma messages matriz (por exemplo,). {"system": "…​", "messages": [{"role": "user", "content": "…​"}]}

  • Uma forma de lista de partes na saída, na qual cada mensagem carrega uma parts matriz de blocos de conteúdo digitado (por exemplo,). [{"role": "assistant", "parts": [{"type": "text", "content": "…​"}]}]

AgentCore As avaliações retiram o texto das duas formas: a solicitação do usuário da última mensagem do usuário na entrada, a solicitação do sistema do system campo e a resposta do agente das partes do texto da saída.

A instrumentação de IA da Vercel usa telemetria unificada, para que o conteúdo da conversa permaneça no espaço como atributos:

  • Solicitação do usuário e resposta do agente: de gen_ai.input.messages e gen_ai.output.messages para o intervalo do agente de invocação.

  • Prompt do sistema: do system campo do ditado do objeto em. gen_ai.input.messages

  • Chamada de ferramenta: o nome da ferramentagen_ai.tool.name, os argumentos e o resultado de gen_ai.tool.call.arguments egen_ai.tool.call.result, no intervalo da ferramenta de execução.

Para obter mais informações, consulte Exemplos de períodos de um TypeScript agente.

Exemplos de períodos de um agente TypeScript

Com a telemetria unificada, o conteúdo da conversa permanece nos atributos de amplitude e nenhum registro de evento separado é produzido. Os exemplos a seguir são de um agente de planejamento de viagens do TypeScript Vercel AI SDK implantado no Amazon Bedrock AgentCore Runtime, usando um modelo Amazon Bedrock.

nota

Esses exemplos não são extensões completas. Eles mostram dados representativos de uma interação real do agente, com alguns campos omitidos e valores longos truncados para facilitar a leitura.

exemplo
Invoke agent span

O gen_ai.operation.name atributo (invoke_agent) identifica isso como uma extensão do agente de invocação. O gen_ai.input.messages atributo mantém o aviso e a conversa do sistema na forma de ditado de objeto e gen_ai.output.messages mantém a resposta do agente na forma de lista de peças.

{ "traceId": "6a6bd3b14c8d91ed1e70a3906b551618", "spanId": "fa0dce44446e3d24", "name": "invoke_agent", "kind": "INTERNAL", "scope": { "name": "@aws/aws-distro-opentelemetry-instrumentation-vercel-ai", "version": "0.12.0" }, "attributes": { "gen_ai.operation.name": "invoke_agent", "gen_ai.provider.name": "aws.bedrock", "gen_ai.request.model": "us.anthropic.claude-sonnet-4-5-20250929-v1:0", "gen_ai.input.messages": "{\"system\": \"You are a travel planning assistant ...\", \"messages\": [{\"role\": \"user\", \"content\": \"Hey, how can you help me\"}]}", "gen_ai.output.messages": "[{\"role\": \"assistant\", \"parts\": [{\"type\": \"text\", \"content\": \"Hello! I'm your travel planning assistant ...\"}]}]", "session.id": "sea-nyc-trip-2-turns" }, "status": { "code": "OK" } }
Execute tool span

O gen_ai.operation.name atributo (execute_tool) identifica isso como uma extensão da ferramenta de execução; gen_ai.tool.name contém o nome da ferramenta. O gen_ai.tool.call.arguments atributo contém os argumentos da ferramenta e o gen_ai.tool.call.result atributo contém o resultado da ferramenta.

{ "traceId": "6a6bd3b14c8d91ed1e70a3906b551618", "spanId": "b64c37adefae74f0", "name": "execute_tool search_flights", "kind": "INTERNAL", "scope": { "name": "@aws/aws-distro-opentelemetry-instrumentation-vercel-ai", "version": "0.12.0" }, "attributes": { "gen_ai.operation.name": "execute_tool", "gen_ai.tool.name": "search_flights", "gen_ai.tool.type": "function", "gen_ai.tool.call.id": "toolu_bdrk_01LzXXJCfpfuS7Bpf7e1qLMg", "gen_ai.tool.call.arguments": "{\"origin\": \"SEA\", \"destination\": \"NYC\", \"date\": \"2025-03-15\"}", "gen_ai.tool.call.result": "{\"origin\": \"SEA\", \"destination\": \"NYC\", \"flights\": [ ... ]}", "session.id": "sea-nyc-trip-2-turns" }, "status": { "code": "OK" } }
Inference span

O gen_ai.operation.name atributo (chat) identifica isso como um intervalo de inferência. Ele carrega os metadados do modelo egen_ai.tool.definitions, na lista de ferramentas disponíveis para o agente. As mensagens de conversa para a chamada modelo estão em gen_ai.input.messages (formato de ditado de objeto) e gen_ai.output.messages (formato de lista de peças).

{ "traceId": "6a6bd3b14c8d91ed1e70a3906b551618", "spanId": "1865614ca1b88dfb", "name": "chat us.anthropic.claude-sonnet-4-5-20250929-v1:0", "kind": "INTERNAL", "scope": { "name": "@aws/aws-distro-opentelemetry-instrumentation-vercel-ai", "version": "0.12.0" }, "attributes": { "gen_ai.operation.name": "chat", "gen_ai.provider.name": "aws.bedrock", "gen_ai.request.model": "us.anthropic.claude-sonnet-4-5-20250929-v1:0", "gen_ai.response.model": "us.anthropic.claude-sonnet-4-5-20250929-v1:0", "gen_ai.usage.input_tokens": 1258, "gen_ai.usage.output_tokens": 241, "gen_ai.input.messages": "{\"system\": \"You are a travel planning assistant ...\", \"messages\": [{\"role\": \"user\", \"content\": \"Hey, how can you help me\"}]}", "gen_ai.output.messages": "[{\"role\": \"assistant\", \"parts\": [{\"type\": \"text\", \"content\": \"Hello! I'm your travel planning assistant ...\"}]}]", "gen_ai.tool.definitions": "[{\"type\": \"function\", \"name\": \"search_flights\", \"description\": \"Search for available flights between cities.\", ...}]", "session.id": "sea-nyc-trip-2-turns" }, "status": { "code": "OK" } }