Skip to content
このページは AI の支援により作成・翻訳されました。誤りがあれば、改善にご協力ください。 GitHub で編集

エージェントループ

エージェントループは、すべての PRX エージェントセッションを駆動する中心的な実行サイクルです。各イテレーションで LLM レスポンスを処理し、ツールコールをディスパッチし、メモリを管理し、継続するか最終回答を返すかを決定します。

ループライフサイクル

User Message


┌─────────────┐
│ Build Context│──── Memory Recall
└──────┬──────┘

┌─────────────┐
│ LLM Inference│──── Streaming Response
└──────┬──────┘

┌─────────────┐
│ Parse Output │──── Tool Calls / Text
└──────┬──────┘

   Tool Calls?
   ├── Yes ──→ Execute Tools ──→ Loop Again
   └── No  ──→ Return Response

ツールディスパッチ

LLM レスポンスにツールコールが含まれる場合、ループは以下を実行します:

  1. 各ツールコールをセキュリティポリシーに対して検証
  2. 承認されたコールを実行(並列実行も可能)
  3. 結果を収集して LLM にフィードバック
  4. 次の推論ステップのためにループを継続

ストリーミング

PRX は LLM レスポンスをトークンごとにクライアントにストリーミングしながら、同時にツールコール検出のためにバッファリングします。ストリーミングパイプラインは以下をサポート:

  • CLI または WebSocket クライアントへのリアルタイムトークン転送
  • クライアントが遅い場合のバックプレッシャー処理
  • Ctrl+C または API シグナルによるグレースフルキャンセル

メモリリコール

各 LLM コールの前に、ループはメモリシステムから関連するコンテキストを取得します:

  • 最近の会話ターン(スライディングウィンドウ)
  • エンベディングストアからのセマンティック検索結果
  • ピン留めされた事実とユーザープリファレンス

コンテキスト圧縮

会話がモデルのコンテキストウィンドウを超えた場合、ループは圧縮をトリガーします:

  1. 古いターンを凝縮された表現に要約
  2. まだ参照されているツールコール結果を保持
  3. システムプロンプトとピン留めされたメモリをそのまま維持

設定

toml
[agent.loop]
max_iterations = 50
parallel_tool_calls = true
compaction_threshold_tokens = 80000
compaction_strategy = "summarize"  # or "truncate"

関連ページ

Released under the Apache-2.0 License.