# Агентный цикл и критерий остановки

> Агент — это LLM, запущенная в цикле «думай → действуй → наблюдай». Звучит просто, но два вопроса определяют, будет ли агент работать: как он решает, что делать дальше, и как понимает, что пора остановиться. Второй вопрос на собеседованиях любят особенно.

Раздел: [Агенты и инструменты](https://ml-book.com/s/agents/) · Страница темы: https://ml-book.com/t/agent-loop/ · Обновлено: 2026-07-07 · Источник: ml-book.com, учебник делается сообществом

## Интуиция

Чат-бот отвечает на сообщение и умолкает. Пайплайн выполняет заранее заданную цепочку шагов. Агент (agent) — другое: модель *сама* решает, какие шаги нужны и сколько их будет. Дал задачу «почини баг» — и агент читает файлы, запускает тесты, правит код, снова запускает — пока не решит, что готово. Классическая формулировка этого цикла — **ReAct** (Reasoning + Acting): модель чередует рассуждение («тест ждёт 4, а функция возвращает 5 — где-то лишняя единица») и действие (вызов инструмента, см. [tool calling](https://ml-book.com/t/tool-calling/)), затем наблюдает результат и рассуждает снова.

## Как это работает

Один виток цикла: THINK → ACT → OBSERVE. Модель получает всю накопленную историю — задачу, свои прошлые действия и их результаты, — генерирует следующий tool call, код исполняет его, результат дописывается в контекст. Полная последовательность «мысль → действие → наблюдение → …» называется **траекторией (trajectory)** — именно её читают при отладке агента, а не только финальный ответ.

Когда цикл останавливается? Четыре критерия, обычно комбинируются:

- **Модель сама сказала «готово»** — ответила текстом без tool call. Самый дешёвый критерий и самый ненадёжный: «считаю, что готово» ≠ «готово».
- **Задача проверяемо выполнена** — тесты прошли, линтер молчит, файл существует. Самый надёжный критерий: успех превращается из мнения модели в наблюдаемый факт.
- **Лимит итераций / бюджет токенов** — страховка от бесконечного цикла и неограниченных расходов. Остановка по лимиту означает «не доделал», а не «провалил».
- **Детекция зацикливания** — агент повторяет одни и те же действия без прогресса (три раза подряд запускает один тест с тем же результатом). Это сигнал прервать или сменить стратегию.

Почему длинные циклы опасны: ошибки компаундятся. Если каждый шаг успешен с вероятностью 95%, траектория из 20 шагов доходит до конца с вероятностью

`0.95^{20} ≈ 0.36 — всего 36%`

Поэтому надёжность на шаг важнее «ума»: верификация результата (запуск тестов, модель-критик, проверка схемы вывода) даёт агенту заметить свою ошибку и исправиться — это резко поднимает итоговый процент успеха.

> **💡 Ключевая мысль**
>
> Лучший критерий остановки — внешняя проверка, а не самооценка модели. «Тесты зелёные» стоит бесконечно дороже, чем «модель уверена, что справилась».

> 🎛 Интерактивная визуализация — на странице темы: https://ml-book.com/t/agent-loop/

## Отладка траекторий

Главный рабочий инструмент агентостроителя — чтение траекторий. Финальный ответ может выглядеть прилично, а внутри — модель трижды прочитала не тот файл и «починила» тест, ослабив проверку. Типовые находки при разборе: агент не увидел важную часть вывода инструмента (обрезали результат), выбрал не тот тул из-за расплывчатого описания, зациклился на неработающей стратегии. Логируйте каждый виток: что модель думала, что вызвала, что получила — без этого агент неотлаживаем.

## Верификация: превращаем мнение в факт

Самый большой скачок надёжности даёт петля самопроверки: после «готово» агент обязан прогнать проверку — тесты, компиляцию, валидацию схемы, а для нечётких задач — модель-критика (critic / LLM-as-judge), которая оценивает результат по чек-листу. Провалилась проверка — наблюдение возвращается в цикл, и агент чинит дальше. В интерактиве выше это видно наглядно: без верификации агент «успешно» останавливается с недочиненным багом.

> **⚠️ Подводный камень**
>
> Лимит итераций — не критерий успеха, а предохранитель. Если агент регулярно упирается в лимит, неправильно просто поднять лимит и уйти: сначала прочитайте траектории — скорее всего, агент зацикливается или решает не ту задачу, и «ещё 10 итераций» лишь сожгут токены.

> **🎤 На собеседовании**
>
> - «Чем агент отличается от пайплайна?» — в пайплайне последовательность шагов задана кодом заранее; агент сам выбирает следующий шаг и их количество по ситуации.
> - «Как агент понимает, что пора остановиться?» — перечислите все четыре критерия и подчеркните: проверяемое условие успеха надёжнее самооценки модели.
> - «Почему агенты ломаются на длинных задачах?» — компаундинг ошибок: 95% на шаг это лишь ≈36% на 20 шагов; лечится верификацией и короткими проверяемыми подзадачами.
> - «Как отлаживать агента?» — читать траектории целиком, а не финальные ответы; искать зацикливания, потерянные наблюдения, неверный выбор тулов.

## Связанные темы

- [Tool calling: как модель вызывает инструменты](https://ml-book.com/t/tool-calling/)
- [Память, планирование и мультиагентные системы](https://ml-book.com/t/agent-memory/)
- [Оценка LLM: бенчмарки и LLM-as-judge](https://ml-book.com/t/llm-evals/)
- [Безопасность: guardrails и prompt injection](https://ml-book.com/t/safety-guardrails/)

---

Интерактив, тест из 12 вопросов и карточки терминов — на странице темы: https://ml-book.com/t/agent-loop/
Весь учебник в markdown: https://ml-book.com/llms-full.txt · Оглавление для агентов: https://ml-book.com/llms.txt
