View a markdown version of this page

Configurer la télémétrie des agents Strands pour les évaluations AgentCore - Base rocheuse de l'Amazonie AgentCore

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.

Configurer la télémétrie des agents Strands pour les évaluations AgentCore

Cette page explique comment instrumenter un agent Strands Agents, comment les intervalles sont identifiés et comment les champs d'évaluation sont extraits.

Rubriques

AgentCore Evaluations prend en charge les agents Strands créés avec le SDK Python et le TypeScript SDK. Les deux produisent les mêmes types d'étendue, les mêmes attributs d'identification et la même mise en page du contenu, sous des noms de portée différents, de sorte que le service d'évaluation les lit de la même manière. Cette page couvre chaque langage séparément : pour Python, voir le support des agents Python  ; pour cela TypeScript, voir le support des TypeScript agents.

Support pour les agents Python

Un agent Python Strands produit des spans sous le nom strands.telemetry.tracer de scope.

Instrumentez votre agent

Le SDK Strands Agents inclut une télémétrie intégrée et ne nécessite aucune bibliothèque d'instrumentation supplémentaire. Il produit des spans et des enregistrements d'événements sous le nom strands.telemetry.tracer de scope. Lorsqu'il est déployé sur Amazon Bedrock AgentCore Runtime avec le AWS Distro for OpenTelemetry (ADOT), le Runtime injecte l'session.idattribut et exporte automatiquement les spans et les enregistrements d'événements.

Note

L'instrumentation est l'une des étapes de la mise en place de l'observabilité. Pour exporter la télémétrie à des fins d'évaluation, effectuez la configuration complète dans Configurer l'observabilité.

Comment les travées sont identifiées

Strands définit l'gen_ai.operation.nameattribut sur chaque travée. Le service d'évaluation utilise cet attribut pour classer les spans :

Type d'envergure Attribut d'identification Exemple de nom de span

Invoquer un agent

gen_ai.operation.name = invoke_agent

invoke_agent TravelAgent

Outil d'exécution

gen_ai.operation.name = execute_tool

execute_tool search_flights

Inférence

gen_ai.operation.name = chat

chat

Comment sont extraits les champs d'évaluation

L'emplacement du contenu de la conversation dépend du mode de diffusion de la télémétrie. Avec la télémétrie fractionnée, le contenu se trouve dans un enregistrement d'événement distinct. Grâce à la télémétrie unifiée, le contenu reste sur la plage, au fur et à mesure que les événements y sont associés. Pour plus d'informations, consultez la section Configuration et diffusion de la télémétrie. L'attribut d'identification (gen_ai.operation.name) se trouve sur la plage dans les deux modes.

À partir des enregistrements d'événements

Grâce à la télémétrie fractionnée, le service lit le contenu de l'enregistrement de l'événement en corrélation avec chaque intervalle :

  • Invite utilisateur  : à partir des messages d'entrée de l'agent (input.messages), le contenu du message avec un rôle utilisateur.

  • Réponse de l'agent  : à partir des messages de sortie de l'agent (output.messages), le contenu du message avec un rôle d'assistant.

  • Appel d'outil  : nom de l'outil figurant dans l'gen_ai.tool.nameattribut de l'étendue de l'outil d'exécution. Les arguments et le résultat de l'outil proviennent de l'enregistrement d'événements de cette plage (inputetoutput).

Pour plus d'informations, voir Exemples de plages dans la télémétrie fractionnée.

À partir d'événements de span en ligne

Grâce à la télémétrie unifiée, le même contenu est diffusé dans des événements de span en ligne au lieu d'un enregistrement d'événement distinct :

  • Invite utilisateur  : depuis l'gen_ai.user.messageévénement, l'contentattribut.

  • Réponse de l'agent  : depuis l'gen_ai.choiceévénement, l'messageattribut.

  • Appel d'outil  : nom de l'outil indiqué dans l'gen_ai.tool.nameattribut de la travée. Les arguments de l'outil proviennent de l'gen_ai.tool.messageévénement et le résultat provient de l'gen_ai.choiceévénement.

Pour plus d'informations, consultez la section Exemples de plages de télémétrie unifiée.

Exemples de plages dans la télémétrie fractionnée

Avec la télémétrie fractionnée, la plage contient les attributs d'identification et le contenu est enregistré dans un enregistrement d'événements corrélé. Les exemples suivants proviennent d'un agent de planification de voyages Python Strands déployé sur Amazon AgentCore Bedrock Runtime.

Note

