Журнал ·
Агент или workflow: как не построить лишнего агента
Чем агент отличается от workflow с LLM, какие паттерны закрывают большинство задач и что агент добавляет к стоимости, отладке и рискам.
Агент сам решает, какой шаг сделать следующим. Workflow выполняет шаги, порядок которых задан заранее, даже если внутри шагов работает LLM. Большинство прикладных задач решается workflow, и агент нужен только там, где последовательность действий нельзя расписать заранее.
Это не спор о модном слове. От выбора зависят стоимость каждого запроса, предсказуемость, отладка и то, что система может сломать, если ошибётся.
Чем они различаются на самом деле
В workflow управление держит код. Модель может классифицировать обращение, извлечь поля, написать ответ — но что происходит после её шага, решает программист.
В агенте управление отдано модели. Цикл выглядит так: модель смотрит на текущее состояние, выбирает действие — вызвать инструмент, задать вопрос, закончить, — получает результат и решает снова. Сколько будет шагов и каких, заранее неизвестно.
Агент — это не «модель плюс инструменты». Чтобы такая система работала в production, ей нужны состояние, цикл управления, память, разрешения на инструменты, ограничители, оценка и наблюдаемость. Если половины из этого нет, получается демо, а не система.
Паттерны, которые закрывают большинство задач
Прежде чем строить агента, стоит проверить, не укладывается ли задача в один из workflow-паттернов:
- Цепочка — шаги один за другим: извлечь данные → проверить → сформулировать ответ.
- Маршрутизация — модель классифицирует вход, а код отправляет его по нужной ветке: возврат в одну обработку, вопрос о доставке — в другую.
- Параллельная обработка — несколько независимых вызовов сразу, например проверить документ по разным критериям.
- Оркестратор и исполнители — одна модель разбивает задачу на подзадачи, другие их выполняют. Это уже ближе к агенту, но структура всё ещё задана кодом.
- Генератор и оценщик — одна модель делает, другая проверяет и возвращает на доработку, пока результат не пройдёт критерий.
В программе эти паттерны сначала пишутся «на голом коде», без фреймворков. Когда видишь, что маршрутизация — это классификация плюс if, пропадает желание брать для неё агентный фреймворк.
Когда агент оправдан
Признак один: шаги и их порядок нельзя определить заранее, они зависят от того, что система узнает по ходу.
Например, разбор инцидента: неизвестно, какие логи понадобятся, пока не посмотришь первые. Или исследовательская задача, где каждый найденный документ меняет, что искать дальше. Здесь расписать ветки заранее не получится — их слишком много или они не известны.
Обратные признаки — повод остаться на workflow:
- вы можете нарисовать блок-схему процесса, и она помещается на экран;
- ошибка стоит дорого, а результат нужно объяснять и воспроизводить;
- важна предсказуемая стоимость запроса.
Часто правильный ответ — гибрид: workflow с одним «агентным» шагом там, где действительно нужна свобода.
Что агент добавляет к стоимости и рискам
Деньги и время. Каждая итерация цикла — новый вызов модели с растущим контекстом. Без бюджета на число шагов и на стоимость агент может ходить по кругу. В программе бюджет шагов и денег — обязательная часть агента, а не оптимизация на потом.
Отладка. Ошибку workflow ищут в конкретном шаге. Ошибку агента — в траектории: почему на третьем шаге он выбрал не тот инструмент. Без трассировки всей траектории это гадание.
Оценка. Для workflow достаточно проверить результат. Для агента проверяют ещё и путь: дошёл ли до цели, какими инструментами, не сделал ли лишнего.
Безопасность. Агент сам вызывает инструменты, значит, может вызвать и не тот. Права даются по минимуму, а необратимые действия — удалить, отправить, оплатить — только через подтверждение человеком. Агент с правом на необратимое действие без подтверждения в нашей программе — критическая ошибка, которая закрывает гейт общего ядра.
Частые вопросы
Если в workflow есть LLM, это уже агент? Нет. Модель внутри шага — это исполнитель. Агентом система становится, когда модель решает, что делать дальше.
Можно ли начать с агента, а потом упростить? Можно, но обычно дороже. Проще начать с workflow и дать модели свободу ровно в том месте, где фиксированные ветки перестали справляться, — и замерить, что это дало.
А нужен ли агенту MCP? Не обязательно. MCP — способ подключить инструменты; агент может вызывать их и напрямую. Когда MCP оправдан — в статье про MCP.
Где это в программе
Workflow-паттерны — модуль L5.5: три паттерна на «голом» коде. Агенты — уровень L7: агент как инженерная система, уровни автономии, граф состояний с бюджетами, подтверждение рискованных действий и оценка траекторий. На экзамене общего ядра нужно спроектировать агента под кейс и письменно обосновать, почему здесь агент, а не workflow — или наоборот.
