ReAct — сокращение от «reasoning and acting» («рассуждение и действие») — это шаблон промптинга, в котором модель чередует размышления о том, что делать, и выполнение этого с помощью инструмента. Его представили Яо и коллеги в 2022 году, и это базовый цикл внутри большинства современных ИИ-агентов.
Цикл
Агент ReAct повторяет три шага, пока не сможет ответить.
- Мысль (Thought). Модель рассуждает о том, что она знает и что ей нужно дальше.
- Действие (Action). Она выбирает инструмент и аргументы для его вызова.
- Наблюдение (Observation). Приложение запускает инструмент и возвращает результат модели.
Затем цикл повторяется, и наблюдение уже входит в контекст.
Question: Is order 8841 eligible for a refund?
Thought: I need the order date and the refund window.
Action: get_order(order_id="8841")
Observation: {"date": "2026-09-02", "status": "delivered", "custom": false}
Thought: Delivered and not custom. I need the policy window.
Action: get_policy(topic="refunds")
Observation: "Refunds within 30 days of delivery, excluding custom items."
Thought: 36 days have passed, so it is outside the window.
Answer: No. The 30-day refund window ended on 2 October 2026.
Рассуждение без действия не достаёт до фактов за пределами модели. Действие без рассуждения вызывает инструменты вслепую. Чередование позволяет каждому наблюдению влиять на следующее решение.
ReAct с современным вызовом инструментов
Исходная техника использовала текстовый формат, который разбирало приложение. В современных API моделей вызов инструментов встроен: вы описываете каждый инструмент именем, описанием и JSON Schema его параметров, а модель возвращает структурированный запрос на вызов одного из них. Цикл тот же; «сантехнику» берёт на себя API.
Благодаря этому промпт-инжиниринг переносится в три места.
1. Системный промпт
Опишите цель, ограничения и когда остановиться.
You are an order support agent. Use the tools to answer questions
about a customer's orders.
- Look up facts with tools. Do not guess order details.
- Call a tool only when its result is needed for the answer.
- If a tool returns an error, try once more with corrected arguments,
then tell the customer what could not be checked.
- Never issue a refund above $200. Escalate instead.
- Stop and answer as soon as you have enough information.
2. Описания инструментов
Модель выбирает инструменты только по их описаниям. Относитесь к каждому описанию как к промпту.
- Слабое:
get_order: gets an order - Лучше:
get_order: Returns date, status, items, and total for one order. Use when the customer mentions an order number. Does not include payment details.
Скажите, что инструмент возвращает, когда его использовать и чего он не делает. Чётко называйте параметры и описывайте их форматы.
3. Результаты инструментов
Наблюдения возвращаются в контекст, поэтому их форма важна. Возвращайте компактные размеченные данные, а не необработанную страницу HTML. Добавляйте явное сообщение об ошибке, на которое модель может отреагировать: «No order with that ID» полезно, трассировка стека — нет.
Типичные сбои
Циклы. Агент повторяет один и тот же вызов. Задайте максимальное число шагов и скажите модели, что делать при достижении лимита.
Злоупотребление инструментами. Она вызывает инструменты для того, что уже знает. Укажите, когда не вызывать.
Неверные аргументы. Она выдумывает идентификатор или формат. Ужесточите схему параметров и возвращайте ошибки, объясняющие ожидаемый формат.
Рост контекста. Каждое наблюдение перечитывается на каждом шаге, поэтому стоимость растёт пропорционально квадрату числа шагов. Обрезайте или резюмируйте старые наблюдения. См. оптимизацию токенов.
Инъекция через наблюдения. Веб-страница или документ, возвращённые инструментом, могут содержать инструкции. Модель может им последовать. Это косвенная инъекция в промпт, и это главный риск безопасности агентов. Помечайте результаты инструментов как данные, ограничивайте возможности инструментов и требуйте подтверждения для необратимых действий.
Преждевременные ответы. Она отвечает, не проверив. Требуйте, чтобы фактические утверждения брались из результата инструмента.
Когда использовать ReAct
| Ситуация | Что использовать |
|---|---|
| Шаги известны заранее | Цепочка промптов: дешевле и предсказуемее |
| Путь зависит от найденного | ReAct |
| Задаче нужны актуальные или закрытые данные | ReAct с инструментами поиска |
| Задача совершает действия в других системах | ReAct с подтверждением рискованных действий |
| Один поиск, затем ответ | Один шаг поиска, а не цикл |
Агент — самый гибкий вариант и самый трудный для обеспечения надёжности. Используйте его, когда гибкость необходима.
Инструменты для агентов через MCP
Model Context Protocol — стандартный способ предоставить агенту инструменты, так что один сервер инструментов работает со многими ИИ-приложениями. Сервер MCP PromptFlowEngine предоставляет анализ, реструктуризацию и очистку промптов в виде инструментов только для чтения. Агент может использовать их в собственном цикле, например чтобы очистить контекст перед передачей или превратить расплывчатую задачу в спецификацию до начала работы.
О более широком проектировании инструкций для агентов читайте в разделе промпты для ИИ-агентов.