🐧 要するにどういう話か
AIエージェントをどのように構成し、自律性を制御するかという話だけではなく、どのように観測・評価して改善し続けるかという話。
エージェントエンジニアリングとは何か
概要
エージェントエンジニアリングとは、非決定的な挙動を示すLLMシステムを、信頼性の高いプロダクトへと洗練させるための反復的なプロセスである。「構築 → テスト → リリース → 観測 → 改善 → 繰り返し」というサイクルを回し続けることが本質であり、リリースはゴールではなく、新たな知見を得てエージェントを改善するための手段と位置づけられる。このサイクルを高速に回転させるほど、システムの信頼性は向上する。
実用的な定義
より限定的かつ実用的な視点では、エージェントエンジニアリングとは「制限付き自律性(bounded-autonomy)」を持つシステムを、実務において有用かつ信頼でき、管理可能な状態にするための取り組みである。「制限付き自律性」とは、システムが明確な権限範囲内で、複数のステップを経て目標を追求することを指す。
単にプロンプトを改善することや、状態管理・リカバリ・権限・評価などを考慮せずにモデルをツールに接続するだけでは不十分である。システムがステップをまたいで目標を追求し、その思考プロセス、知識、実行可能な操作、検証方法、および本番運用後の運用方法までを設計・決定する必要があるとき、それはエージェントエンジニアリングの領域となる。
隣接分野との違い
他分野との比較を以下の表に示す。
| 分野 |
主な対象 |
主要な問い |
典型的な失敗 |
| ソフトウェアエンジニアリング |
決定論的なアプリケーションロジック |
システムは正しく動作するか? |
コードパスの誤りや不足 |
| 機械学習エンジニアリング |
モデル、データ、学習、デプロイ |
モデルの予測精度は十分か? |
汎化性能の不足や劣化 |
| プロンプトエンジニアリング |
指示および入力の設計 |
タスク遂行のためにどう誘導すべきか? |
指示の不十分さや不安定さ |
| エージェントエンジニアリング |
モデル周囲の制限付き自律システム |
ステップ間でどう推論・行動・回復し、管理し続けるか? |
ロジック、コンテキスト、ツール、制御、運用の脆弱性による実行失敗 |
エージェントエンジニアリングは、プロンプト、ソフトウェア、機械学習の各エンジニアリングを内包し、それらのレイヤーの上位に位置する。モデルがツール、メモリ、アクションとともにループに組み込まれた際、システム全体としていかに動作させるかを扱う。
- ソフトウェアエンジニアリング:システムの「正しさ」を問う
- MLエンジニアリング:モデルの「能力」を問う
- プロンプトエンジニアリング:モデルの「誘導」を問う
- エージェントエンジニアリング:制限付き自律システム全体の「経時的な振る舞い」を問う
なぜエージェントエンジニアリングが登場したか
2つの根本的な変化
- LLMの能力向上: LLMが複雑なマルチステップのワークフローを処理可能になった。単一のタスクにとどまらず、見込み客のリサーチからCRMの更新、人材プールからの候補者抽出とランク付けといった「職務」全体を担うエージェントが登場し、ビジネス価値を創出し始めている。
- 予測不能性の増大: LLMの能力向上は同時に予測不能性をもたらした。エージェントは複数ステップの推論、ツールの呼び出し、コンテキストに基づく適応を行うため、従来のソフトウェアとは異なる挙動を示す。
予測不能性がもたらす影響
- すべての入力がエッジケースとなる: 自然言語による自由な入力が可能なため、「標準的な入力」は存在せず、曖昧な入力に対してエージェントが異なる解釈を行う可能性がある。
- 従来のデバッグ手法が通用しない: ロジックの多くがモデル内部にあるため、個々の決定やツール呼び出しを詳細に検査する必要がある。また、プロンプトや設定の微細な変更が、挙動の劇的な変化を招く。
- 「動作」の判定が二値(Yes/No)ではない: 稼働率が99.99%であっても、実質的には機能していない場合がある。適切な判断ができているか、ツールを正しく使っているか、指示の意図に従っているかという問いに、単純なYes/Noで答えることは困難である。
プロンプト設計からクローズドループシステムへ
初期のプロンプトエンジニアリングは、単一のインタラクションにおける出力を改善することに主眼が置かれていた。しかし、メモリ、ツール、外部コンテキスト、アクション能力を持つシステムを設計する場合、それはもはやプロンプト設計ではなく、「クローズドループシステム」の設計となる。
このシステムには、以下の処理能力が求められる。
- 目標の解釈
- 必要情報の決定
- コンテキストの取得または更新
- アクションまたはツールの選択
- アクション結果の評価
- 次の行動の決定
- 信頼度低下時や高リスク時の安全な停止
深刻な失敗の多くは、プロンプト自体ではなく、以下のような周辺レイヤーで発生する。
- 適切なタイミングで適切なコンテキストが提供されなかった
- ツールのインターフェースが曖昧で、制約が不十分だった
- 誤ったツールやアクションシーケンスを選択した
- 永続的なリカバリパスが設計されていなかった
- 発生した事象を観測する手段がなかった
- デモでは成功したが、本番トラフィック下で繰り返し失敗した
これは構造的な変化であり、強力なプロンプトがあってもシステムが脆弱であれば失敗する。現在は「プロンプトの質」ではなく「システムの質」が主要な差別化要因となっている。
エージェントエンジニアリングの基礎
3つのスキルセット
- プロダクト思考: 範囲の定義と挙動の形成を担う。数百から数千行に及ぶこともある駆動プロンプトの作成、再現すべき「職務(job to be done)」の深い理解、および意図通りに動作するかを検証する評価指標の定義を行う。
- エンジニアリング: 本番導入のためのインフラ構築を担う。エージェント用ツールの作成、UI/UX(ストリーミング、割り込み処理等)の開発、および永続的実行、Human-in-the-loop(人間による介入)、メモリ管理を扱う堅牢なランタイムを構築する。
- データサイエンス: パフォーマンスの測定と継続的な改善を担う。評価(evals)、A/Bテスト、モニタリングシステムの構築、利用パターンの分析、およびエラー分析を行う。
実践的な反復サイクル
信頼性の高いエージェントシステムを実現するには、「リリースして学ぶ」アプローチが必要である。
- 基礎の構築: 単純なLLM+ツールから複雑なマルチエージェントまで設計を行う。決定論的なワークフローと、LLM主導の自律的な判断の比率を決定する。
- 想定シナリオによるテスト: プロンプト、ツール定義、ワークフローの明白な問題を排除する。「網羅的にテストしてリリース」ではなく、「妥当にテストしてリリースし、真に重要な課題を学ぶ」考え方に移行する。
- 実世界での挙動確認: リリース後、想定外の入力に直面し、本番トレースを通じてエージェントが実際に処理すべき内容を把握する。
- 観測: すべてのインタラクション、ツール呼び出し、決定の根拠となったコンテキストをトレースする。本番データを用いて評価(evals)を行い、品質を測定する。
- 改善: 失敗パターンを特定し、プロンプトやツール定義を修正する。問題事例を回帰テスト用のシナリオに追加する。
- 繰り返し: 改善をリリースし、本番での変化を観察する。
エージェントエンジニアリングの5つの責務
- 制限付き自律性の定義: 目標、停止条件、および許容される操作範囲を定義する。自律的に次ステップを決定するタイミング、固定ワークフローに従うタイミング、承認が必要なアクション、停止・エスカレーションの基準を決定する。目的は自律性の最大化ではなく、問題を安全に解決するための「最小限の自律性」を適用することである。
- コンテキストとメモリの形成: 適切なワーキングコンテキスト、取得戦略、メモリ境界を決定する。今知るべきこと、オンデマンドで取得すること、実行をまたいで記憶すること、および忘却することを定義する。
- 推論とツール・実行の接続: ツール定義、スキーマ設計、引数の品質、リトライおよび失敗処理、権限境界、推論からアクションへのハンドオフなどを管理する。
- 回答ではなく挙動の評価: 単一の正解だけでなく、正しいパスを選択したか、適切なツールを用いたか、適切に回復したか、ポリシーを遵守したか、コストや時間が過剰でなかったかという「実行軌跡(trajectory)」を評価する。
- 本番システムの運用とガバナンス: トレース、ランタイムの可視化、回帰チェック、インシデントレビュー、コスト・レイテンシ制御、承認パス、ロールバックなどの運用規律を確立する。
ディシプリンの6つの柱
- アーキテクチャ: 単一かマルチエージェントか、プランナー・エグゼキューター型かスーパーバイザー・ワーカー型か、ワークフローグラフかオープンループか。モデル間のハンドオフやスキーマ制約の強制箇所など、トポロジーを設計する。
- コンテキストとメモリ: 検索設計、チャンク分割、クエリ再構成、短期・長期メモリ、コンテキスト圧縮、鮮度制御、メモリの書き込み・削除ポリシーなどを扱う。
- 評価(Evals)と信頼性: 計画品質、ツール選択、完了品質、回復挙動、再現性を測定する。エンドツーエンドのタスク成功率に加え、コンポーネントレベルのチェック、ポリシー遵守、コスト、レイテンシを品質指標に含める。
- 可観測性: 従来のログではなく、目標、取得コンテキスト、選択ツール、ツール戻り値、進路変更点、消費時間・コストを可視化するトレースを導入する。
- 運用(AgentOps): プロンプト・ツール・データセットのバージョン管理、サンドボックス → シャドウモード → カナリアリリースのフロー、コスト制限、ツール失敗時の回復、回帰時の迅速なロールバックなどを実現する。
- ガバナンス: 権限管理、読み取り専用ツールの定義、副作用のある操作の制限、人間による承認、監査トレイル、判断根拠の説明性を確保する。最小権限の原則、安全な実行境界、型定義されたインターフェース、不変のトレースなどをアーキテクチャとして実装する。
脆弱なシステムが失敗する理由
失敗の原因は、モデルの知能不足よりも、周辺レイヤーの脆弱性にあることが多い。
- 誤ったコンテキストを参照した
- メモリが古い、ノイジーである、またはスコープが不適切だった
- ツールの説明が曖昧だった
- 誤ったアクションシーケンスを選択した
- リトライ処理によって状況が悪化した
- 承認が必要なポリシー境界を越えた
- 原因を特定するための十分なトレースがなかった
デモでは「ハッピーパス」のみを提示すれば機能するが、本番環境では曖昧さ、繰り返し、劣化した入力、部分的な失敗、そして人間による精査に耐えなければならない。
結論
信頼性の高いエージェントを構築しているチームは、リリース前に完璧を目指すのではなく、本番環境を最大の教師として扱っている。すなわち、すべての決定をトレースし、大規模に評価し、数日単位で改善をリリースし続けている。
エージェントエンジニアリングが必要とされるのは、構築対象が単なる「モデルへのインターフェース」から、「制約下で知覚・推論・取得・行動・記憶・運用するシステム」へと変化したためである。プロンプトやモデルの質は依然として重要だが、競争の焦点は移行した。次なるフェーズで重要となるのは、適切なコンテキスト、制御、評価、テレメトリ、および運用判断を用いて、制限付き自律システムを現実世界で機能させられるチームである。
📚 参考文献
|