Skip to content
Эта страница создана и переведена с помощью ИИ. Если вы заметили неточности, помогите нам улучшить её. Редактировать на GitHub

Цикл агента

Цикл агента — это центральный цикл выполнения, управляющий каждой сессией агента PRX. Каждая итерация обрабатывает ответ LLM, диспетчеризирует вызовы инструментов, управляет памятью и решает, продолжать цикл или вернуть финальный ответ.

Жизненный цикл

Сообщение пользователя


┌─────────────┐
│Формирование │──── Извлечение памяти
│  контекста   │
└──────┬──────┘

┌─────────────┐
│ Инференс LLM│──── Потоковый ответ
└──────┬──────┘

┌─────────────┐
│Разбор вывода│──── Вызовы инструментов / Текст
└──────┬──────┘

   Вызовы инструментов?
   ├── Да ──→ Выполнить инструменты ──→ Повторить цикл
   └── Нет ──→ Вернуть ответ

Диспетчеризация инструментов

Когда ответ 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"  # или "truncate"

Связанные страницы

Released under the Apache-2.0 License.