AIエージェントの評価は「タスク完了率」「ステップ効率」「ツール選択精度」「コスト効率」の4指標を軸に設計するのが実務的です。本番監視ではトレーシング基盤を必ず導入し、各ステップの推論とアクションを時系列で可視化することが肝要です。トレーシングなしでエージェントを本番稼働させるのは、目隠しで高速道路を運転するに等しく、事故るのは時間の問題です。
AIエージェントの評価はなぜ難しいか
AIエージェントの評価が難しい理由は、大きく3つあります。第一に、マルチステップ性です。ひとつの最終出力に至るまでに複数の中間判断が挟まり、どこで何がうまくいき、どこで失敗したのかの切り分けが難しい。第二に、非決定性。同じ入力に対して毎回異なる応答が返るため、単純なテストでは合否判定ができません。第三に、正解の曖昧さ。自然言語の出力には明確な正解がなく、複数の「それっぽい回答」が許容されます。
こうした性質のため、従来のソフトウェア評価手法(ユニットテストやE2Eテスト)をそのまま適用できません。評価の設計自体がエンジニアリング課題として扱うべき対象になります。LLMオブザーバビリティやLLM評価方法の記事と併せて読むことで、理解が深まります。
評価指標の設計
評価指標は定量と定性の両方を組み合わせるのが鉄則です。定量は自動計測できるもの、定性は人間の判断が必要なものです。この2軸を意識せずに指標を設計すると、すべてが定性評価になって運用が回らなくなります。
| 指標 | 定義 | 計測方法 | 目標値例 | 改善手段 |
|---|---|---|---|---|
| タスク完了率 | 最終ゴールを達成した割合 | 自動判定/人手評価 | 90%以上 | プロンプト改善 |
| ステップ効率 | 目標に到達するまでの平均ステップ数 | ログ集計 | 平均5以下 | 計画立案の改善 |
| ツール選択精度 | 適切なツールを呼び出した割合 | 期待ツールとの一致 | 95%以上 | ツール記述改善 |
| コスト効率 | 1タスクあたりの平均コスト | API課金計算 | 0.1USD以下 | モデル選定 |
| ユーザー満足度 | 応答への評価 | Thumbs up/down | 80%以上 | 出力品質改善 |
| 幻覚率 | 根拠のない応答の割合 | 別LLMで検証 | 5%以下 | RAG強化 |
import json
def evaluate_agent(agent, test_cases):
results = {"completed": 0, "failed": 0, "avg_steps": 0, "avg_cost": 0}
total_steps = 0
total_cost = 0
for case in test_cases:
output = agent.run(case["input"])
ok = case["expected_keyword"] in output["result"]
if ok:
results["completed"] += 1
else:
results["failed"] += 1
total_steps += output["steps"]
total_cost += output["cost"]
n = len(test_cases)
results["avg_steps"] = total_steps / n
results["avg_cost"] = total_cost / n
results["completion_rate"] = results["completed"] / n
return results
print(json.dumps(evaluate_agent(my_agent, test_suite), indent=2))
評価用のテストスイートは、成功パターンと失敗パターンの両方を網羅するのが理想です。本番ログから定期的に新しいテストケースを追加し、評価資産を更新していく運用が望ましいでしょう。
本番環境の監視設計
本番監視は、レイヤーを分けて設計します。最上位にKPIダッシュボード、その下にトレース画面、さらに下にログ検索という三層構造が基本です。KPIは日次や週次で俯瞰し、異常があればトレースへドリルダウン、さらに詳細を見るならログ検索に進みます。
【エージェント監視ダッシュボードの設計】
[KPIレイヤー]
└── タスク完了率 / 平均ステップ数 / コスト累計 / p95レイテンシ
[トレースレイヤー]
└── 各リクエストの推論 → アクション → 結果 の時系列
└── プロンプト表示 / ツール呼び出し / トークン消費
[ログレイヤー]
└── 構造化ログ(session_id, step, tool, cost, latency, status)
└── クエリ / 集計 / アラート
| ツール | トレーシング | コスト | エラー | アラート | 料金 |
|---|---|---|---|---|---|
| LangSmith | 強力 | 対応 | 対応 | 対応 | 商用(無料枠あり) |
| Langfuse | 強力 | 対応 | 対応 | 対応 | OSS+SaaS |
| Helicone | 対応 | 対応 | 対応 | 対応 | 無料枠あり |
| Arize Phoenix | 強力 | 対応 | 対応 | 限定的 | OSS無料 |
| OpenTelemetry+Grafana | 実装次第 | 実装次第 | 対応 | 対応 | OSS無料 |
LangSmithは純正の使い勝手、Langfuseはセルフホスト可能な柔軟性で定評があります。オンプレ要件があればLangfuseかPhoenix、SaaSで即利用したければLangSmithが第一候補になるでしょう。
トレーシングの実装
ここではLangfuseを例に、トレーシングの最小実装を示します。各ステップをspanとして記録することで、後から時系列で処理を追跡できるようになります。
from langfuse import Langfuse
from openai import OpenAI
langfuse = Langfuse(public_key="pk-...", secret_key="sk-...")
openai = OpenAI()
def run_agent(user_input):
trace = langfuse.trace(name="agent_run", input=user_input)
plan_span = trace.span(name="plan")
plan = openai.chat.completions.create(
model="gpt-4o-mini",
messages=[{"role": "user", "content": f"計画を立てて: {user_input}"}]
)
plan_span.end(output=plan.choices[0].message.content)
exec_span = trace.span(name="execute")
result = openai.chat.completions.create(
model="gpt-4o",
messages=[{"role": "user", "content": plan.choices[0].message.content}]
)
exec_span.end(output=result.choices[0].message.content)
trace.update(output=result.choices[0].message.content)
return result.choices[0].message.content
トレーシング実装では、各span(処理単位)に意味のある名前を付けることが重要です。「step_1」「step_2」のような連番では後から解析できません。「plan」「search」「summarize」など、何をしているかが分かる命名にしましょう。
異常検知とアラート
監視体制の最後のピースがアラートです。閾値を決めて、超過時にSlackやPagerDutyへ通知する仕組みを構築します。よくある実運用の閾値は、コスト累計(日次・月次)、セッション単位のステップ数上限、エラー率、レイテンシp95です。
注意点として、アラートは頻発すると無視されるようになります。いわゆる「アラート疲れ」です。重要度に応じて段階的なアラート設計(情報通知・警告・即時対応)を行い、夜間呼び出されるのは「本当に対応が必要な事象のみ」に絞るのが実務の作法です。ガードレール設計や本番導入ロードマップの記事もあわせて参照してください。
まとめ
- 評価指標はタスク完了率・ステップ効率・ツール選択精度・コスト効率の4軸が基本
- 監視はKPI・トレース・ログの三層構造で設計する
- トレーシングは意味のあるspan名と構造化ログが鍵
- アラートは段階設計でアラート疲れを防ぐ
よくある質問
AIエージェントの性能はどう測定すべきですか
タスク完了率(目標を達成できたか)、ステップ効率(最小ステップで完了したか)、ツール選択精度(適切なツールを選んだか)の3指標が基本です。加えてコスト効率とユーザー満足度を測定することを推奨します。
エージェントのトレーシングとは何ですか
エージェントが各ステップで何を考え(推論)、何をしたか(アクション)を時系列で可視化する仕組みです。デバッグ、性能改善、異常検知に不可欠で、LangSmithやLangfuseなどのツールで実装できます。
AIエージェントの監視で最低限必要なものは
コスト監視(API呼び出し料金の累計)、エラー率監視、ステップ数監視(無限ループ検知)の3つが最低限必要です。これらに閾値を設定し、超過時にアラートを発報する仕組みを構築してください。