View a markdown version of this page

Siapkan telemetri Strands Agents untuk Evaluasi AgentCore - Batu Dasar Amazon AgentCore

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Siapkan telemetri Strands Agents untuk Evaluasi AgentCore

Halaman ini menjelaskan cara instrumen agen Strands Agents, bagaimana rentang diidentifikasi, dan bagaimana bidang evaluasi diekstraksi.

Topik

AgentCore Evaluasi mendukung agen Strands yang dibangun dengan Python SDK dan TypeScript SDK. Keduanya menghasilkan tipe rentang yang sama, mengidentifikasi atribut, dan tata letak konten, di bawah nama cakupan yang berbeda, sehingga layanan evaluasi membacanya dengan cara yang sama. Halaman ini mencakup setiap bahasa secara terpisah: untuk Python, lihat dukungan agen Python; untuk TypeScript, lihat dukungan TypeScript agen.

Dukungan agen Python

Agen Python Strands menghasilkan rentang di bawah nama strands.telemetry.tracer lingkup.

Instrumentasikan agen Anda

Strands Agents SDK menyertakan telemetri bawaan dan tidak memerlukan pustaka instrumentasi tambahan. Ini menghasilkan rentang dan catatan peristiwa di bawah nama strands.telemetry.tracer lingkup. Saat digunakan di Amazon Bedrock AgentCore Runtime dengan AWS Distro for OpenTelemetry (ADOT), Runtime menyuntikkan session.id atribut dan mengekspor rentang dan catatan peristiwa secara otomatis.

catatan

Instrumentasi adalah salah satu langkah dalam mengatur observabilitas. Untuk mengekspor telemetri untuk evaluasi, selesaikan penyiapan lengkap di Menyi apkan observ abilitas.

Bagaimana rentang diidentifikasi

Helai menetapkan gen_ai.operation.name atribut pada setiap rentang. Layanan evaluasi menggunakan atribut ini untuk mengklasifikasikan rentang:

Jenis rentang Mengidentifikasi atribut Contoh nama rentang

Memanggil agen

gen_ai.operation.name = invoke_agent

invoke_agent TravelAgent

Jalankan alat

gen_ai.operation.name = execute_tool

execute_tool search_flights

Inferensi

gen_ai.operation.name = chat

chat

Bagaimana bidang evaluasi diekstraksi

Tempat konten percakapan tergantung pada mode pengiriman telemetri. Dengan telemetri terpisah, konten berada dalam catatan peristiwa terpisah. Dengan telemetri terpadu, konten tetap pada rentang, sebagai peristiwa yang melekat padanya. Untuk informasi selengkapnya, lihat Peng aturan dan pengiriman telemetri. Atribut pengi gen_ai.operation.name dentifikasi () berada pada rentang di kedua mode.

Dari catatan acara

Dengan telemetri terpisah, layanan membaca konten dari catatan peristiwa yang berkorelasi dengan setiap rentang:

  • Prompt pengguna: dari pesan masukan agen (input.messages), isi pesan dengan peran pengguna.

  • Respon agen: dari pesan keluaran agen (output.messages), isi pesan dengan peran asisten.

  • Panggilan alat: nama alat dari gen_ai.tool.name atribut pada rentang alat eksekusi. Argumen alat dan hasil berasal dari catatan peristiwa span itu (inputdanoutput).

Untuk informasi selengkapnya, lihat Contoh rentang dalam telem etri terpisah.

Dari peristiwa rentang sebaris

Dengan telemetri terpadu, konten yang sama dibawa dalam peristiwa rentang sebaris alih-alih catatan peristiwa terpisah:

  • Permintaan pengguna: dari gen_ai.user.message acara, content atribut.

  • Respon agen: dari gen_ai.choice acara, message atribut.

  • Panggilan alat: nama alat dari gen_ai.tool.name atribut pada rentang. Argumen alat berasal dari gen_ai.tool.message acara, dan hasilnya berasal dari gen_ai.choice acara.

Untuk informasi selengkapnya, lihat Contoh rentang dalam telem etri terpadu.

Contoh rentang dalam telemetri terpisah

Dengan telemetri terpisah, rentang membawa atribut pengidentifikasi dan konten hidup dalam catatan peristiwa yang berkorelasi. Contoh berikut berasal dari agen perencanaan perjalanan Python Strands yang digunakan di Amazon Bed AgentCore rock Runtime.

catatan

