View a markdown version of this page

Configurar la telemetría de Strands Agents para las evaluaciones AgentCore - Base amazónica AgentCore

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Configurar la telemetría de Strands Agents para las evaluaciones AgentCore

En esta página se explica cómo utilizar un agente de Strands Agents, cómo se identifican los intervalos y cómo se extraen los campos de evaluación.

Temas

AgentCore Evaluations admite los agentes de Strands creados con el SDK y el TypeScript SDK de Python. Los dos producen los mismos tipos de segmentos, atributos de identificación y diseño de contenido, con diferentes nombres de ámbito, por lo que el servicio de evaluación los lee de la misma manera. Esta página trata cada idioma por separado: para Python, consulte la compatibilidad con agentes de Python; para ello TypeScript, consulte la compatibilidad con TypeScript agentes.

Soporte de agentes de Python

Un agente de Python Strands produce intervalos bajo el nombre strands.telemetry.tracer del ámbito.

Instrumenta a tu agente

El SDK de Strands Agents incluye telemetría integrada y no requiere ninguna biblioteca de instrumentación adicional. Genera intervalos y registros de eventos con el nombre del ámbito. strands.telemetry.tracer Cuando se implementa en Amazon Bedrock AgentCore Runtime con la AWS distribución para OpenTelemetry (ADOT), el Runtime inyecta el session.id atributo y exporta automáticamente los intervalos y los registros de eventos.

nota

La instrumentación es un paso para configurar la observabilidad. Para exportar la telemetría para su evaluación, complete la configuración completa en Configurar la observabilidad.

Cómo se identifican los intervalos

Strands establece el gen_ai.operation.name atributo en cada tramo. El servicio de evaluación usa este atributo para clasificar los tramos:

Tipo de intervalo Atributo identificativo Ejemplo de nombre de intervalo

Invocar al agente

gen_ai.operation.name = invoke_agent

invoke_agent TravelAgent

Ejecute la herramienta

gen_ai.operation.name = execute_tool

execute_tool search_flights

Inferencia

gen_ai.operation.name = chat

chat

Cómo se extraen los campos de evaluación

La ubicación del contenido de la conversación depende del modo de entrega de la telemetría. Con la telemetría dividida, el contenido está en un registro de eventos independiente. Con la telemetría unificada, el contenido permanece en el espacio, ya que los eventos se adjuntan a él. Para obtener más información, consulte Configuración y entrega de telemetría. El atributo de identificación (gen_ai.operation.name) está en el intervalo en ambos modos.

De los registros de eventos

Con la telemetría dividida, el servicio lee el contenido del registro de eventos en relación con cada intervalo:

  • Solicitud de usuario: a partir de los mensajes introducidos por el agente (input.messages), el contenido del mensaje con un rol de usuario.

  • Respuesta del agente: de los mensajes de salida del agente (output.messages), el contenido del mensaje con función de asistente.

  • Llamada a la herramienta: el nombre de la herramienta del gen_ai.tool.name atributo del conjunto de herramientas de ejecución. Los argumentos y el resultado de la herramienta provienen del registro de eventos de ese intervalo (inputyoutput).

Para obtener más información, consulte el ejemplo de intervalos en telemetría dividida.

A partir de eventos de intervalo en línea

Con la telemetría unificada, los eventos de intervalo en línea contienen el mismo contenido en lugar de en un registro de eventos independiente:

  • Solicitud de usuario: desde el gen_ai.user.message evento, el atributo. content

  • Respuesta del agente: desde el gen_ai.choice evento, el message atributo.

  • Llamada a la herramienta: el nombre de la herramienta del gen_ai.tool.name atributo del intervalo. Los argumentos de la herramienta provienen del gen_ai.tool.message evento y el resultado proviene del gen_ai.choice evento.

Para obtener más información, consulte Ejemplos de intervalos en telemetría unificada.

Ejemplos de intervalos en telemetría dividida

