Skip to main content

ReAct Pattern (Reasoning + Acting)(Алгоритмічний патерн міркування та дії)

Фундаментальний алгоритмічний патерн автономних агентів, що чергує кроки внутрішніх міркувань (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 Pattern (Reasoning + Acting)

Чисте мислення (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) у якість і точність результату.

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