自律型 AI エージェントは、高レベルな目標を自律的に分解し、順を追って実行することに優れています。しかし、適切な実行制約を設けない場合、エージェントは容易にタスクの無限再帰に陥り、API 料金の予期せぬ高騰を引き起こします。AgentGPT では、エージェントが目標を分析して初期タスクを生成し、大規模言語モデル(LLM)でタスクを実行後、その結果に基づいて後続タスクを自律生成します。目標設定が曖昧であったり明確な終了条件がなかったりすると、エージェントは自己増殖するタスクループに入り込み、ループごとに大量の Token を消費し続けます。
タスクの無限再帰とコスト暴走を防ぐためには、ネイティブ UI 設定、目標プロンプト設計、セルフホスト環境のソースコード制限、そして上流の LLM プロバイダー側予算設定という 4 つのレイヤーで多層防御を構築することが不可欠です。
1. AgentGPT のネイティブ設定で実行制御を構成する
AgentGPT には、画面左下の設定アイコン(Settings ⚙)からアクセスできる組み込みの制御パラメータが用意されています。自身の OpenAI API キーを使用してエージェントを実行する前に、以下の設定を調整してください。
最大ループ回数(Loop)を厳格に制限する
- デフォルトの動作:API キーを設定した場合、AgentGPT は 1 エージェントあたり最大 25 サイクルまでの実行を許可します(未設定の無料デモでは約 4〜5 回)。
- 推奨設定:Settings ⚙ > Advanced settings(高度な設定)を開き、Loop スライダーを 5〜10 回 に制限します。
- 仕組み:1 回のループは「タスク選択 → LLM 実行 → 新規タスク生成」の 1 サイクルに相当します。カウンターが設定値に達すると、AgentGPT は自動的に処理を中断し、
The maximum number of loops have been reached, this agent is shutting down.(最大ループ数に達したため、エージェントを終了します)と表示して停止します。これによりバックグラウンドでの無限実行を確実に防ぎます。
1 回あたりの生成 Token 数(Tokens)を抑制する
- パラメータ:高度な設定の Tokens スライダーは、API 呼び出し 1 回あたりの最大生成トークン数(
max_tokens)を決定します。 - 推奨設定:長文レポートの出力が明確に必要な場合を除き、300〜500 Token に設定します。出力を簡潔に保つことで、過剰な推論テキストによる 1 ステップあたりのコスト膨張を防ぎます。
サンプリング温度(Temp.)を下げる
- パラメータ:温度(Temperature)はモデル出力のランダム性と多様性を制御します。
- 推奨設定:デフォルトの 0.7 前後から 0.2〜0.4 に下げます。温度を低く設定することで、LLM は論理的で確定的なタスクリストを生成するようになり、無関係な探索タスクを派生させるリスクを大幅に低減できます。
一時停止モード(Pause mode)による人間介入の確保
- モードの切り替え:Mode 項目で、デフォルトの Automatic mode(自動実行)から Pause mode(一時停止モード)に切り替えます。
- 実務上のメリット:自動モードでは新規タスクが即座に実行されますが、一時停止モードではタスクセットの完了ごとにエージェントが一時停止し、開発者が生成されたタスク一覧を確認・承認できるようになります。このヒューマン・イン・ザ・ループ(Human-in-the-loop)の仕組みは、ループ発生の早期検知に最も効果的です。
2. 目標(Goal)プロンプトの境界設計で再帰を遮断する
タスクの無限再帰の多くは、目標記述が抽象的すぎることに起因します。AgentGPT のタスク生成エージェントは、実行結果をトップレベルの目標と照合して追加タスクを考案するため、例えば「電気自動車市場の動向を調査する」といった広範な目標を与えると、際限なくサブタスクを追加し続けます。
Goal 入力欄には、以下のような境界条件を明記してください。
- 成果物の数量と形式を限定する:例「上位 3 つのオープンソース ベクトルデータベースを特定し、ライセンス体系を比較した Markdown 表を出力せよ」。
- 否定条件を明示する:例「商用プロプライエタリ製品の調査は行わないこと。上位 3 候補以外の検索は禁止する」。
- 明確な終了シグナルを指定する:例「比較表の出力が完了したら直ちに処理を終了し、『DONE』と出力して新規タスクを一切追加しないこと」。
3. セルフホスト環境におけるソースコード レベルのガードレール
公式リポジトリ(reworkd/AgentGPT)を用いてローカル環境や Docker で運用する場合、クライアントブラウザの設定だけに依存せず、コード側で制限を強制することが推奨されます。
AutonomousAgent.ts 内での最大ループ制限
フロントエンドの主要なエージェント制御コードは src/components/AutonomousAgent.tsx(またはエージェントオーケストレーター)に存在します。
- イテレーション管理ロジックを確認し、ブラウザのローカルストレージや UI 設定値に関わらず安全上限を超えるループが実行されないよう制限します。
- タスクキューの最大長(例:
tasks.length <= 10)を設定し、キューが溢れた場合は新規サブタスクの追加を拒否する処理を実装します。
サーバーサイドでの累積トークン制限
リクエストを自前のプロキシやバックエンド経由で中継している場合:
- 各
runIdの消費トークン(入力+出力)を合算管理します。 - 1 回の実行における累計トークン数が閾値(例:50,000 トークン)を超えた場合、即座に通信を切断し、フロントエンドに中断レスポンスを返送します。
4. 上流の LLM プロバイダー側で物理的な財務制限を設定する
ブラウザのクラッシュや非同期処理の競合により、アプリケーション側の制御をすり抜ける事態に備え、最も確実な防波堤はモデルプロバイダー側(OpenAI Platform など)の課金上限設定です。
- ハードリミット(Hard Limit)の有効化:OpenAI Platform > Settings > Billing > Usage limits にアクセスし、月次のハードリミット(Hard limit)を設定します。上限額に達すると、以降の API リクエストは直ちに
429エラーで遮断され、請求額の超過を物理的に防ぎます。 - ソフトリミット(Soft Limit)による早期アラート:予算の 50% 程度にソフトリミットを設定し、想定以上のペースでトークンが消費された際にメール通知を受け取れるようにします。
- プロジェクト別 API キーの分離:本番用のマスターキーを AgentGPT に入力せず、必ず実験専用のプロジェクト API キーを発行し、そのキーに個別予算を割り当てます。万一エージェントが暴走しても、影響範囲を限定的な予算内に隔離できます。
対策チェックリスト
| レイヤー | 設定項目 | 効果 |
|---|---|---|
| AgentGPT 画面 | Loop スライダー:5〜10 | 指定ループ数で強制終了し、無限サイクルを断絶。 |
| AgentGPT 画面 | Mode:Pause mode | 人手によるタスク確認を挟み、無駄な自動実行を阻止。 |
| AgentGPT 画面 | Tokens:300〜500 / Temp:0.2〜0.4 | 出力を簡潔に抑え、拡散的なタスク生成を防止。 |
| 目標プロンプト | 終了条件と否定指示の明記 | タスク生成エージェントによる自己増殖を抑止。 |
| セルフホスト | AutonomousAgent.ts のコード制限 | UI 迂回を防ぎ、システム側で上限を保証。 |
| OpenAI 画面 | Hard Limit と専用 Project Key | API 側で通信を物理遮断し、費用高騰を完全に阻止。 |
AgentGPT の組み込みループ設定、絞り込まれた目標プロンプト、そしてモデルプロバイダー側のハードリミットを組み合わせることで、開発者は予期せぬ課金トラブルを回避しながら、安全に自律型エージェントの検証を進めることができます。