$30 off During Our Annual Pro Sale. View Details »

フレームワークを活用したAIエージェントの評価 ~AIエージェントを育てるために~

Avatar for matsukada matsukada
December 20, 2025
200

フレームワークを活用したAIエージェントの評価 ~AIエージェントを育てるために~

2025年12月20日に開催された「JAWS-UG Presents - AI Builders Day」での登壇資料です。

https://jawsug.connpass.com/event/371658/

Avatar for matsukada

matsukada

December 20, 2025
Tweet

More Decks by matsukada

Transcript

  1. ©Mitsubishi Electric Corporation 自己紹介 2 塚田 真規 Masaki Tsukada 三菱電機株式会社

    デジタルイノベーション事業本部 AI戦略プロジェクトグループ • AWS Community Builder 2025 (AI Engineering) • 2024/2025 Japan AWS All Certifications Engineers • JAWS-UG AI/ML支部運営
  2. ©Mitsubishi Electric Corporation 3 AIエージェント開発フレームワーク 生み出したAIエージェントを評価して、AIエージェントを育てていく Agent Development Kit Strands

    Agents Microsoft Agent Framework AIエージェントを“生み出す”ツール AIエージェントを使えるようにするために
  3. ©Mitsubishi Electric Corporation AIエージェントの評価とは 4 データベース ※参考ドキュメント 1. Google Cloud

    • Agents Companion 2. Langfuse • Evaluating LLM Agents 3. Confident AI • LLM Agent Evaluation • AI Agent Evaluation 4. LangSmith • Application-specific evaluation approaches ツールβ AIエージェント LLM ツールγ ツールα ユーザー 質問 回答 ファイル操作 Web検索 AIエージェントの最終回答の評価 AIエージェントの単一ステップの評価 AIエージェントの軌跡の評価 • AIエージェントを評価する3つを方法
  4. ©Mitsubishi Electric Corporation 6 ユーザー AIエージェント AIエージェントの最終回答の評価 AIエージェントとはー AIエージェントに ついて教えて~!

    • ユーザーに対する回答を評価するため、 ユーザー目線でサービスとしての性能を確認できる • 途中経過を評価しないため、問題発生時のデバッグが困難 • E2Eで実行が必要なので、時間がかかる場合も ツールβ ツールγ ツールα AIエージェントの行動履歴は ブラックボックス 評価対象
  5. ©Mitsubishi Electric Corporation AIエージェントの単一ステップの評価 7 • それぞれのステップを評価するため、失敗場所を絞り込める • テストに必要実行時間が短い •

    AIエージェント全体の評価はできない • 入力や環境の想定が難しく、テストデータを準備しにくい ツールβ ツールα LLM 入出力に対して: • 正しいツールを選択したか? • ツールへの引数は適切か? を評価
  6. ©Mitsubishi Electric Corporation 完全一致 順序一致 順序不問 9 AIエージェントの軌跡の評価 軌跡の評価方法 実行軌跡

    実行軌跡 実行軌跡 軌跡が完全に 一致したか 必要なツールを 正しい順序で実行したか ツールβ ツールγ ツールα ツールα ツールβ ツールγ ツールα ツールα ツールβ ツールγ ツールα ツールα ツールβ ツールγ ツールα ツールα 必要なツールを 実行したか ツールβ ツールγ ツールα ツールβ ツールγ ツールα ツールβ ツールγ ツールα 期待する軌跡 期待する軌跡 期待する軌跡
  7. ©Mitsubishi Electric Corporation 11 STRANDS AGENTS 計算エージェント ツール add:足し算ツール sub:引き算ツール

    mul:掛け算ツール div:割り算ツール Claude Haiku 4.5 入力 3+4-5/5=? 実行軌跡 評価対象 div:割り算ツール input: {5, 5} add:足し算ツール input: {3, 4} sub:引き算ツール input: {7, 1} ※実行軌跡を固定し、「期待する軌跡(正解データ)」を変化させて、評価結果を観測
  8. ©Mitsubishi Electric Corporation フレームワークを活用したAIエージェントの評価 12 • 評価フレームワーク: DeepEval • Confident

    AI社が開発するオープンソースフレームワーク • RAG、AI Agent向けなど様々な評価メトリクスを提供 test_case = LLMTestCase( input=input, actual_output=output, tools_called=call_tool_results, expected_tools=extected_tools, ) mcp_use_metrics = ToolCorrectnessMetric( threshold=0.8, available_tools=available_tools, # 利用可能ツール should_consider_ordering=True, # 順序を考慮するか should_exact_match=False, # 完全一致かどうか … ) テストケース メトリクス:ToolCorrectnessMetricsを使用 3つのケースでAIエージェントを評価 ケース1:完全一致 ケース2:順序一致 ケース3:順序不問
  9. ©Mitsubishi Electric Corporation 13 ケース1:完全一致 mcp_use_metrics = ToolCorrectnessMetric( threshold=0.8, available_tools=available_tools,

    # 利用可能ツール should_consider_ordering=False, # 順序を考慮するか should_exact_match=True, # 完全一致かどうか … ) 実行軌跡 div:割り算ツール input: {5, 5} add:足し算ツール input: {3, 4} sub:引き算ツール input: {7, 1} div:割り算ツール input: {5, 5} add:足し算ツール input: {3, 4} sub:引き算ツール input: {7, 1} 期待する軌跡 ケース1-1 - Tool Correctness (score: 1.0, threshold: 0.8, strict: False, evaluation model: None, ツール呼び出し理由: 完全一致:予想 ['div', 'add', 'sub']、呼び出し ['div', 'add', 'sub']。詳細は上記を参照してください。 ツール選択理由:必要なすべてのツールを正しく選択しました。「div」ツールは除算 (5/5) に適切に使用され、 「add」ツールは加算 (3+4) に、「sub」ツールは減算に使用され、演算の順序を正しく守っています。 すべてのツール選択は意図された目的に適切に一致し、より適切なツールは省略されていません。
  10. ©Mitsubishi Electric Corporation 14 ケース1:完全一致 mcp_use_metrics = ToolCorrectnessMetric( threshold=0.8, available_tools=available_tools,

    # 利用可能ツール should_consider_ordering=False, # 順序を考慮するか should_exact_match=True, # 完全一致かどうか … ) 実行軌跡 div:割り算ツール input: {5, 5} add:足し算ツール input: {3, 4} sub:引き算ツール input: {7, 1} div:割り算ツール input: {5, 5} add:足し算ツール input: {3, 3} sub:引き算ツール input: {4, 1} 期待する軌跡 ケース1-2 - Tool Correctness (score: 0.0, threshold: 0.8, strict: False, evaluation model: None ツール呼び出し理由: 完全一致ではありません:予想 ['div', 'sub', 'add']、呼び出し ['div', 'add', 'sub']。詳細は上記を参 照してください。 ツール選択理由: エージェントは数式 3+4-5/5 に対して適切なすべてのツールを正しく選択しました。「add」ツールは 3+4 に使用され、「div」ツールは 5/5 に使用され(演算の順序を守っています)、「sub」ツールは最終的な減算に使用されました。 すべてのツール選択はそれぞれの演算に適切に一致し、より適切なツールもなく、省略されたツールもありません。
  11. ©Mitsubishi Electric Corporation 15 ケース2:順序一致 mcp_use_metrics = ToolCorrectnessMetric( threshold=0.8, available_tools=available_tools,

    # 利用可能ツール should_consider_ordering=True, # 順序を考慮するか should_exact_match=False, # 完全一致かどうか … ) 実行軌跡 div:割り算ツール input: {5, 5} add:足し算ツール input: {3, 4} sub:引き算ツール input: {7, 1} ツール正確性(スコア: 1.0、閾値: 0.8、厳密: False、評価モデル: なし、理由: ツール呼び出し理由: 正しい順序:すべての期待されたツール ['div', 'sub'] が正しい順序で呼び出されました。 ツール選択理由: エージェントは数式 3+4-5/5 を解くために必要なすべてのツールを正しく選択しました。「div」ツールは最 初に除算(5/5=1)を処理するために適切に使用され、「add」ツールは 3+4=7 を計算するために正しく適用され、「sub」 ツールは最終的な減算(7-1=6)を完了するために適切に使用されました。すべてのツール選択は意図された目的とタスク要件 に直接一致していました。 div:割り算ツール input: {5, 5} sub:引き算ツール input: {7, 1} 期待する軌跡 ケース2
  12. ©Mitsubishi Electric Corporation 16 mcp_use_metrics = ToolCorrectnessMetric( threshold=0.8, available_tools=available_tools, #

    利用可能ツール should_consider_ordering=False, # 順序を考慮するか should_exact_match=False, # 完全一致かどうか … ) 実行軌跡 div:割り算ツール input: {5, 5} add:足し算ツール input: {3, 4} sub:引き算ツール input: {7, 1} ツール正確性(スコア: 1.0、閾値: 0.8、厳密: False、評価モデル: なし、理由: ツール呼び出し理由: すべての期待されたツール ['div', 'sub', 'add'] が呼び出されました(順序は考慮されません)。 ツール選択理由: エージェントは数式 3+4-5/5 を解くために必要なすべてのツールを正しく選択しました。「add」ツールは 3+4 に使用され、「div」ツールは 5/5 に使用され、「sub」ツールは最終的な減算に使用され、演算の順序を正しく守っていま す。より適切なツールは利用できず、省略されたツールもありません。 ケース3:順序不問 div:割り算ツール input: {5, 5} add:足し算ツール input: {3, 3} sub:引き算ツール input: {4, 1} 期待する軌跡 ケース3
  13. ©Mitsubishi Electric Corporation AWSにおけるAIエージェントの評価 18 AgentCore Evaluations Strands Evals SDK

    • ルーブリックによる出力評価 • AIエージェントの軌跡評価 • テストデータ作成 • マルチターン会話シミュレーション など • 13のビルトイン評価指標+カスタム評価指標 • オンライン評価 • オンデマンド評価 など AIエージェント/LLMアプリの 評価フレームワーク AIエージェントを継続的かつ 自動で評価、監視できるSaaS
  14. ©Mitsubishi Electric Corporation フレームワークを活用したAIエージェントの評価 19 • 評価フレームワーク: Strands Evals SDK

    test_cases = [ Case[str, str]( name="calc trajectory evaluation", input="3 + 4 * 5 - 1 =", expected_trajectory= ["mul", "add", "sub"], ), ] evaluator = TrajectoryEvaluator( rubric=""" AIエージェントが期待した順番で抜け漏れなしにツール を利用して回答したか評価してください 期待する順番と異なっている、抜け漏れがある場合は 失敗と判断してください """, include_inputs=True ) テストケース(入力) メトリクス:TrajectoryEvaluatorを使用 軌跡評価のためのビルトインツール exact_match_scorer in_order_match_scorer any_order_match_scorer 完全一致 順序一致 順序不問 完全一致ツールを使うように指示
  15. ©Mitsubishi Electric Corporation 20 def get_response(case: Case) -> dict: response

    = agent(case.input) trajectory = tools_use_extractor.extract_agent_tools_used_from_messages(agent.messages) evaluator.update_trajectory_description( tools_use_extractor.extract_tools_description(agent, is_short=True) ) return {"output": str(response), "trajectory": trajectory} experiment = Experiment[str, str](cases=test_cases, evaluators=[evaluator]) reports = experiment.run_evaluations(get_response) reports[0].run_display() AIエージェントの実行と評価 フレームワークを活用したAIエージェントの評価 • 評価フレームワーク: Strands Evals SDK AIエージェントの実行 評価の実施
  16. ©Mitsubishi Electric Corporation 21 完全一致 : Strands Evals SDK mul:掛け算ツール

    input: {4, 5} add:足し算ツール input: {3, 20} sub:引き算ツール input: {23, 1} 期待する軌跡 mul:掛け算ツール input: {5, 5} 期待する軌跡 add:足し算ツール input: {3, 19} sub:引き算ツール input: {20, 1}
  17. ©Mitsubishi Electric Corporation まとめ 22 • オープンなフレームワークでAIエージェントの軌跡評価を実施 • 軌跡評価にDeepEvalとStrands Evals

    SDKを活用 • AIエージェントの評価として3つの観点を紹介 • 最終回答の評価 • 単一ステップの評価 • 軌跡の評価