View a markdown version of this page

AgentCore 評価の Strands Agents テレメトリを設定する - Amazon Bedrock AgentCore

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

AgentCore 評価の Strands Agents テレメトリを設定する

このページでは、ストランドエージェントエージェントの計測方法、スパンの識別方法、評価フィールドの抽出方法について説明します。

トピック

AgentCore Evaluations は、Python SDK と TypeScript SDK を使用して構築された Strands エージェントをサポートしています。2 つの は同じスパンタイプを生成し、異なるスコープ名で属性とコンテンツレイアウトを識別するため、評価サービスはそれらを同じ方法で読み取ります。このページでは、Python の場合は「Python エージェントのサポート」を参照し、TypeScript の場合はTypeScript エージェントのサポート」を参照してください。

Python エージェントのサポート

Python Strands エージェントは、スコープ名 でスパンを生成しますstrands.telemetry.tracer。

エージェントを計測する

Strands Agents SDK にはテレメトリが組み込まれており、追加の計測ライブラリは必要ありません。スコープ名 でスパンとイベントレコードを生成しますstrands.telemetry.tracer。Distro for OpenTelemetry (ADOT) AWS を使用して Amazon Bedrock AgentCore ランタイムにデプロイすると、ランタイムは session.id 属性を挿入し、スパンとイベントレコードを自動的にエクスポートします。

注記

計測は、オブザーバビリティを設定する 1 つのステップです。評価のためにテレメトリをエクスポートするには、「オブザーバビリティの設定」で完全なセットアップを完了します。

スパンの識別方法

ストランドは、各スパンに gen_ai.operation.name 属性を設定します。評価サービスは、この属性を使用してスパンを分類します。

スパンタイプ 属性の識別 スパン名の例

エージェントを呼び出す

gen_ai.operation.name = invoke_agent

invoke_agent TravelAgent

実行ツール

gen_ai.operation.name = execute_tool

execute_tool search_flights

推測

gen_ai.operation.name = chat

chat

評価フィールドの抽出方法

会話コンテンツの場所は、テレメトリ配信モードによって異なります。分割テレメトリでは、コンテンツは別のイベントレコードにあります。統合テレメトリでは、コンテンツは スパンにアタッチされたイベントとして残ります。詳細については、「テレメトリのセットアップと配信」を参照してください。識別属性 (gen_ai.operation.name) は、両方のモードでスパン上にあります。

イベントレコードから

分割テレメトリでは、サービスは各スパンに相関するイベントレコードからコンテンツを読み取ります。

  • ユーザープロンプト: エージェント入力メッセージ (input.messages) から、ユーザーロールを持つメッセージの内容。

  • エージェントレスポンス: エージェント出力メッセージ (output.messages) から、アシスタントロールを持つメッセージの内容。

  • ツール呼び出し: 実行ツールスパンの gen_ai.tool.name 属性からのツール名。ツールの引数と結果は、そのスパンのイベントレコード (input と ) から取得されますoutput。

詳細については、「分割テレメトリのスパンの例」を参照してください。

インラインスパンイベントから

統合テレメトリでは、同じコンテンツが個別のイベントレコードではなくインラインスパンイベントで伝送されます。

  • ユーザープロンプト: gen_ai.user.messageイベントから、 content 属性。

  • エージェントレスポンス: gen_ai.choiceイベントからの message 属性。

  • ツール呼び出し: スパンの gen_ai.tool.name 属性からのツール名。ツール引数は gen_ai.tool.messageイベントから取得され、結果は gen_ai.choiceイベントから取得されます。

詳細については、「統合テレメトリでのスパンの例」を参照してください。

分割テレメトリのスパンの例

分割テレメトリでは、スパンは識別属性を保持し、コンテンツは相関イベントレコードに存在します。次の例は、Amazon Bedrock AgentCore ランタイムにデプロイされた Python Strands の旅行計画エージェントからのものです。

注記

