SSkilvy

Агент — мощно, но не всегда нужно

Агенты впечатляют, и есть соблазн делать «агента» на всё. Но агент сложнее, дороже, менее предсказуем и рискованнее обычного вызова LLM. Часто задача решается проще — одним вызовом или фиксированной цепочкой шагов. Понимание, когда агент оправдан, а когда избыточен, — важное инженерное решение.

✕ Агент избыточен • простая разовая задача• один вызов решает• предсказуемый поток ✓ Агент оправдан • многошаговая задача• нужны инструменты и решения• путь заранее неизвестен
Агент оправдан для многошаговых задач с инструментами; для простого он избыточен.

Когда агент избыточен

  • Простая разовая задача: один вызов LLM решает — агент не нужен.
  • Предсказуемый фиксированный поток: если шаги известны заранее и всегда одинаковы, проще прописать их явно (обычный код + вызовы LLM), а не давать агенту «решать».
  • Где важна полная предсказуемость: агент по природе менее предсказуем.

Когда агент оправдан

  • Многошаговая задача: для решения нужна последовательность действий.
  • Путь заранее неизвестен: какие шаги нужны, зависит от промежуточных результатов.
  • Нужны инструменты и решения: получать данные, выполнять действия, адаптироваться.
  • Динамичность: задача требует реакции на то, что обнаружится по ходу.
Как решить, делать агента или обойтись проще?
Практический вопрос-фильтр: «Известны ли шаги решения заранее и всегда ли они одинаковы?» 1) ДА, шаги фиксированы и известны → НЕ нужен агент. Пропишите поток явно: обычный код + вызовы LLM в нужных местах. Например, «взять текст → классифицировать через LLM → сохранить результат» — это фиксированная цепочка, агент избыточен. Явный поток предсказуемее, дешевле, надёжнее, легче отлаживать. 2) НЕТ, путь зависит от промежуточных результатов, задача многошаговая и динамичная → агент оправдан. Например, «исследуй эту тему, найди релевантные источники, проанализируй и сделай вывод» — какие именно шаги и в каком порядке, зависит от того, что найдётся; агент решает по ходу. Важные соображения против агента (не злоупотребляйте): — Сложность: агента труднее построить, отладить, контролировать. — Предсказуемость: агент менее предсказуем — он сам решает шаги, что может пойти не так, как ожидали. — Стоимость: агент делает много вызовов LLM (цикл думать-действовать), это дороже одного вызова. — Риск: агент, действующий инструментами автономно, — источник рисков (об этом модуль про безопасность). Практическое правило: начните с самого простого решения. Один вызов справляется? Используйте его. Фиксированная цепочка? Пропишите явно. Только если задача действительно требует динамического многошагового решения с инструментами, где путь неизвестен заранее, — стройте агента. Не делайте «агента ради агента»: это модно, но часто избыточно и рискованно. Правильный вопрос не «как сделать агента?», а «нужен ли здесь агент вообще, или задача решается проще и надёжнее?».

Начинайте с простого

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

Цена автономности

Помните о плате за агентность: сложность (труднее строить и отлаживать), непредсказуемость (агент сам решает шаги), стоимость (много вызовов LLM в цикле), риск (автономные действия инструментами). Эти минусы оправданы, когда задача действительно выигрывает от автономности, и не оправданы, когда её нет. Осознанный выбор «агент или проще» экономит массу проблем.

Правило: агент оправдан для многошаговых динамичных задач с инструментами, где путь неизвестен заранее. Для простого и предсказуемого — обойдитесь одним вызовом или явной цепочкой. Начинайте с простого.

🧠 Когда лучше НЕ делать агента?