Зачем несколько агентов
Иногда вместо одного «универсального» агента выгоднее собрать команду специализированных. Разбираем, зачем и когда.
Мультиагентная система — несколько агентов, каждый со своей ролью и набором инструментов, которые совместно решают задачу, передавая работу друг другу.
Проблема «агента-универсала»
Можно дать одному агенту все инструменты и все инструкции сразу. Но с ростом задачи это ломается:
- Перегруженный промпт — десятки инструментов и правил в одном контексте; модель путается, какой инструмент когда брать.
- Смешение ролей — «и поищи, и посчитай, и оформи, и проверь» в одной голове даёт хуже результат, чем узкая фокусировка.
- Трудно отлаживать — всё свалено в один монолитный цикл.
Идея специализации
Вместо универсала — несколько узких агентов, у каждого своя роль, свой узкий промпт и свои инструменты:
- Исследователь — только ищет информацию.
- Аналитик — только считает и обрабатывает данные.
- Писатель — только оформляет результат.
- Критик — только проверяет качество.
Каждому проще: короткий промпт, понятная задача, минимум инструментов. Это та же декомпозиция, что в обычном программировании, — маленькие специализированные модули вместо одной гигантской функции.
Когда несколько агентов оправданы
- Задача естественно делится на разные роли (исследовать → проанализировать → написать → проверить).
- Каждой роли нужен свой узкий набор инструментов и стиль.
- Полезен независимый «взгляд со стороны» (критик, дебаты).
Когда НЕ стоит
Несколько агентов = больше вызовов LLM, больше координации, больше точек отказа. Для простой задачи один агент дешевле и надёжнее. Не начинайте с мультиагентной системы «потому что модно» — это премия за сложность, которую надо окупить.
Специализация на пальцах
Покажем, как «узкие» агенты-заглушки дают чистый результат, каждый занимаясь своим.
def researcher(topic):
facts = {"осень": "осенью холодает и желтеют листья"}
return facts.get(topic, "фактов нет")
def writer(fact):
return f"Короткий текст: {fact}."
def critic(text):
return "ок" if len(text) > 10 else "слишком коротко"
# каждый агент делает только своё
topic = "осень"
fact = researcher(topic)
text = writer(fact)
verdict = critic(text)
print("Исследователь:", fact)
print("Писатель:", text)
print("Критик:", verdict)
Вывод:
Исследователь: осенью холодает и желтеют листья Писатель: Короткий текст: осенью холодает и желтеют листья. Критик: ок
Каждая функция-агент проста и отвечает за одно. В настоящей системе за каждой стоял бы свой вызов LLM со своим узким промптом — но структура «роли и передача работы» та же.
Итог
- Агент-универсал с десятком инструментов перегружается; специализация упрощает каждую роль.
- Несколько узких агентов = понятные промпты, узкие наборы инструментов, легче отлаживать.
- Это премия за сложность: оправдана для делимых многоролевых задач, избыточна для простых.