これらの例は完全なスパンではありません。実際のエージェントインタラクションからの代表的なデータが表示され、読みやすいように一部のフィールドは省略され、長い値は切り捨てられます。

例
Invoke agent span

gen_ai.operation.name 属性 (invoke_agent) は、これを呼び出しエージェントのスパンとして識別します。gen_ai.agent.tools 属性には、エージェントが使用できるツールが一覧表示されます。

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

相関イベントレコードには会話コンテンツが格納されます。ユーザープロンプトは のユーザーロールメッセージで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

gen_ai.operation.name 属性 (execute_tool) は、これを実行ツールスパンとして識別します。gen_ai.tool.name 属性はツール名を保持します。

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

相関イベントレコードには、ツールの入力 (引数) と出力 (結果) が保持されます。

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

統合テレメトリのスパンの例

統合テレメトリでは、同じコンテンツがスパンのインラインスパンイベントで伝送され、個別のイベントレコードはありません。次の例は、Python Strands の旅行計画エージェントからのものです。

注記

これらの例は完全なスパンではありません。実際のエージェントインタラクションからの代表的なデータが表示され、読みやすいように一部のフィールドは省略され、長い値は切り捨てられます。

例
Invoke agent span

gen_ai.user.message イベントはユーザープロンプトを保持し、gen_ai.choiceイベントはエージェントのレスポンスを保持します。

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

gen_ai.tool.message イベントはツール引数を保持し、gen_ai.choiceイベントはツールの結果を保持します。

{ "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 エージェントのサポート

TypeScript Strands エージェントは、スコープ名 でスパンを生成しますstrands-agents。Python エージェントと同じスパンタイプとコンテンツレイアウトを出力するため、評価サービスはそれを同じ方法で読み取ります。

エージェントを計測する

TypeScript Strands Agents SDK (@strands-agents/sdk>= 1.5.0) にはテレメトリが組み込まれており、追加の計測ライブラリは必要ありません。Distro for OpenTelemetry (ADOT) AWS を使用して Amazon Bedrock AgentCore ランタイムにデプロイすると、ランタイムは session.id 属性を挿入し、スパンとイベントレコードを自動的にエクスポートします。TypeScript SDK は、スコープ名 でスパンを生成しますstrands-agents。

注記

計測は、オブザーバビリティを設定する 1 つのステップです。評価のためにテレメトリをエクスポートするには、「オブザーバビリティの設定」で完全なセットアップを完了します。

スパンの識別方法

スパン識別は Python エージェントの場合と同じです。gen_ai.operation.name 属性は各スパンを分類します。値とスパン名の例については、「Python サポートでスパンを識別する方法」を参照してください。

評価フィールドの抽出方法

フィールド抽出は Python エージェントの場合と同じです。会話コンテンツはインラインスパンイベント (gen_ai.user.message、gen_ai.choice、) で伝送されますgen_ai.tool.message。各フィールドの読み取り元については、Python サポートの「インラインスパンイベントから」を参照してください。

TypeScript エージェントからのスパンの例

次の例は、Amazon Bedrock AgentCore ランタイムにデプロイされた TypeScript Strands の旅行計画エージェントからのものです。

注記

これらの例は完全なスパンではありません。実際のエージェントインタラクションからの代表的なデータが表示され、読みやすいように一部のフィールドは省略され、長い値は切り捨てられます。

例
Invoke agent span

gen_ai.operation.name 属性 (invoke_agent) は、これを呼び出しエージェントのスパンとして識別し、エージェントが使用できるツールをgen_ai.agent.tools一覧表示します。gen_ai.user.message イベントはユーザープロンプトを保持し、gen_ai.choiceイベントはエージェントのレスポンスを保持します。

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

gen_ai.operation.name 属性 (execute_tool) は、これを実行ツールスパンとして識別します。 はツール名gen_ai.tool.nameを保持します。gen_ai.tool.message イベントはツール引数を保持し、gen_ai.choiceイベントはツールの結果を保持します。

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