Когда нужен агент, а когда хватит промпта

Агент — не всегда правильный выбор. Учимся отличать задачи, где нужен автономный цикл, от тех, где хватит одного промпта.

Правило по умолчанию — начинай с самого простого решения (один промпт); усложняй до агента только тогда, когда задача этого реально требует.

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

Агент мощнее простого промпта, но платит за это:

  • Стоимость — один запрос пользователя превращается в несколько вызовов LLM (мысль, действие, ещё мысль…). Платите за каждый.
  • Латентность — несколько вызовов подряд = секунды и десятки секунд ожидания.
  • Непредсказуемость — агент может пойти не туда, зациклиться, вызвать не тот инструмент.
  • Сложность — больше кода, больше точек отказа, труднее отлаживать.

Поэтому вопрос не «крутой агент или скучный промпт», а «оправдывает ли задача эту цену».

Когда хватит одного промпта

Если задачу можно решить за один проход на основе того, что модель уже знает, — агент не нужен. Признаки:

  • Не нужны свежие или внешние данные (всё есть в промпте или в знаниях модели).
  • Шаги известны заранее и их немного.
  • Нет действий во внешнем мире.

Примеры: переписать абзац, перевести текст, классифицировать отзыв, извлечь сущности, объяснить код. Здесь агент только добавит стоимость и риск.

Когда нужен агент

Агент оправдан, когда выполняется хотя бы несколько условий:

  • Нужны инструменты — точный счёт, свежие данные, запрос к API/базе, выполнение кода.
  • Число и порядок шагов заранее неизвестны — зависит от промежуточных результатов.
  • Задача многоэтапная — «найди X, на основе X сделай Y, проверь Z».
  • Нужна адаптация — реагировать на ошибки и переделывать.

Примеры: «исследуй тему и собери отчёт со ссылками», «отладь и почини этот код», «спланируй поездку с учётом цен и дат».

Промежуточные варианты

Между «один промпт» и «полный автономный агент» есть ступени — часто их и достаточно:

ПодходСутьКогда
Один промптодин вызов LLMзадача в один проход
Цепочка (chain)фиксированная последовательность вызововшаги известны заранее
Промпт + инструменты (1 раунд)модель вызывает инструмент один разнужен 1 факт извне
Агент (цикл)модель сама ведёт многошаговый процессшаги неизвестны, нужна адаптация

Простая эвристика выбора

Формализуем правило выбора как функцию-подсказку.

def choose_approach(needs_tools, steps_known, num_steps):
    if not needs_tools and num_steps <= 1:
        return "Один промпт"
    if steps_known:
        return "Фиксированная цепочка (chain)"
    return "Агент (автономный цикл)"

cases = [
    ("перевести текст",        False, True, 1),
    ("саммари + перевод",      False, True, 2),
    ("исследовать тему",       True,  False, 5),
    ("посчитать по свежим данным", True, False, 3),
]
for name, tools, known, n in cases:
    print(f"{name:30} -> {choose_approach(tools, known, n)}")

Вывод:

перевести текст                -> Один промпт
саммари + перевод              -> Фиксированная цепочка (chain)
исследовать тему               -> Агент (автономный цикл)
посчитать по свежим данным     -> Агент (автономный цикл)

Итог

  • Агент платит стоимостью, латентностью, непредсказуемостью и сложностью — это нужно окупить.
  • Один промпт — для задач в один проход без внешних данных; цепочка — когда шаги известны заранее.
  • Агент — когда нужны инструменты, а число и порядок шагов заранее неизвестны.
Проверьте себя
1. Какая задача почти наверняка НЕ требует агента?
AИсследовать тему и собрать отчёт со ссылками
BПеревести абзац текста на английский
CОтладить и починить незнакомый код
DСпланировать поездку с учётом актуальных цен
2. Чем агент расплачивается за свою мощь по сравнению с одним промптом?
AМеньшей точностью модели
BСтоимостью, латентностью, непредсказуемостью и сложностью
CНевозможностью использовать инструменты
DПотерей доступа к контексту
3. Когда вместо полноценного агента уместна фиксированная цепочка (chain)?
AКогда нужны инструменты
BКогда последовательность шагов известна заранее
CКогда задача требует адаптации к ошибкам
DКогда число шагов заранее неизвестно
Поддержать проект