Contoh-contoh ini bukan rentang lengkap. Mereka menunjukkan data representatif dari interaksi agen nyata, dengan beberapa bidang dihilangkan dan nilai panjang dipotong untuk keterbacaan.

contoh
Invoke agent span

A gen_ai.operation.name tribut (invoke_agent) mengidentifikasi ini sebagai rentang agen invoke. A gen_ai.agent.tools tribut mencantumkan alat yang tersedia untuk agen.

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

Catatan peristiwa yang berkorelasi membawa konten percakapan. Prompt pengguna adalah pesan peran pengguna diinput.messages, dan respons agen adalah pesan peran asisten di. 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

A gen_ai.operation.name tribut (execute_tool) mengidentifikasi ini sebagai rentang alat eksekusi. A gen_ai.tool.name tribut menyimpan nama alat.

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

Catatan peristiwa berkorelasi membawa input alat (argumen) dan output (hasil).

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

Contoh rentang dalam telemetri terpadu

Dengan telemetri terpadu, konten yang sama dibawa dalam peristiwa rentang sebaris pada rentang, tanpa catatan peristiwa terpisah. Contoh berikut berasal dari agen perencanaan perjalanan Python Strands.

catatan

Contoh-contoh ini bukan rentang lengkap. Mereka menunjukkan data representatif dari interaksi agen nyata, dengan beberapa bidang dihilangkan dan nilai panjang dipotong untuk keterbacaan.

contoh
Invoke agent span

A gen_ai.user.message cara menyimpan prompt pengguna, dan gen_ai.choice acara menyimpan respons agen.

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

A gen_ai.tool.message cara menyimpan argumen alat, dan gen_ai.choice acara menyimpan hasil alat.

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

Agen TypeScript Strands menghasilkan rentang di bawah nama strands-agents lingkup. Ini memancarkan jenis rentang dan tata letak konten yang sama dengan agen Python, sehingga layanan evaluasi membacanya dengan cara yang sama.

Instrumentasikan agen Anda

Strands TypeScript Agents SDK (@strands-agents/sdk>= 1.5.0) menyertakan telemetri bawaan dan tidak memerlukan pustaka instrumentasi tambahan. Saat digunakan di Amazon Bedrock AgentCore Runtime dengan AWS Distro for OpenTelemetry (ADOT), Runtime menyuntikkan session.id atribut dan mengekspor rentang dan catatan peristiwa secara otomatis. TypeScript SDK menghasilkan rentang di bawah nama strands-agents cakupan.

catatan

Instrumentasi adalah salah satu langkah dalam mengatur observabilitas. Untuk mengekspor telemetri untuk evaluasi, selesaikan penyiapan lengkap di Menyi apkan observ abilitas.

Bagaimana rentang diidentifikasi

Identifikasi rentang sama dengan agen Python. A gen_ai.operation.name tribut mengklasifikasikan setiap rentang. Untuk nilai dan contoh nama rentang, lihat Bagaimana rentang diidentifikasi di bawah dukungan Dukungan agen Python Python.

Bagaimana bidang evaluasi diekstraksi

Ekstraksi lapangan sama dengan agen Python. Konten percakapan dibawa dalam peristiwa rentang sebaris (gen_ai.user.message,gen_ai.choice, dangen_ai.tool.message). Untuk dari mana setiap bidang dibaca, lihat Dari peristiwa rentang sebaris di bawah dukungan Python.

Contoh rentang dari agen TypeScript

Contoh berikut berasal dari agen perencanaan perjalanan TypeScript Strands yang digunakan di Amazon Bed AgentCore rock Runtime.

catatan

Contoh-contoh ini bukan rentang lengkap. Mereka menunjukkan data representatif dari interaksi agen nyata, dengan beberapa bidang dihilangkan dan nilai panjang dipotong untuk keterbacaan.

contoh
Invoke agent span

A gen_ai.operation.name tribut (invoke_agent) mengidentifikasi ini sebagai rentang agen invoke, dan gen_ai.agent.tools mencantumkan alat yang tersedia untuk agen. A gen_ai.user.message cara menyimpan prompt pengguna, dan gen_ai.choice acara menyimpan respons agen.

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

A gen_ai.operation.name tribut (execute_tool) mengidentifikasi ini sebagai rentang alat eksekusi; gen_ai.tool.name memegang nama alat. A gen_ai.tool.message cara menyimpan argumen alat, dan gen_ai.choice acara menyimpan hasil alat.

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