Skip to main content

ReAct Паттерн (Мышление + Действие)

Фундаментальный алгоритмический паттерн автономных агентов, который чередует шаги внутренних размышлений (Thought), выполнения внешних инструментов (Action) и анализа полученного результата (Observation).

1. Обзор концепции и системная проблема

До появления концепции ReAct (опубликованной исследователями Принстонского университета и Google Research в 2022 году) в сообществе существовал раскол между двумя подходами к автоматизации LLM:

  1. Chain-of-Thought (Только мышление): Модель пишет длинные цепочки размышлений, но не имеет доступа к внешнему миру. В результате логика размышлений выглядит убедительно, однако основывается на вымышленных фактах и устаревших данных.
  2. Act-Only (Только действие): Модель вызывает API или выполняет bash-команды без промежуточного самоанализа. Это приводит к хаотичным повторам, слепому перебору параметров и неспособности решить даже простые многократные задачи.

Паттерн ReAct (Reasoning + Acting) объединил эти две силы в единый итеративный цикл: модель сначала вербализирует свои мысли и планирует следующий шаг, затем выполняет целевое действие, анализирует фактический результат окружающей среды (Observation) и только после этого принимает следующее решение.

2. Архитектурная таксономия и ментальная модель

Классический шаг цикла ReAct состоит из трех последовательных состояний:

  • 1. Thought (Внутреннее размышление): Агент анализирует текущее состояние задачи, выдвигает гипотезу и формулирует конкретный намерение: «Мне нужно проверить, запущен ли сервис Redis на порту 6379, прежде чем запускать тесты». Этот этап критически снижает вероятность ошибок в аргументах инструментов.
  • 2. Action (Вызов действия / инструмента): Агент формирует конкретное действие с жесткими параметрами: название функции и валидный JSON-объект (например, execute_bash(command="systemctl status redis")).
  • 3. Observation (Наблюдение окружающей среды): Внешний рантайм перехватывает действие, выполняет его на сервере или в базе данных и возвращает сырой текстовый вывод или код ошибки обратно в контекст агента.
  • 4. Finish / Final Answer (Завершительное состояние): Когда агент видит в последнем Observation, что цель достигнута, он останавливает цикл и формирует итоговый ответ пользователю.

3. Технический пайплайн и внутренняя механика

Жизненный цикл работы ReAct-агента в программной среде:

  1. Context & Scratchpad Injection (Подготовка промпта): В системный промпт встраиваются правила взаимодействия, описания доступных инструментов и история предыдущих итераций текущей сессии (Scratchpad).
  2. Inference with Tool Delimiter (Генерация размышления и намерения): LLM генерирует токены секции Thought. Как только модель доходит до вызова инструмента, генерация приостанавливается клиентом, а аргументы вызова валидируются.
  3. Execution & Observation Feedback (Выполнение в среде): Оркестратор передает команду соответствующей подсистеме (локальному терминалу, базе данных или браузеру), считывает вывод, ограничивает его длину для экономии токенов и добавляет сообщение Observation: ... к контексту.
  4. Loop Progression & Termination Check (Проверка выхода): Если агент достиг цели или счетчика max_iterations = 10, цикл прерывается. В противном случае начинается следующая итерация с новым блоком Thought.

4. Практические инженерные сценарии в продакшене

01. Интерактивная диагностика и ремонт серверной инфраструктуры

  • Thought: Сервис возвращает ошибку 502. Сначала проверю логи Nginx за последние 5 минут.
  • Action: read_logs(service="nginx", lines=20)
  • Observation: connect() failed (111: Connection refused) while connecting to upstream 127.0.0.1:3000
  • Thought: Апстрим на порту 3000 упал. Нужно проверить статус процесса Node.js через PM2.
  • Action: execute_cmd(command="pm2 status")
  • Observation: app-server: errored (out of memory)
  • Thought: Сервис упал из-за нехватки памяти. Перезагружу его с большим лимитом heap.

02. Итеративный поиск в документации и API

Агент пытается вызвать внешний сервис Stripe. На первом шаге он получает ошибку invalid_api_key. Через блок Thought агент вспоминает, что для тестового режима нужен префикс sk_test_, подтягивает правильную переменную окружения и со второй попытки успешно создает платежное намерение.

03. Пошаговая отладка юнит-тестов

Кодовый агент видит падение теста из-за расхождения ожидаемого значения. Он выдвигает гипотезу, вносит минимальное изменение в одну строку, перезапускает тест, видит зеленый результат и только тогда отчитывается о выполнении задачи.

5. Подводные камни, типовые ошибки и безопасность

  • Зацикливание на ложной гипотезе (Self-Reinforcing Delusion): Если на первом шаге модель сделала ошибочный вывод, она склонна интерпретировать все последующие Observation в пользу своей ошибки. Решение: обязательное добавление шага критики (Reflection) после 3 неудачных действий подряд.
  • Раздувание контекста от сырых наблюдений: Команда cat huge_file.json возвращает 50 000 токенов мусора, вытесняя системный промпт. Всегда ограничивайте размер возвращаемого Observation в рантайме (например, не более 2000 символов).
  • Вызов несуществующих инструментов (Action Hallucination): Модель пытается вызвать инструмент, которого нет в списке. Решение: использование нативного API Tool Calling вместо сырого парсинга текста.
/ Частые вопросыSchema.org FAQPage

FAQ: ReAct Паттерн (Мышление + Действие)

Чистое мышление (Chain-of-Thought) страдает от отсутствия связи с реальностью: модель оперирует устаревшими данными и галлюцинирует факты. Чистое действие (Act-only) действует вслепую методом хаотических попыток и ошибок. ReAct позволяет модели сначала обосновать действие в мыслях, выполнить его во внешнем мире и скорректировать свое мировоззрение на основе реального результата (Grounding).
/ Внутренняя перелинковка
Все термины
Агенты и MCP

AI-агенты (Autonomous Agents)

Программные системы на базе LLM, способные самостоятельно воспринимать состояние окружающей среды, декомпозировать сложные цели, вызывать внешние инструменты и итеративно исправлять собственные ошибки.

Читать термин
Агенты и MCP

Tool Calling (Function Calling)

Низкоуровневый механизм языковых моделей, позволяющий им надежно генерировать валидированные параметры в формате JSON для выполнения функций во внешней программной среде.

Читать термин
Агенты и MCP

Plan-and-Solve Prompting

Двухступенчатая агентская архитектура, разделяющая стратегическую декомпозицию задачи на глобальный план и его последовательное тактическое выполнение с динамическим перепланированием.

Читать термин
Промпты и RAG

Цепочка размышлений (Chain of Thought - CoT)

Методология побуждения языковой модели генерировать последовательные промежуточные шаги размышлений перед формированием финального ответа, что конвертирует дополнительные токены (Test-Time Compute) в качество и точность результата.

Читать термин