本文にスキップ
AI News HubLIVE
サイト内リライト4 分で読了

ディープエージェントの評価:私たちの学び

記事の要約

ディープエージェントを評価する5つのパターン:カスタムテスト、単一ステップ検証、完全ターン、マルチターンシミュレーション、環境設定。

ディープエージェントの評価:私たちの学び
誤りを報告

訂正窓口はまだ利用できません。記事情報をコピーして保存できます。

訂正案内
本文へ

過去1か月間、LangChainはDeep Agentsフレームワーク上で4つのアプリケーションをリリースしました:DeepAgents CLI(コーディングエージェント)、LangSmith Assist(アプリ内アシスタント)、Personal Email Assistant(ユーザーとの対話から学習するメールアシスタント)、そしてAgent Builder(メタディープエージェントを利用したノーコードエージェント構築プラットフォーム)です。これらのエージェントを構築・リリースするには、それぞれに評価(eval)を追加する必要があり、その過程で多くのことを学びました。この記事では、ディープエージェントを評価するための以下のパターンについて詳しく説明します。

ディープエージェントは、データポイントごとにカスタムテストロジックを必要とします。従来のLLM評価は簡単です:データセットを作成し、評価器を書き、アプリケーションを実行してスコアを付けます。しかし、ディープエージェントはこの前提を覆します。最終メッセージだけでなく、各データポイントの成功基準はより具体的であり、エージェントの軌跡や状態に対する特定のアサーションが必要になります。例えば、カレンダー予定管理エージェントに「午前9時前に会議を入れないで」と記憶させる場合、エージェントがmemories.mdファイルを編集するツールを呼び出し、最終メッセージで記憶更新を伝え、ファイルに実際にその情報が含まれていることを確認する必要があります。LangSmithのPytest統合を使用して、テストケースごとに異なるアサーションを記述できます。

単一ステップ評価は価値があり効率的です。ディープエージェントの評価において、テストケースの約半数は単一ステップ評価でした。つまり、特定の一連の入力メッセージの直後にLLMが何を決定したかを評価します。これは、エージェントが特定のシナリオで正しいツールと引数を呼び出したかどうかを検証するのに特に役立ちます。よくあるテストケースとしては、会議時間を検索するための正しいツールを呼び出したか、正しいディレクトリ内容を確認したか、記憶を更新したかなどがあります。回帰は完全な実行シーケンス全体ではなく、個々の意思決定ポイントで発生することがよくあります。LangGraphのストリーミング機能を使用すると、エージェントを1回のツール呼び出し後に中断して出力を検査できるため、完全なエージェントシーケンスのオーバーヘッドなしに早期に問題を発見できます。

完全なエージェントターンは全体像を提供します。単一ステップ評価を「ユニットテスト」と考えると、完全なターンではエージェントのエンドツーエンドのアクションの全体像がわかります。これにより、軌跡(特定のツールが呼び出されたことを確認)、最終応答(コーディングや研究のようなオープンエンドなタスクでは最終出力の品質が経路より重要)、その他の状態(エージェントが作成したファイルなど)をテストできます。完全ターンはエージェント実行の全体像を提供し、LangSmithを使用すると、遅延やトークン使用量などの高レベルメトリクスを確認しながら、各モデル呼び出しやツール呼び出しまで分析できます。

複数ターンにわたるエージェントの実行は、実際のユーザーインタラクションをシミュレートします。一部のシナリオでは、複数の連続したユーザー入力を含むマルチターン会話でのテストが必要です。課題は、一連の入力をハードコードし、エージェントが期待されるパスから逸脱した場合、後続のハードコードされたユーザー入力が意味をなさなくなることです。この問題は、PytestおよびVitestテストに条件付きロジックを追加することで対処しました。最初のターンを実行し、エージェントの出力を確認し、期待通りであれば次のターンを実行し、そうでなければ早期にテストを失敗させます。このアプローチにより、すべての可能なエージェントの分岐をモデル化することなく、マルチターン評価を実行できました。2番目または3番目のターンのみを単独でテストしたい場合は、適切な初期状態からテストを設定します。

適切な評価環境の設定は重要です。ディープエージェントはステートフルであり、複雑で長時間のタスクを処理するように設計されているため、評価にはより複雑な環境が必要になることがよくあります。シンプルなLLM評価(環境が限られていて通常ステートレス)とは異なり、ディープエージェントは再現可能な結果を得るために、各評価実行ごとに新しくクリーンな環境が必要です。コーディングエージェントはこの点を明確に示しています。Harborは、専用のDockerコンテナまたはサンドボックス内で実行されるTerminalBenchの評価環境を提供します。DeepAgents CLIでは、より軽量なアプローチとして、テストケースごとに一時ディレクトリを作成し、その中でエージェントを実行します。より広いポイント:ディープエージェント評価は、テストごとに環境をリセットする必要があります。そうしないと、評価が不安定になり再現が困難になります。

ヒント:APIリクエストをモックする。LangSmith Assistは実際のLangSmith APIに接続する必要があり、ライブサービスに対して評価を実行するのは遅くて高コストです。代わりに、HTTPリクエストをファイルシステムに記録し、テスト実行中に再生します。Pythonではvcrが効果的であり、JSではHonoアプリを介してfetchリクエストをプロキシします。APIリクエストのモックまたは再生により、特にエージェントが外部システム状態に大きく依存する場合、ディープエージェント評価をより高速でデバッグしやすくなります。

上記の手法は、ディープエージェント搭載アプリケーションのテストスイートを作成する際に頻繁に見られるパターンです。特定のアプリケーションにはこれらのパターンの一部のみが必要になる可能性が高いため、評価フレームワークの柔軟性が重要です。ディープエージェントを構築し、評価を始める場合は、LangSmithのテスト統合をチェックしてください!

要点と分析を開く

記事インテリジェンス

エンジニア上級

要点

  • ディープエージェントでは、データポイントごとにカスタムの成功基準が必要です。
  • 単一ステップ評価は特定シナリオでの意思決定検証に効率的です。
  • 完全ターン評価では、エージェントの最終状態(軌跡、最終応答、成果物)をテストします。
  • マルチターンシミュレーションでは条件付きロジックでエージェントの逸脱を処理します。
  • クリーンで再現可能な環境が信頼性の高い評価結果に不可欠です。

要点と分析は自動生成され、誤りを含む場合があります。原典をご確認ください。