先週、私たちは LangSmith Engine をリリースしました。Engine はエージェントのトレースを監視し、繰り返し発生する問題を自動的に発見し、改善策を提案するエージェントです。本記事では、その技術的詳細——なぜ Engine を構築したのか、入出力の仕組み、大量のトレースを分析するためのアーキテクチャ上の判断——について解説します。
Engine を構築した理由
LangSmith はエージェント改善ループの本拠地です。ビルド、テスト、デプロイ、監視という4つの柱がエージェント開発を支えています。しかし、デプロイするエージェントが増えるにつれてトレースの数も増加し、問題を見つけるためにトレースを選別する時間が増大します。基本的なエラーは簡単に検出できますが、エージェントが同じツールを繰り返し呼び出す、誤った引数を使用する、非効率に動作する、適切なツールを使用しない、同じ種類の要求に繰り返し失敗するといった問題は、個々のトレースを詳細に検査しない限り見つけるのが困難です。この社内での問題を解決するために Engine を構築しました。
Engine の出力: 問題 (Issues)
Engine の役割は、トレース内の繰り返し発生する障害を発見し、それらを実用的な問題に変換し、さらに評価器やデータセット例、修正案といった持続可能な改善策に変換することです。問題は Issue Board に表示され、名前、説明、カテゴリ、重要度、証拠となるトレース、提案されるアクション(オンライン評価器、データセット例、コード修正)で構成されます。
Engine の入力
Engine は主に4つの入力を受け取ります。
- 指示: エージェント概要(Agent Overview)として提供され、エージェントの動作や期待されるトレース構造、障害モードを定義。初回実行時にはオンボーディング回答とプロジェクトコンテキストから作成されます。
- トレース: LangSmith CLI 経由で取得。スケーラビリティのため、最初は圧縮された軌跡サマリーから始め、必要に応じて完全なトレースをロードします。
- 既存の問題: 現在の Issue Board から既知の問題を取得し、重複を避けて証拠を追加します。
- コードベース (オプション): リポジトリに接続すると、問題の診断精度が向上し、修正エージェントがコード変更を提案できるようになります。
高レベルアーキテクチャ
Engine は Deep Agents 上に構築され、サンドボックス環境で動作します。主要な処理ループは以下の5ステップです。
- コンテキスト準備: サンドボックス設定、エージェント概要の初期化、CLI 設定。
- 大規模スクリーニング: 専用のスクリーニングサブエージェント(Haiku ベース)が約20トレースずつ並列処理し、圧縮された軌跡(各ターンの役割、レイテンシ、コンテンツサイズ)を用いて問題の可能性を素早く評価。
- 問題調査: メインエージェントがスクリーニング結果を受け取り、調査サブエージェントを起動して詳細なトレースコンテンツを取得、根本原因を特定。
- 問題と資産の作成: 問題の作成、評価器の提案、データセット例の生成、修正の提案。
- メモリ更新: 発見事項をエージェント概要に書き込み、次回実行時のコンテキストとして活用。
特にスクリーニング段階が拡張性の鍵であり、フィードバック付きトレースを優先することで、数千件のプロダクショントレースを効率的に処理できます。
今後の展望
Engine はまだ初期段階ですが、エージェントのデバッグと反復を大幅に効率化しています。今後は複雑な多段階問題の識別能力を向上させ、コードベース統合をさらに強化する予定です。