Con la telemetría dividida, el intervalo contiene los atributos de identificación y el contenido se encuentra en un registro de eventos correlacionado. Los siguientes ejemplos provienen de un agente de planificación de viajes de Python Strands implementado en Amazon Bedrock Runtime. AgentCore

nota

Estos ejemplos no son tramos completos. Muestran datos representativos de una interacción real con un agente; se omiten algunos campos y se truncan los valores largos para facilitar la lectura.

ejemplo
Invoke agent span

El gen_ai.operation.name atributo (invoke_agent) lo identifica como un intervalo de agentes de invocación. El gen_ai.agent.tools atributo muestra las herramientas disponibles para el agente.

{ "traceId": "69e9cc4771d7cabe0d8e8cea33b6b338", "spanId": "d24936b8989b6d42", "parentSpanId": "0ff3498548044e4b", "name": "invoke_agent TravelAgent", "kind": "INTERNAL", "scope": { "name": "strands.telemetry.tracer", "version": "" }, "startTimeUnixNano": 1776929864011990383, "endTimeUnixNano": 1776929869634304466, "durationNano": 5622314083, "attributes": { "gen_ai.operation.name": "invoke_agent", "gen_ai.system": "strands-agents", "gen_ai.agent.name": "TravelAgent", "gen_ai.request.model": "us.anthropic.claude-sonnet-4-20250514-v1:0", "gen_ai.usage.input_tokens": 983, "gen_ai.usage.output_tokens": 232, "gen_ai.usage.total_tokens": 1215, "gen_ai.agent.tools": "[\"search_flights\", \"book_flight\", \"search_hotels\", \"book_hotel\", \"search_activities\", \"book_activity\"]", "session.id": "sea-nyc-trip-2-turns-adot_v17-20260423003743" }, "status": { "code": "OK" } }

El registro de eventos correlacionados contiene el contenido de la conversación. La solicitud de usuario es el mensaje con el rol del usuario y la respuesta del agente es el mensaje con el rol de asistente eninput.messages. output.messages

{ "spanId": "d24936b8989b6d42", "traceId": "69e9cc4771d7cabe0d8e8cea33b6b338", "scope": { "name": "strands.telemetry.tracer" }, "body": { "input": { "messages": [ { "role": "user", "content": "Hey, how can you help me" } ] }, "output": { "messages": [ { "role": "assistant", "content": { "message": "Hi there! I'm your travel planning assistant ...", "finish_reason": "end_turn" } } ] } } }
Execute tool span

El gen_ai.operation.name atributo (execute_tool) lo identifica como un conjunto de herramientas de ejecución. El gen_ai.tool.name atributo contiene el nombre de la herramienta.

{ "traceId": "69e9cc4d132b180909ba49f613f273dd", "spanId": "fff785ce12d6fda8", "parentSpanId": "96915bf5ecc78743", "name": "execute_tool search_flights", "kind": "INTERNAL", "scope": { "name": "strands.telemetry.tracer", "version": "" }, "startTimeUnixNano": 1776929872258292842, "endTimeUnixNano": 1776929872259611427, "durationNano": 1318585, "attributes": { "gen_ai.operation.name": "execute_tool", "gen_ai.tool.name": "search_flights", "gen_ai.tool.call.id": "tooluse_hiWwdtThuD67G5cK8cp5mj", "gen_ai.tool.status": "success", "gen_ai.tool.description": "Search for available flights between cities.", "session.id": "sea-nyc-trip-2-turns-adot_v17-20260423003743" }, "status": { "code": "OK" } }

El registro de eventos correlacionados contiene la entrada (argumentos) y la salida (resultado) de la herramienta.

{ "spanId": "fff785ce12d6fda8", "traceId": "69e9cc4d132b180909ba49f613f273dd", "scope": { "name": "strands.telemetry.tracer" }, "body": { "input": { "messages": [ { "role": "tool", "content": { "content": "{\"origin\": \"SEA\", \"destination\": \"NYC\", \"date\": \"2025-03-15\"}", "role": "tool", "id": "tooluse_hiWwdtThuD67G5cK8cp5mj" } } ] }, "output": { "messages": [ { "role": "assistant", "content": { "message": "[{\"text\": \"{\\\"origin\\\": \\\"SEA\\\", \\\"destination\\\": \\\"NYC\\\", \\\"flights\\\": [ ... ]}\"}]", "id": "tooluse_hiWwdtThuD67G5cK8cp5mj" } } ] } } }

