Цикл «Думаю — Делаю — Пробую» (ReAct)
🤔 Зачем это читать
Ты даёшь агенту задачу посложнее: «разберись с жалобой клиента № 2207 и подготовь ответ». И ждёшь, что он, как ты привык от чата, выдаст готовый ответ за пару секунд. А он молчит. Десять секунд, двадцать, полминуты. На экране что-то крутится. Внутри неприятный холодок: завис? сломался? я переплачиваю за тормоза?
Знакомо? Или другой вариант, ещё обиднее. Ты привык, что AI отвечает мгновенно одной фразой — и переносишь эту привычку на сложную многошаговую задачу. Скармливаешь её одним куском: «посчитай, проверь по системе, сверь с договором и напиши вывод». Получаешь складный ответ — и он неверный, потому что половину шагов агент пропустил или склеил наугад. Ты делаешь вывод: «для серьёзного он не годится». А он годится. Просто он работает не так, как ты думаешь.
Дело в том, что сложную задачу хороший агент решает не одним махом, а по кругу: подумал → сделал один шаг → посмотрел, что вышло → поправил → снова. По-научному этот круг называется агентный цикл, или ReAct (цикл «рассуждение — действие — наблюдение»). Те самые «тормоза», которые тебя пугают, — это и есть круги: агент честно сходил в систему, посмотрел результат и решает следующий шаг. Он не завис. Он работает.
После этой темы ты перестанешь читать «думает долго» как «сломалось» — и начнёшь читать как «делает несколько кругов, каждый стоит времени и денег». Ты сможешь сам разложить рабочую задачу на круги цикла и прикинуть, во сколько кругов она обойдётся. Это граница между «AI меня бесит, он тупит» и «я понимаю, что под капотом, и оцениваю по делу».
Задержись на 10 секунд. Вспомни последний раз, когда сам делал что-то сложное за несколько подходов — готовил блюдо по новому рецепту, собирал отчёт, чинил настройку. Ты ведь не сделал всё с первой попытки вслепую? Попробовал, посмотрел на результат, поправил, попробовал снова. Подержи эту картинку. К концу страницы окажется, что агент справляется со сложным ровно так же — и это не баг, а единственный способ.
🥄 Повар не угадывает соус с первого раза — он пробует ложкой
В теме 4.1 про инструменты мы разобрали, как агент «приделывает руки»: модель выписывает заявку, инструмент реально лезет в систему и приносит результат. Один такой поход — это один шаг. А теперь главный вопрос: что агент делает, когда одного шага мало? Когда задача сложная и за один заход её не закрыть? Тут начинается самое интересное. И снова проще всего понять на кухне.
Представь, повар варит соус. Он не знает заранее, сколько соли, сливок и сколько держать на огне, — точные цифры зависят от продуктов сегодня. Что он делает? Подумал («кажется, жидковато») → сделал шаг (добавил ложку сливок, подержал минуту) → попробовал ложкой (зачерпнул, оценил вкус). Жидко всё ещё? Думает заново, делает ещё шаг, пробует снова. И так по кругу, пока соус не «тот самый». Никакой повар на свете не угадывает идеальный соус с первой попытки вслепую. Он доводит его по кругу, и проба ложкой — обязательный шаг каждого круга.
Вот это «подумал → сделал → попробовал → снова» и есть агентный цикл (ReAct) один в один. Три слова, которые стоит запомнить:
- Рассуждение (думаю) — агент-повар прикидывает: что сейчас нужно сделать, какой следующий маленький шаг приблизит к цели. «Чтобы ответить клиенту, мне сперва нужен его баланс.»
- Действие (делаю) — агент делает один шаг: зовёт инструмент. «Спрашиваю в 1С баланс клиента № 2207.» Это та самая «рука» из темы 4.1.
- Наблюдение (пробую) — агент смотрит на результат, который вернул инструмент. «Баланс = 18 000 ₽, задолженности нет.» Это и есть проба ложкой — дегустация. Без неё агент не знает, что у него вышло, и куда двигаться дальше.
А дальше — снова по кругу: на основе наблюдения агент думает заново («баланс чистый, теперь подниму историю заказов»), делает следующий шаг, наблюдает. И так круг за кругом, пока задача не будет готова — тогда он останавливается и выдаёт финальный ответ. Ровно как повар перестаёт пробовать, когда соус «тот самый».
🧩 Почему нельзя «одним махом», и зачем вообще этот круг
Логичный вопрос: почему агент не сделает всё разом, как кажется логичнее и быстрее? По двум причинам, и обе важно понять как владельцу.
Первая: агент не знает результат заранее. Чтобы решить, что делать дальше, ему нужно увидеть, что вышло сейчас. Повар не может «спланировать весь соус вслепую» — пока не попробует, он не знает, досолить или хватит. Агент так же: пока инструмент не вернул баланс клиента, агент не знает, предлагать ли отсрочку или сразу гнать в оплату. Наблюдение — это топливо для следующего рассуждения. Нет пробы — нет понимания, куда идти.
Вторая, и она денежная: круг позволяет агенту поправить себя сам. Сделал шаг, посмотрел на результат — «ой, в системе нет такого клиента, я ошибся номером» — и на следующем круге исправился, не дёргая тебя. Без круга агент выстрелил бы наугад один раз и сдал бракованный результат с уверенным лицом. С кругом он ловит и правит собственные промахи по ходу. Именно это превращает его из «угадайки на один выстрел» в работника, который доводит дело. (Как он это делает аккуратнее — отдельная большая тема про самопроверку, к ней мы ещё придём.)
И вот тут — разгадка «думает долго», ради которой ты сюда пришёл. Каждый круг — это отдельный вызов модели плюс реальный поход инструмента в систему. Три круга — три «обращения к повару» и три «походов в кладовую». Они идут последовательно, друг за другом: пока не вернулась проба с этого круга, следующий не начать. Отсюда секунды ожидания. Это не зависание — это агент честно отрабатывает круги. И отсюда же берётся цена, но об этом чуть ниже.
🧾 Как это выглядит изнутри (на пальцах)
Разложим один заход по кругам на псевдокоде — это просто логика на человеческом языке, не настоящий код. Сцена: клиент просит подтвердить, можно ли отгрузить ему заказ в долг.
задача = «Можно ли отгрузить клиенту № 2207 заказ на 40 000 ₽ в долг?»
# --- круг 1 ---
ДУМАЮ: чтобы решить, нужен баланс и лимит долга этого клиента
ДЕЛАЮ: зову инструмент «1С» → узнать баланс клиента № 2207
ПРОБУЮ: инструмент вернул «долг сейчас = 18 000 ₽, лимит = 50 000 ₽»
# --- круг 2: думаю уже ЗНАЯ результат круга 1 ---
ДУМАЮ: 18 000 + 40 000 = 58 000 — это больше лимита 50 000, считаю точно
ДЕЛАЮ: зову инструмент «калькулятор» → 18 000 + 40 000
ПРОБУЮ: инструмент вернул «58 000»
# --- круг 3: результат ясен, цель достигнута → СТОП ---
ДУМАЮ: 58 000 превышает лимит 50 000 — отгружать в долг нельзя
ОТВЕТ: «Нет: с этим заказом долг станет 58 000 ₽ при лимите 50 000 ₽»
# → агент остановился сам, как только понял ответ. Лишних кругов не делал.
Видишь устройство? Три круга, и в каждом честно отработаны все три шага: подумал → сделал → посмотрел. Каждый следующий круг опирается на пробу предыдущего: агент не угадал ответ сразу, а добрался до него по кругу, проверяя себя на каждом шаге настоящими числами из системы. И остановился ровно тогда, когда цель достигнута, — не раньше (иначе ответил бы наугад) и не позже (иначе жёг бы деньги впустую). Это «вовремя остановиться» — отдельная тонкая штука, и когда оно ломается, агент крутится по кругу бесконечно. Об этом — следующая тема модуля.
🎮 Собери круг цикла по порядку
Задача агенту: «Узнать, не просрочена ли оплата у клиента, и если да — отправить ему вежливое напоминание». Ниже — шаги одного прохода цикла, но они перемешаны. Расставь их в правильном порядке кнопками ↑ / ↓: агент должен сперва подумать, потом сделать шаг инструментом, потом посмотреть на результат — и так круг за кругом, пока не дойдёт до ответа. Опора простая: первый шаг любого круга — всегда «думаю», за ним «делаю», за ним «пробую». Когда выстроишь — жми «Проверить».
📖 Ключевые понятия
- Агентный цикл, ReAct (цикл «рассуждение — действие — наблюдение»)
- Способ, которым агент решает сложную задачу: не одним махом, а по кругу — подумал, какой шаг нужен → сделал один шаг инструментом → посмотрел на результат → снова, пока не готово. Каждый круг опирается на результат предыдущего. Это и делает агента агентом, а не просто болтливым чатом.
- Рассуждение (думаю)
- Первый шаг каждого круга: агент прикидывает, какой следующий маленький шаг приблизит к цели. Не «решить всё разом», а «что нужно прямо сейчас».
- Действие (делаю)
- Второй шаг: агент делает один конкретный шаг — зовёт инструмент (заглянуть в систему, посчитать, отправить). Это та самая «рука» из темы 4.1.
- Наблюдение (пробую)
- Третий шаг: агент смотрит на результат, который вернул инструмент. «Проба ложкой» — дегустация. Без наблюдения агент не знает, что у него вышло, и не понимает, куда двигаться дальше. Топливо для следующего круга.
- Условие остановки
- Правило «когда перестать крутиться»: как только цель достигнута, агент останавливается и выдаёт финальный ответ — как повар перестаёт пробовать, когда соус «тот самый». Если это условие сбоит, агент крутится бесконечно (про это — следующая тема).
🛡️ Частые заблуждения
«Агент долго крутится и не отвечает мгновенно — значит, завис или тормозит»
Чаще всего нет. Если задача сложная, агент честно идёт по кругам: думает, ходит инструментом в систему, смотрит результат — и так несколько раз подряд. Каждый круг — это реальная работа, а не простой. Секунды ожидания — это цена того, что он доводит дело по-настоящему, а не выпаливает первое, что пришло. Зависание — это когда кругов нет совсем; «думает долго» — это когда их много.
«Лучше дать агенту всю сложную задачу одним куском — так быстрее и проще»
Наоборот, хуже. На сложной многошаговой задаче «одним махом» агент склеит шаги наугад и выдаст складный, но неверный результат — он же не видел промежуточных проб. Круг для того и нужен, чтобы каждый шаг опирался на настоящий результат предыдущего. «Быстро и одним куском» — это лотерея; «по кругам» — это работа.
«Раз агент сам себя проверяет по кругу — значит, человек ему вообще не нужен»
Не путай. Цикл помогает агенту ловить и править свои технические промахи (ошибся номером, недосчитал) без дёрганья человека на каждом шаге — это его сила и экономия. Но круг не делает результат гарантированно правильным и не отменяет проверку на важных, необратимых действиях. «Сам себя проверяет» ≠ «безошибочен». Где ставить человека на контроль — отдельный важный разговор дальше в курсе.
🧠 AI-чутьё (AI Judgment)
Цикл = агент сам ловит и правит ошибки, но каждый круг стоит денег
Главная рамка темы: цикл — это то, что позволяет агенту справляться со сложным самому, не дёргая человека на каждом шаге. Сделал шаг, попробовал ложкой, увидел промах, поправился на следующем круге — и так доводит задачу до результата без твоего участия. Вот где живёт удобство и экономия: одна сложная задача уходит целиком, а не возвращается к тебе на каждой развилке. Это и есть переход от «AI, который отвечает» к «агенту, который делает».
Но у медали есть оборотная сторона, и её надо держать в голове, оценивая любой AI-проект: каждый круг — это отдельный вызов модели, то есть время и деньги. Три круга — втрое дольше и втрое дороже одного. Поэтому цикл прекрасен на сложных штучных задачах, где цена ошибки высока и важно, чтобы агент сам всё выверил (разбор сложной жалобы, подготовка нестандартного предложения). И он же — дорогое излишество на простом массовом потоке, где хватило бы одного ответа: гонять десятки кругов на каждый типовой запрос — это жечь бюджет ради красоты.
Практический вывод владельца: оценивая агентную задачу, прикидывай не только «справится ли он», но и «сколько кругов это займёт и во сколько обойдётся каждый». Сложно и редко — циклу самое место. Просто и часто — задумайся, не дешевле ли решить без всякого хождения по кругу. Где именно цикл срывается в бесконечное верчение и как поставить ему предохранитель — разберём прямо в следующей теме.
🎯 Практика
Одно задание на пять минут — оно превращает книжный «цикл» в твой рабочий навык раскладывать задачи на круги.
- Возьми ту сложную задачу, что держал в голове с начала страницы (или любую многошаговую со своей работы, которую хотел бы отдать AI). Запиши её в одну строку.
- Разложи её на круги цикла. Для каждого круга выпиши три строки: думаю (что мне сейчас нужно?), делаю (какой шаг инструментом — заглянуть, посчитать, отправить?), пробую (какой результат я ожидаю увидеть?). Например, «подготовить ответ на жалобу»: круг 1 — поднять историю заказов клиента; круг 2 — проверить условия возврата по этому товару; круг 3 — сложить ответ. Дойди до момента, когда цель достигнута и агент останавливается.
- Посчитай круги. Сколько их вышло? Это число — твоя прикидка, насколько «долго думает» и во сколько вызовов модели обойдётся такая задача. Если кругов один-два — задача почти простая, цикл тут не главное. Если пять-семь и больше — это серьёзная агентная работа, и теперь ты понимаешь, почему она не делается за секунду и почему стоит дороже.
Помнишь холодок «он завис?» из начала страницы, когда агент молчал полминуты? Теперь у тебя есть другой взгляд: он не завис — он крутит круги, и ты примерно знаешь, сколько их там и почему. Это и есть разница между «AI меня бесит» и «я понимаю, что под капотом».