Agent vs Workflow

Выбор между agentic workflow (LLM встроен в заранее заданный путь кода: step1 → step2 → step3) и AI-агентом (LLM сам динамически решает последовательность). Главное правило: начинай с простого, агентом делай только то, что нельзя предопределить.

Суть

  • Workflow — оркестрация LLM и инструментов через предопределённый code path. Разработчик пишет шаги; LLM — часть потока, но не управляет им. Детерминированно, предсказуемо, легко аудировать.
  • AI-агент — LLM сам управляет процессом и выбором инструментов; разработчик задаёт цель и tools (см. AI Agent, цикл ReAct). Гибко, но менее предсказуемо, дороже по latency.

Зачем это нужно

Агентизация повышает latency и стоимость, поэтому оправдана не всегда. По материалу: ~80% задач закрываются workflow. Неверный выбор = либо хрупкий «агент» там, где хватило бы скрипта, либо негибкий workflow на открытой задаче.

Как работает (когда что)

  • Workflow: задача понятна, сценариев мало, цена ошибки высокая, нужна предсказуемость и аудит. Пример: обработка заявок classify → route → reply → log.
  • Agent: открытая задача, много путей решения, решения зависят от контекста. Пример: deep research план → поиск → чтение → декомпозиция → отчёт.
  • Лестница сложности: один LLM-call + RAG → workflow → агент. Поднимайся только при необходимости.
  • То же различие на уровне фреймворков: линейная цепочка (LangChain LCEL) ≈ workflow; граф с ветвлениями/циклами (LangGraph) ≈ агент. Тезис «агенты — это графы, а не цепочки» — это и есть выбор «agent vs workflow», выраженный в коде (см. LangGraph vs LangChain).
  • Следующая ступень лестницы — один агент vs команда агентов. То же правило 80% действует и здесь: мультиагентная связка нужна лишь ~в 20% случаев (разные специализации, высокая цена ошибки, параллелизм), иначе платишь оркестрационный overhead зря (см. Multi Agent Systems).

«80%» здесь — риторическое Парето, а не измерение

Это число кочует по базе: ~80% задач закрываются workflow (здесь), в ~80% случаев не нужна мультиагентная система (Multi Agent Systems), 80% трафика уходит на дешёвую модель (Agent Routing), 80% задач классификации упираются в плато качества (Model Selection), высокое усилие рассуждения оправдано примерно в 20% задач (Reasoning Effort), 80% проектов остаются демо (AI Agent). Источники разные, но совпадение цифры ничего не подтверждает: это одна и та же риторическая фигура, повторённая разными источниками, а не шесть независимых замеров. Измерением из этого ряда является только разбор причин отказа в Benchmarks Agents, где 78,7% набираются сложением трёх названных категорий.

Практическое следствие важнее самой оговорки. Правило применено здесь дважды подряд — сначала к выбору «workflow против агента», потом к выбору «один агент против команды». Если брать проценты всерьёз, они перемножаются: мультиагентная связка оказывается уместна примерно в 4% задач, а не в 20%. Порядок величины правдоподобен и совпадает с наблюдением, что MAS почти всегда избыточна, но выводить его из перемножения двух риторических восьмидесяток нельзя. Правильное чтение: каждая ступень лестницы отсеивает подавляющее большинство случаев, и оценивать нужно свою задачу на своей ступени, а не подставлять готовую долю.

Как проверить критерий на практике

Формулировка «исход не предопределён» проверяется одним вопросом: можете ли вы выписать последовательность шагов заранее, не зная содержания конкретного запроса? Если да — это workflow, и агент там будет дороже и менее предсказуем при том же результате. Если состав и порядок шагов становятся известны только после того, как отработал предыдущий, — это агент.

Практический признак того же самого: зависит ли следующий вызов инструмента от результата предыдущего. Линейная цепочка «извлечь → перевести → сохранить» не зависит и агентом быть не должна, сколько бы LLM в ней ни участвовало.

Гибрид — норма, а не компромисс. Типовая продакшен-форма: детерминированный workflow, внутри которого один шаг агентный — там, где ветвление действительно непредсказуемо. Так сохраняется трассируемость всего процесса и ограничивается зона, в которой возможна непредсказуемость (Hybrid Orchestration). Обратный порядок — агент, вызывающий детерминированные шаги, — тоже работает, но отлаживается хуже, потому что план каждый раз новый.

Альтернативный взгляд: «4 уровня агентности» вместо бинарного деления

Вместо бинарного «workflow vs агент» — градация автономности. Полезна, потому что «агентом» называют что угодно (от сложного промпта до целой системы с БД):

  1. Простая LLM — обычный чат: ввод → ответ, без принятия решений.
  2. Маршрутизация — появляется логика if/else на базе намерения пользователя (запрос → нужная база/ветка). Первый уровень «агентности»: решение принимает модель.
  3. Использование инструментов — вызов функций/API (function calling) как часть ответа.
  4. Многошаговый агент — выполняет сценарий из нескольких действий перед финальным результатом.

Эта шкала уточняет «лестницу сложности» из основной части: переходы 1→2→3→4 — это и есть та самая постепенная агентизация, которую стоит включать только по необходимости. Верхний уровень соответствует Agentic RAG (агент сам управляет циклом retrieval).

Критерий третьей ступени: владение, а не сложность

Лестница выше отвечает на вопрос «когда агент», но не отвечает, когда агентов должно стать несколько. Книга по архитектуре агентных систем даёт для этого отдельный признак — разные владельцы результата: многоагентная схема оправдана не тогда, когда задача сложная, а когда подзадачи независимы, живут в разных контекстах и принадлежат разным командам.

Проверка формулируется как требование к объяснению: если команда не может в одном абзаце сказать, зачем здесь нужен именно агент, он скорее всего не нужен; если не может объяснить, зачем нужна многоагентная схема, — она почти наверняка преждевременна.

Промежуточные формы, которые пропускают

Между рабочим процессом и полной автономностью лежит несколько паттернов, и правильный вопрос звучит не «нужен ли нам агент», а «какой более мелкий паттерн уже решает задачу достаточно безопасно»:

  • prompt chaining — задача раскладывается на фиксированные последовательные шаги с проверкой между ними;
  • routing — входящие делятся на классы, каждому нужны свои подсказка и инструменты (Agent Routing);
  • parallelization — уверенность или задержка улучшаются разнесением независимых проверок;
  • orchestrator-workers — подзадачи заранее неизвестны и делегируются динамически (Hierarchical Decomposition);
  • evaluator-optimizer — итеративная критика действительно улучшает артефакт (Generator Evaluator).

Это не приёмы промптинга: каждый паттерн меняет, где в рантайме стоят контрольные точки, подтверждения, повторы и границы трассировки (Agent Execution Platform).

Связано с

  • AI Agent — что такое агент (вторая половина выбора)
  • ReAct — цикл, делающий агент «недетерминированным»
  • Agent Routing — внутри workflow можно роутить шаги на разные модели
  • Agentic RAG — верхний уровень агентности (агент управляет retrieval-циклом)
  • LangGraph vs LangChain — «граф vs цепочка» = тот же выбор на уровне фреймворка