Los ejemplos abarcan la telemetría unificada

Con la telemetría unificada, el mismo contenido se incluye en los eventos interconectados del mismo intervalo, sin ningún registro de eventos independiente. Los siguientes ejemplos provienen de un agente de planificación de viajes de Python Strands.

nota

Estos ejemplos no son tramos completos. Muestran datos representativos de una interacción real con un agente; se omiten algunos campos y se truncan los valores largos para facilitar la lectura.

ejemplo
Invoke agent span

El gen_ai.user.message evento contiene la solicitud del usuario y la respuesta del gen_ai.choice agente.

{ "traceId": "69e9cc4771d7cabe0d8e8cea33b6b338", "spanId": "d2ee0e4765cc773e", "name": "invoke_agent TravelAgent", "kind": "INTERNAL", "scope": { "name": "strands.telemetry.tracer" }, "attributes": { "gen_ai.operation.name": "invoke_agent", "gen_ai.agent.name": "TravelAgent", "session.id": "sea-nyc-trip-2-turns-unified" }, "events": [ { "name": "gen_ai.user.message", "attributes": { "content": "[{\"text\": \"Hey, how can you help me\"}]" } }, { "name": "gen_ai.choice", "attributes": { "message": "Hi there! I'm your travel planning assistant ...", "finish_reason": "end_turn" } } ] }
Execute tool span

El gen_ai.tool.message evento contiene los argumentos de la herramienta y el gen_ai.choice resultado de la herramienta.

{ "traceId": "69e9cc4d132b180909ba49f613f273dd", "spanId": "0a988e27758ebb53", "name": "execute_tool search_flights", "kind": "INTERNAL", "scope": { "name": "strands.telemetry.tracer" }, "attributes": { "gen_ai.operation.name": "execute_tool", "gen_ai.tool.name": "search_flights", "gen_ai.tool.call.id": "tooluse_JuGterOaZfQV2c55Rp3S7C", "gen_ai.tool.status": "success", "session.id": "sea-nyc-trip-2-turns-unified" }, "events": [ { "name": "gen_ai.tool.message", "attributes": { "content": "{\"origin\": \"SEA\", \"destination\": \"NYC\", \"date\": \"2025-03-15\"}", "role": "tool", "id": "tooluse_JuGterOaZfQV2c55Rp3S7C" } }, { "name": "gen_ai.choice", "attributes": { "message": "[{\"text\": \"{\\\"origin\\\": \\\"SEA\\\", \\\"destination\\\": \\\"NYC\\\", \\\"flights\\\": [ ... ]}\"}]", "id": "tooluse_JuGterOaZfQV2c55Rp3S7C" } } ] }

TypeScript soporte de agentes

Un agente de TypeScript Strands produce tramos con el nombre strands-agents de alcance. Emite los mismos tipos de extensión y diseño de contenido que un agente de Python, por lo que el servicio de evaluación lo lee de la misma manera.

Instrumente a su agente

El SDK de TypeScript Strands Agents (@strands-agents/sdk>= 1.5.0) incluye telemetría integrada y no requiere ninguna biblioteca de instrumentación adicional. Cuando se implementa en Amazon Bedrock AgentCore Runtime con AWS Distro for OpenTelemetry (ADOT), el Runtime inyecta el session.id atributo y exporta los intervalos y los registros de eventos automáticamente. El TypeScript SDK produce intervalos bajo el nombre del ámbito. strands-agents

nota

La instrumentación es un paso para configurar la observabilidad. Para exportar la telemetría para su evaluación, complete la configuración completa en Configurar la observabilidad.

