広告枠を募集中 ご相談ください

AgentGPTでループ制限を設定しタスク出力をエクスポートしてトークン浪費を防ぐ方法

365Finds Editorial
Wiki 記事 11,430 本収録

あなたの AI で 365 Wiki を使う

下のプロンプトをコピーして、普段使っている AI に貼り付け、そのまま質問してください。

完全版 Skill をダウンロード

まずはプロンプトでお試しください。よく使う場合は完全版 365Wiki Skill をインストールすると、毎回貼り付ける必要がありません。普段使う AI がなければ、Gemini や Microsoft Copilot のウェブ版でも使えます。

自律型AIエージェントは、高レベルな目標を自律的にサブタスクへ分解し、再帰的に実行を進める強力な仕組みを備えています。しかし、適切な制限を設けない再帰的ループは、APIトークンを一気に消費してしまう最大の原因にもなります。エージェントが論理的なデッドロックに陥ったり、アクセスできないWebページの解析を繰り返したり、無限にサブタスクを増殖させたりすると、わずか数分でAPI予算が枯渇する危険があります。Reworkdが開発したオープンソースプラットフォーム「AgentGPT」では、開発者がこのリスクを回避するために2つの主要な制御手段を提供しています。それが厳格な実行ループ制限(Loop limits)の設定と、**マルチフォーマットでのタスク出力エクスポート(Task outputs export)**です。

エージェントを起動する前にループ回数とトークン枠を設定し、完了時や中断時に成果物を確実に抽出することで、安全かつ予測可能な自律ワークフローを実現できます。


1. AgentGPTの再帰的ループとトークン消費の仕組み

なぜループ制限が不可欠なのかを理解するために、AgentGPTの実行サイクルを確認しておきましょう。

  1. 目標の取り込み(Goal Ingestion):ユーザーが入力した主目標を受け取り、LLM(GPT-3.5-TurboやGPT-4など)を呼び出して初期のサブタスク一覧を生成します。
  2. タスクの実行と分析(Task Execution):キューの先頭にあるサブタスクを取り出し、モデルや外部ツールを用いて実行し、中間結果を記録します。
  3. 新規タスクの生成(Task Creation):得られた結果に基づき、さらに必要なサブタスクが存在するかを判定してキューに追加・再構成します。
  4. 再帰的サイクル(Recursive Loop):ステップ2と3がタスク完了または制限到達まで繰り返し実行されます。

このサイクルの1巡を「実行ループ(Loop)」と呼びます。1ループごとに複数回のAPIリクエストが発生し、蓄積されるコンテキスト履歴も増大していきます。目標が曖昧であったりツール実行が失敗し続けたりすると、無限ループが発生し、急激なトークン消費につながります。


2. ユーザーインターフェースでのループ制限設定

AgentGPTのWebブラウザ画面およびローカルUIでは、設定画面から直感的に実行上限をコントロールできます。

詳細設定へのアクセス

  1. AgentGPTの画面を開き、左側メニューバーの Settings(⚙️ 設定) をクリックするか、直接 /settings にアクセスします。
  2. 認証ログイン(GitHub、Google、Discord)を完了しているか、またはセルフホスト環境であることを確認します。公式ホスティング版では、公開リソース保護のため、未ログインのゲスト状態では Advanced Settings(高度な設定) が無効化されています。

ループスライダーの調整(customMaxLoops)

Advanced Settings 内にある Loop パラメータを設定します:

タスク種別ごとの推奨ループ目安

コスト管理を強化する周辺パラメータ

ループ制限とあわせて、同画面内の以下の項目も調整することが推奨されます:


3. 実行時のリアルタイムライフサイクル制御

事前設定だけでなく、実行中もコンソール上部のコントロールボタン(AgentControls)で柔軟に介入できます:


4. セルフホスト環境とバックエンドでの環境変数設定

Dockerやソースコードを用いてローカル環境や自社インフラで運用する場合、バックエンドおよびコードレベルで全体の上限を縛ることができます。

バックエンド環境変数での制限

AgentGPTのPythonバックエンド(reworkd_platform)はPydanticを用いて設定を管理しており、環境変数による全体ループ制限に対応しています:

# .env ファイルに記述
REWORKD_PLATFORM_MAX_LOOPS=20

これは platform/reworkd_platform/settings.py の settings.max_loops に反映され、クライアント側が上限を超えようとしてもサーバー側でシャットダウンされます。

フロントエンドのスライダー上限変更

独自に上限を拡張または縮小したい開発者は、Next.jsフロントエンドのコードを直接書き換えることが可能です:


5. タスク出力と成果物のエクスポート

エージェントが目標を完了した際、あるいはループ上限や手動停止で終了した際、得られたデータを素早くエクスポートすることで、セッション再読み込みによる消失や再実行によるコスト重複を防止できます。

コンソール画面のエクスポートメニュー

チャットウィンドウの右上ヘッダー(MacWindowHeader)にある Export アイコン(CgExport)から、3通りの方法で出力できます:

  1. クリップボードへコピー(Copy):
    • 画面上に描画されたメッセージ全体のテキスト(innerText)を抽出します。
    • 目標、追加されたサブタスク、実行ログ全体をプレーンテキストとしてクリップボードへ即座にコピーします。
  2. 画像保存(Image / PNG):
    • html-to-image ライブラリを使用して、スクロール可能なメッセージ一覧(element.scrollHeight)全体をDOMレンダリングします。
    • agent-gpt-output.png として高解像度画像をダウンロードし、視覚的な記録や共有資料として活用できます。
  3. 構造化PDF(PDF):
    • @react-pdf/renderer を利用した PDFButton により、メッセージ履歴をセクション別に構造化してPDF生成します:
      • Agent Goal(全体目標)
      • Adding Task(派生したサブタスク)
      • Executing(実行したタスクと取得された調査結果)
    • 整形された my-document.pdf をダウンロードでき、報告書や提出資料としてそのまま利用可能です。

プラットフォームの一括エクスポートとデータベース連携


6. コスト管理の実践ベストプラクティス

  1. 実行前のループ数チェックを習慣化:タスク投入前に必ず Settings を確認し、検証フェーズではループ数を 5 〜 10 程度に抑えて実行します。
  2. ループ数とトークン制限の併用:Loop 数に加え、maxTokens(1250 〜 2000など)も同時に制限することで、呼び出し回数と1回あたりの生成長の両面から予算を保護します。
  3. 序盤のサブタスクを監視:最初の2〜3タスクが意図通りに分解されているかを観察し、脱線が確認されたら迷わず Pause や Stop で中断します。
  4. 完了・停止直後のエクスポート:エージェントの停止直後に Copy または PDF で即座にログを保存し、リロードによるデータ消失を防ぎます。

(※ オープンソース版 reworkd/AgentGPT は2026年1月にアーカイブされ読み取り専用となっています。自社フォークや派生基盤を運用する開発者は、本アーキテクチャパターンを踏まえて安全策とエクスポート機能を保守してください。)


参考文献