Ces exemples ne constituent pas des séries complètes. Ils présentent des données représentatives provenant d'une interaction réelle entre agents, certains champs étant omis et les valeurs longues tronquées pour des raisons de lisibilité.

Exemple
Invoke agent span

L'gen_ai.operation.nameattribut (invoke_agent) l'identifie comme une étendue d'agent d'invocation. L'gen_ai.agent.toolsattribut répertorie les outils mis à la disposition de l'agent.

{ "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" } }

L'enregistrement d'événements corrélé contient le contenu de la conversation. L'invite utilisateur est le message du rôle de l'utilisateur et la réponse de l'agent est le message du rôle de l'assistant. input.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

L'gen_ai.operation.nameattribut (execute_tool) l'identifie comme une étendue d'outil d'exécution. L'gen_ai.tool.nameattribut contient le nom de l'outil.

{ "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" } }

L'enregistrement d'événement corrélé contient l'entrée (arguments) et la sortie (résultat) de l'outil.

{ "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" } } ] } } }

Exemples de plages en télémétrie unifiée

Grâce à la télémétrie unifiée, le même contenu est diffusé dans des événements de plage en ligne sur la plage, sans enregistrement d'événement distinct. Les exemples suivants proviennent d'un agent de planification de voyages Python Strands.

Note

Ces exemples ne constituent pas des séries complètes. Ils présentent des données représentatives provenant d'une interaction réelle entre agents, certains champs étant omis et les valeurs longues tronquées pour des raisons de lisibilité.

Exemple
Invoke agent span

L'gen_ai.user.messageévénement contient l'invite de l'utilisateur et la gen_ai.choice réponse de l'agent.

{ "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

L'gen_ai.tool.messageévénement contient les arguments de l'outil et contient le gen_ai.choice résultat de l'outil.

{ "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 assistance aux agents

Un agent TypeScript Strands produit des spans sous le nom strands-agents de scope. Il émet les mêmes types de span et la même disposition de contenu qu'un agent Python, de sorte que le service d'évaluation le lit de la même manière.

Instrumentez votre agent

Le SDK TypeScript Strands Agents (@strands-agents/sdk>= 1.5.0) inclut une télémétrie intégrée et ne nécessite aucune bibliothèque d'instrumentation supplémentaire. Lorsqu'il est déployé sur Amazon Bedrock AgentCore Runtime avec le AWS Distro for OpenTelemetry (ADOT), le Runtime injecte l'session.idattribut et exporte automatiquement les spans et les enregistrements d'événements. Le TypeScript SDK produit des spans sous le nom de scope. strands-agents

Note

L'instrumentation est l'une des étapes de la mise en place de l'observabilité. Pour exporter la télémétrie à des fins d'évaluation, effectuez la configuration complète dans Configurer l'observabilité.

Comment les travées sont identifiées

L'identification du span est la même que pour un agent Python. L'gen_ai.operation.nameattribut classe chaque étendue. Pour les valeurs et des exemples de noms de spans, voir Comment les spans sont identifiées dans le cadre du support Support pour les agents Python Python.

Comment sont extraits les champs d'évaluation

L'extraction de champs est la même que pour un agent Python. Le contenu de la conversation est diffusé dans des événements de span en ligne (gen_ai.user.messagegen_ai.choice, etgen_ai.tool.message). Pour savoir d'où chaque champ est lu, voir From inline span events sous support Support pour les agents Python Python.

Exemples de spans provenant d'un agent TypeScript

Les exemples suivants proviennent d'un agent de planification de voyages TypeScript Strands déployé sur Amazon AgentCore Bedrock Runtime.

Note

Ces exemples ne constituent pas des séries complètes. Ils présentent des données représentatives provenant d'une interaction réelle entre agents, certains champs étant omis et les valeurs longues tronquées pour des raisons de lisibilité.

Exemple
Invoke agent span

L'gen_ai.operation.nameattribut (invoke_agent) l'identifie comme une étendue d'agent d'invocation et gen_ai.agent.tools répertorie les outils disponibles pour l'agent. L'gen_ai.user.messageévénement contient l'invite de l'utilisateur et la gen_ai.choice réponse de l'agent.

{ "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

L'gen_ai.operation.nameattribut (execute_tool) l'identifie comme une étendue d'outil d'exécution ; gen_ai.tool.name contient le nom de l'outil. L'gen_ai.tool.messageévénement contient les arguments de l'outil et contient le gen_ai.choice résultat de l'outil.

{ "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" } } ] }