Cómo se identifican los intervalos

La identificación del intervalo es la misma que la de un agente de Python. El gen_ai.operation.name atributo clasifica cada intervalo. Para ver los valores y ejemplos de nombres de grupos, consulte Cómo se identifican los intervalos en la sección Compatibilidad con Python.

Cómo se extraen los campos de evaluación

La extracción de campos es la misma que la de un agente de Python. El contenido de la conversación se incluye en eventos interconectados (gen_ai.user.message,gen_ai.choice, ygen_ai.tool.message). Para saber desde dónde se lee cada campo, consulte Desde eventos de intervalo en línea, en la sección Soporte para Python.

Ejemplos de intervalos de un agente TypeScript

Los siguientes ejemplos provienen de un agente de planificación de viajes de TypeScript Strands implementado en Amazon Bedrock Runtime. AgentCore

nota

Estos ejemplos no son tramos completos. Muestran datos representativos de una interacción real con un agente; se omiten algunos campos y se truncan los valores largos para facilitar la lectura.

ejemplo
Invoke agent span

El gen_ai.operation.name atributo (invoke_agent) lo identifica como un intervalo de agentes de invocación y gen_ai.agent.tools enumera las herramientas disponibles para el agente. El gen_ai.user.message evento contiene la solicitud del usuario y la gen_ai.choice respuesta del agente.

{ "traceId": "6a6bc695459e41aa14a172bb41d3246d", "spanId": "c2c44e69bdab6ef1", "parentSpanId": "f18d96d107e793ba", "name": "invoke_agent Strands Agent", "kind": "INTERNAL", "scope": { "name": "strands-agents", "version": "" }, "attributes": { "gen_ai.operation.name": "invoke_agent", "gen_ai.agent.name": "Strands Agent", "gen_ai.system": "strands-agents", "gen_ai.request.model": "global.anthropic.claude-sonnet-4-5-20250929-v1:0", "gen_ai.agent.tools": "[\"search_flights\", \"book_flight\", \"search_hotels\", \"book_hotel\", \"search_activities\", \"book_activity\"]", "session.id": "sea-nyc-trip-2-turns" }, "events": [ { "name": "gen_ai.user.message", "attributes": { "content": "[{\"text\": \"Hey, how can you help me\"}]" } }, { "name": "gen_ai.choice", "attributes": { "message": "Hello! I'm your travel planning assistant, and I can help you with the following: ..." } } ] }
Execute tool span

El gen_ai.operation.name atributo (execute_tool) lo identifica como un conjunto de herramientas de ejecución; gen_ai.tool.name contiene el nombre de la herramienta. El gen_ai.tool.message evento contiene los argumentos de la herramienta y el gen_ai.choice evento contiene el resultado de la herramienta.

{ "traceId": "6a6bc69e6eaa1e994481bef349f4c72e", "spanId": "4227ac5525f22dd2", "parentSpanId": "8a989e0dbb9dc22f", "name": "execute_tool search_flights", "kind": "INTERNAL", "scope": { "name": "strands-agents", "version": "" }, "attributes": { "gen_ai.operation.name": "execute_tool", "gen_ai.tool.name": "search_flights", "gen_ai.tool.call.id": "tooluse_AoP0OTnq2YcOZDvY7ldSUQ", "gen_ai.tool.status": "success", "session.id": "sea-nyc-trip-2-turns" }, "events": [ { "name": "gen_ai.tool.message", "attributes": { "content": "{\"origin\": \"SEA\", \"destination\": \"NYC\", \"date\": \"2025-03-15\"}", "role": "tool", "id": "tooluse_AoP0OTnq2YcOZDvY7ldSUQ" } }, { "name": "gen_ai.choice", "attributes": { "message": "[{\"text\": \"{\\\"origin\\\": \\\"SEA\\\", \\\"destination\\\": \\\"NYC\\\", \\\"flights\\\": [ ... ]}\"}]", "id": "tooluse_AoP0OTnq2YcOZDvY7ldSUQ" } } ] }