自律型 AI エージェントの最大の強みは、与えられた高レベルな目標を自らサブタスクへ分解し、再帰的に実行を繰り返す点にあります。しかし実運用において、エージェントは容易に**タスクドリフト(Task Drift)**に陥ります。当初の主目的から逸脱し、無関係な技術的枝葉、無限タスク生成ループ、不要なスクリプト作成などに迷い込んでしまう現象です。AgentGPT のアーキテクチャ(計画、分析、実行、結果に基づく新規タスク生成のループ)では、適切な境界と制約を課さない限り、タスクドリフトは偶然ではなく必然的に発生します。
この課題を克服するため、開発者やワークフロー設計者は「二層制御モデル」を導入する必要があります。すなわち、プロンプト層での明確な範囲と終了条件を規定する**構造化ゴールプロンプト(Structured Goal Prompts)と、ランタイム層でのループ制限、低温度パラメータ、モデル選定、ツール制御からなる決定論的実行制約(Execution Constraints)**の組み合わせです。
AgentGPT でタスクドリフトが発生する根本的メカニズム
AgentGPT は FastAPI バックエンドと Next.js フロントエンドによって駆動されており、その内部フローを分解するとドリフトの発生要因が明確になります。
- 初期タスク分解(
/start): ユーザーが入力したGoalに基づき、バックエンドはstart_goal_prompt(Plan-and-Solve 手法)を呼び出して最初の 1〜5 個の検索クエリまたはサブタスクを生成します。 - タスク分析と実行(
/analyzeおよび/execute): エージェントはanalyze_task_promptで使用ツール(Web 検索、コード実行、社内検索等)を決定し、execute_task_promptで処理を実行します。このとき AgentGPT の標準プロンプトには “When confronted with choices, make a decision yourself with reasoning.”(選択肢に直面した際は、推論を伴い自身で判断せよ) と記されており、明示的な境界がない場合、モデルは投機的・発散的な選択を行います。 - 再帰的タスク生成(
/create): ここがドリフトの最大要因です。各タスク完了後、全体目標{goal}、未完了タスク{tasks}、直前タスク{lastTask}、直前結果{result}がcreate_tasks_promptに渡され、モデルに対して*「目標達成に近づくための新たな単一タスクを生成せよ」*と指示します。 - マルコフ的文脈ドリフト(Markovian Drift): もし
{result}の中に予期せぬ技術用語やエラー、副次的な情報が含まれていた場合、LLM は元の{goal}よりも直前の結果に強く引きずられます。4〜6 回のループを経ると、エージェントは当初の目標を忘れ、スクレイピングコードの修正やライブラリのインストール手順の調査といった局所的な作業に没頭してしまいます。 - 明確な完了条件の欠如: プロンプトには「これ以上タスクがなければ何も返さない」という指示が含まれているものの、自己回帰型言語モデルは本質的に生成を継続しようとする性質を持ちます。ゴール定義内で終了基準(Definition of Done)が明示されていない限り、上限ループ数に達するまで延々とタスクを生成し続けます。
1. 構造化ゴールプロンプトの設計手法
AgentGPT の UI は入力欄として単一の Goal を提供しているため、設計者はこのプロンプト内に運用規則と安全境界をすべて組み込む必要があります。「競合他社の価格を調査してレポートを作成せよ」といった曖昧なプロンプトは、確実にドリフトを引き起こします。
実務に耐えうる堅牢なプロンプトは、以下の5 要素構造化フレームワークを採用します。
[役割とペルソナ / ROLE]
客観的なデータ整理と事実要約に特化したシニア・リサーチアナリストとして振る舞ってください。
[主目的 / OBJECTIVE]
Product A、Product B、Product C の現在公開されている価格体系、最小契約シート数、エンタープライズ割引の条件を正確に抽出してください。
[厳格なスコープ境界と禁止事項 / SCOPE & ANTI-GOALS]
- 調査対象(IN-SCOPE): 公式サイト上に公開されている料金表、プラン別機能一覧、月額/年額の請求サイクル。
- 絶対禁止事項(OUT-OF-SCOPE / 実行不可):
* Web スクレイピングコード、API スクリプト、Python ツールを作成するタスクは一切生成しないこと。
* 創業者の経歴、資金調達履歴、PR 記事を調査しないこと。
* Product A、B、C 以外の第三者競合製品を調査しないこと。
* 対象サイトにアクセスできない場合は「価格取得不可」と記録し、即座に次の製品へ移行すること(障害原因の究明は行わない)。
[段階的線形実行指示 / PHASED EXECUTION]
タスクは以下の 3 つのフェーズに厳格に従って実行し、横道に逸れないこと:
- フェーズ 1: Product A の標準価格を取得し記録する。
- フェーズ 2: Product B および C の標準価格を取得し記録する。
- フェーズ 3: 収集結果を最終成果物に集約する。
これら 3 フェーズ以外の探索的タスクを新規作成してはならない。
[完了の定義と終了トリガー / DEFINITION OF DONE]
3 製品の比較データが揃った時点で目標は完全達成とみなします。最終 Markdown レポートを出力した後は、新たなタスクを絶対に生成せず、空文字列を返して即座に終了してください。
[成果物フォーマット / DELIVERABLE FORMAT]
列構成 [製品名 | プラン名 | 月額費用 | 年額換算費用 | 主な制限事項] を持つ Markdown 表を作成し、末尾に 150 文字以内の要約を付与すること。
プロンプト設計における重要ポイント
- 禁止事項(Anti-Goals)の明文化: エージェントに「何をすべきか」を伝える以上に、「何をしてはならないか(コードを書かない、寄り道をしない)」を具体的に指定することが極めて有効です。
- 線形フェーズの強制: 思考の広がりを単一のレール上に固定し、タスクツリーの無秩序な枝分かれを防ぎます。
- 確定的な終了トリガー: 表が完成した時点でタスク生成を停止するよう命じることで、
create_tasks_promptの過剰生成を防ぎます。
2. 決定論的実行制約の構成
プロンプトは本質的に「ソフト制約」であり、文脈が長くなるにつれてモデルが見落とす可能性があります。そのため、AgentGPT の実行時設定やインフラ設定による「ハード制約」を重ねて適用します。
1. 実行ループ回数の制限(max_loops)
AgentGPT の .env.example では、デフォルトで NEXT_PUBLIC_MAX_LOOPS="100" と定義されています。自律型エージェントに 100 回のループを許容することは、API コストの浪費と重度のタスクドリフトを招く危険な設定です。
- 推奨設定: UI 設定または API リクエストにおいて、最大ループ数を 4〜8 回 に制限します。
- 単一の明確なタスクであれば 5〜7 ステップで完結すべきです。8 ループで終了しない場合はタスクの粒度が大きすぎるため、複数の独立したエージェントに分割すべきです。
2. 温度パラメータ(Temperature)の引き下げ
AgentGPT では、独自の API キーを設定することで詳細設定から Temperature を変更できます。
- デフォルト値: 通常 0.7〜0.9 程度(創造的な会話向け)。
- 推奨設定: 0.0〜0.2 に設定。
- ランダム性を極小化することで、タスク生成時のばらつきを抑え、プロンプトに記述された禁止事項や出力形式を厳密に順守させます。
3. モデル選定: 高精度モデルの優先
AgentGPT では基盤モデル(GPT-3.5 系や GPT-4 系)を選択できます。
- GPT-3.5 系: ループが 2〜3 回進むとネガティブプロンプトを急速に忘却し、検索結果内の単語に反応して脱線しやすくなります。
- GPT-4 系: 複数ステップにわたる制約保持力が高く、複雑な禁止事項を維持し、完了基準に到達した際に正確に処理を停止できます。
4. ツール権限の分離
AgentGPT の外部ツール群(Search、Code、SID 等)は reworkd_platform/web/api/agent/tools/tools.py で管理されています。
- 調査系エージェントにコード実行ツール(Code Tool)を与えると、検索失敗時に勝手に「クローラーを書く」タスクを立ち上げ、エラー修正の無限ループに突入します。
- 不要な API キーを未設定にするか、
/analyzeリクエスト内のtool_namesを検索ツールのみに絞ることで、行動空間を安全に制限します。
3. ワークフロー設計: 単一巨大エージェントからマイクロエージェント連携へ
単一の AgentGPT セッションに業務の全工程(情報収集、分析、コード生成、レポート作成)を担当させることが、ドリフトの最大の設計的要因です。
ワークフロー設計者は、役割を特化させたマイクロエージェント・パイプラインを構築すべきです。
[業務指示の入力]
│
▼
┌──────────────────────────────────────────────┐
│ エージェント 1: データ収集(検索ツールのみ) │
│ - 制約: 最大 4 ループ、Temperature = 0.1 │
│ - 目標: A、B、C の公式価格情報テキストの取得 │
└──────────────────────────────────────────────┘
│ 生データ(Markdown 形式)
▼
┌──────────────────────────────────────────────┐
│ エージェント 2: データ抽出・検証(ツールなし)│
│ - 制約: 最大 2 ループ、テキスト解析のみ │
│ - 目標: ノイズを除去し標準 JSON に変換 │
└──────────────────────────────────────────────┘
│ 整形済み JSON データ
▼
┌──────────────────────────────────────────────┐
│ エージェント 3: 要約・レポート作成 │
│ - 制約: 単一ターン実行(/summarize エンドポイント) │
│ - 目標: JSON から比較表と最終レポートを生成 │
└──────────────────────────────────────────────┘
各エージェントの行動範囲が狭く固定されているため、途中で別の作業へと脱線する余地そのものが排除されます。
4. セルフホスト環境におけるソースコードレベルの保護策
Docker 等を用いて独自に AgentGPT を運用している場合、platform/reworkd_platform/web/api/agent/ 配下のコードを直接改修して制御を強化できます。
create_tasks_prompt(prompts.py)の強化: システムプロンプト内にタスク生成停止のハードルールを追加します。create_tasks_prompt = PromptTemplate( template="""You are an AI task creation agent. Objective: `{goal}`. Incomplete tasks: `{tasks}`. Last task: `{lastTask}`. Result: `{result}`. Strict Rules: 1. If the deliverable described in `{goal}` is already obtained, return NOTHING. 2. Do NOT create tasks involving new software tools, scripting, or off-topic domains. 3. Every new task must have a direct causal link to the completion of `{goal}`. If satisfied, respond with an empty string.""", input_variables=["goal", "language", "tasks", "lastTask", "result"], )- API 層での意味的類似度フィルタ(
views.py):/createエンドポイントで生成された新規タスクと、大元の{goal}の間でベクトルコサイン類似度を算出します。類似度が設定閾値(例: 0.65)を下回るタスクは即座に破棄することで、API レベルでドリフトを遮断します。
制御レイヤー別まとめ
| 制御レイヤー | ドリフトの要因 | 推奨プラクティス |
|---|---|---|
| ゴールプロンプト | 曖昧な指示と実行中ノイズによる脱線 | 5要素フレームワーク(役割、目的、禁止事項、フェーズ、完了条件)を徹底する。 |
| ループ回数 | 終了条件の欠落による無限タスク生成 | max_loops を 4〜8 回に制限し、デフォルトの 100 回を放置しない。 |
| Temperature | 高いランダム性による突飛なサブタスク | 0.0〜0.2 に設定して決定論的かつ収束性の高い挙動にする。 |
| 基盤モデル | 長期ループでの制約忘却 | 複雑な負の制約を追従できる GPT-4 等の高性能モデルを採用する。 |
| ツール制御 | 不適切なツールの誤用によるデバッグループ | 調査タスクではコード実行ツールを無効化し、検索のみに絞る。 |
| アーキテクチャ | 単一長大セッションによる文脈肥大化 | 単一目的のマイクロエージェントを直列に連携させるパイプラインを設計する。 |
ゴールを厳密な「契約仕様書」として提示し、システム側で物理的な制約を設けることで、AgentGPT は予測不能な実験ツールから、高い信頼性を誇る業務自動化エンジンへと進化します。