- 公開日
- 最終更新日
【Bedrock AgentCore】EvaluationでAI Agentの評価を行う
この記事を共有する
目次
はじめに
皆さんこんにちは!パーソル&サーバーワークスの小泉です。
今回は Amazon Bedrock AgentCore(以下AgentCore) の Evaluation 機能を使って、AIエージェントの応答品質を定量的に測定してみました。
なぜこれをやったのか
AIエージェントを作ったあと、「ちゃんと動いてるっぽい」で終わっていたり、また人間が数回試して「良さそう」と判断するのは主観的で、再現性がないと感じたからです。
具体的には以下の課題を感じることがありました。
- プロンプトを変えたとき、品質が上がったのか下がったのか分からない
- 本番で品質が劣化しても気づけない
- 「良い応答」の基準が人によって違う
しかしAgentCoreのEvaluation機能を使えば、エージェントの品質をスコアとして定量化できます。
AgentCore Evaluation とは
エージェントのトレースデータ(実際の入出力)を元に、LLM-as-a-Judge方式で品質を自動評価する機能です。
本記事では、On-demand評価とOnline評価について記載します。
| モード | 説明 |
|---|---|
| On-demand evaluation | 指定したセッション/トレースをその場で評価 |
| Batch evaluation | 蓄積された全セッションに対して一括評価 |
| Online evaluation | 本番トラフィックを自動サンプリング評価 |
| Dataset evaluation(プレビュー機能 2026/07/31時点) | 事前定義したデータセットで評価 |
| Simulation | 仮想ユーザーでエージェントを自動テスト |
代表的な評価軸について紹介します。
| 評価器 | レベル | 何を評価するか |
|---|---|---|
| Builtin.Helpfulness | TRACE | 応答がユーザーにとって有用か |
| Builtin.Correctness | TRACE | 情報が正確か |
| Builtin.GoalSuccessRate | SESSION | ユーザーのゴールを達成できたか |
注意点としてはレベルによって評価対象が異なります:
- TRACE レベル: 1回のモデル呼び出し(1つの応答)を評価する。Helpfulness や Correctness はこのレベル。同一セッション内に複数のトレースがあれば、それぞれ個別に評価される
- SESSION レベル: セッション全体(1つの会話のやり取り全体)を評価する。GoalSuccessRate はこのレベル。会話全体を通じてユーザーのゴールが達成されたかを判定する
この違いは重要で、どの評価が何を判定しているかを事前に理解した上で評価軸を決める必要があります。
今回使うAgentCoreの機能
| 機能 | 役割 |
|---|---|
| Runtime | エージェントのホスティング基盤 |
| Observability | トレースデータの収集(Evaluationの前提) |
| Evaluations | 品質の自動評価 |
前提条件
Evaluationを実行するには以下が必要です:
- エージェントがデプロイ済み
- Observability(OTel)が有効
- 少なくとも1回以上invokeしてトレースデータが蓄積されていること
- トレースがCloudWatchに反映されるまで待ち時間が必要
手順
1. On-demand Evaluation の実行
エージェントを何度か呼び出した後、以下のコマンドで評価を実行します。
agentcore run eval \ --runtime runtime01 \ --evaluator Builtin.Helpfulness \ --evaluator Builtin.Correctness \ --evaluator Builtin.GoalSuccessRate
結果:
Agent: runtime01 | Jul 11, 2026, 01:37 AM | Sessions: 4 | Lookback: 7d Builtin.Helpfulness: 0.96 Builtin.Correctness: 0.88 Builtin.GoalSuccessRate: 0.75
4セッション分のトレースが評価され、各指標のスコアが出ました。
2. 評価の詳細を確認する
結果はJSONファイルとして保存されます。 各セッションごとのスコアと、なぜそのスコアになったかの説明が含まれています。
例えば Helpfulness で 0.83 だったセッションの説明:
The assistant presented the quiz question clearly but withheld the answer to make it an actual quiz experience rather than just showing Q&A.
「クイズの答えを隠してユーザーに考えさせた」ことが減点理由でした。 エージェントとしては良い判断に見えますが、「ゴール達成」の観点からは情報を全て提示したほうが評価が高くなります。
このように、なぜスコアが低いのかが自然言語で説明されるので、改善のヒントが得られます。
3. 特定のセッションだけ評価する
問題のあるセッションを狙い撃ちで評価することもできます。
agentcore run eval \ --runtime runtime01 \ --evaluator Builtin.Helpfulness \ --session-id "3e5b9374-7392-43d9-8910-44f12ad4dfdf"
4. Online Evaluation の設定(継続的モニタリング)
本番トラフィックを自動的にサンプリングして評価し続ける設定です。
agentcore add online-eval \ --name "qualityMonitor" \ --runtime runtime01 \ --evaluator Builtin.Helpfulness Builtin.GoalSuccessRate \ --sampling-rate 100 \ --enable-on-create
デプロイ後、エージェントを呼び出すと自動的に評価が実行されます。
結果はAgentCoreのEvaluationsタブで確認できます。

所感
実際にAgentの評価を可視化することで、このAgentは何ができていて何ができていないのかを知るにはとても良い機能だと思いました、次の記事では可視化ができたので、この評価を基にどのように改善していくのかを書こうと思います。
この記事は私が書きました
小泉 和貴
記事一覧全国を旅行することを目標に、仕事を頑張っています。