Мультиагентная команда на CrewAI: координатор + специалисты
CrewAI — это фреймворк, в котором несколько AI-агентов работают как настоящая команда: у каждого своя роль, свои инструменты и своя зона ответственности. Разбираем, как собрать исследовательскую команду из координатора и специалистов — от проектирования ролей до отладки первого реального сценария.
СреднийAI-агенты25 минCrewAI, Python, SerperDev API
1
А точно нужна команда?
Каждый новый агент — это плюс к времени выполнения, расходу токенов и сложности отладки. Поэтому первый вопрос не «как настроить CrewAI», а «стоит ли вообще?» Команда оправдана в трёх случаях: задача не влезает в одно контекстное окно, разным частям нужны разные инструменты, или нужна встроенная проверка — один агент критикует другого. Во всех остальных случаях один агент с хорошим промптом справится дешевле и быстрее.
Нужна ли команда агентов?
Задача не помещается в одно контекстное окно
Разные части требуют разных инструментов (поиск + код + текст)
Нужна встроенная проверка: один агент критикует другого
Простая линейная задача с одним инструментом
Скорость важнее качества
Правило двух попыток: сначала решите задачу одним агентом. Если результат плохой из-за сложности (не из-за промпта) — тогда переходите к команде.
2
Роли — это должностные инструкции, а не декорации
У каждого агента три компонента: goal (что он максимизирует), backstory (как он думает), tools (что может вызывать). Самое недооценённое — backstory. Это не красивая строчка для лога, это скрытый системный промпт. «Ты критичный редактор, который ищет слабые места» даст совсем другой результат, чем «Ты помощник, который улучшает текст». А самая частая ошибка — не описать, что агент НЕ делает. Без этого агенты «заползают» на чужую территорию и дублируют работу.
| Роль | Что делает | Что НЕ делает | Инструменты |
|---|---|---|---|
| Исследователь | Ищет факты, источники, данные | Не интерпретирует, не пишет выводы | SerperDev, web scraper |
| Аналитик | Структурирует и сравнивает данные | Не ищет новые источники | Только контекст |
| Автор | Пишет итоговый текст | Не проверяет факты | Только контекст |
Исследователь:
цель: найти проверенные факты и первоисточники
личность: "дотошный фактчекер, не интерпретирует"
инструменты: [поиск]
НЕ делает: выводы, рекомендации, текст
Автор:
цель: написать текст на основе чужого анализа
личность: "доверяет данным аналитика полностью"
инструменты: [] (только контекст предыдущего шага)
НЕ делает: поиск фактов, проверку источников3
Последовательно, а не параллельно — и вот почему
Интуиция говорит: параллельно = быстрее. Но в исследовательских задачах каждый шаг зависит от предыдущего, и параллельность тут — источник конфликтов, а не ускорения. Process.sequential в CrewAI передаёт результат каждого агента следующему автоматически через context. Предсказуемо, легко отлаживать, и достаточно для 80% задач. Параллельность стоит пробовать, только когда у вас есть независимые ветки — например, исследователь по рынку и исследователь по конкурентам работают одновременно.
Исследователь
факты
Аналитик
анализ
Автор
текст
Итог
задача_1: "Найди 5 фактов о {тема} с источниками"
исполнитель: исследователь
ожидаемый результат: "факт + URL + дата"
задача_2: "Напиши резюме на 300 слов"
исполнитель: автор
контекст: результат задачи_1
ожидаемый результат: "текст без выдумок"
порядок: последовательный (результат → контекст)Всегда указывайте expected_output — CrewAI использует это как критерий успеха. Без него агент не знает, когда остановиться, и может зациклиться.
4
Лишние инструменты — лишние проблемы
Каждый инструмент, который вы даёте агенту — это ещё одна развилка, на которой он тратит токены и может свернуть не туда. Исследователь получает SerperDev — ему нужен поиск. Аналитик и автор не получают ничего — они работают только с контекстом предыдущего шага. Если дать автору инструмент поиска, он начнёт гуглить вместо того, чтобы писать по данным аналитика.
Отдельная ловушка: комбинирование SerperDev и WebsiteSearchTool в одном агенте. Звучит как «больше возможностей», на практике агент путается, какой из них вызвать, и часто выбирает неоптимальный. Лучше два специализированных агента с одним инструментом каждый — один ищет, другой скрейпит конкретные страницы.
Если агент «галлюцинирует» факты — первая проверка: есть ли у него инструмент поиска? Агент без поиска с задачей «найди факты» будет выдумывать их. Это не баг агента — это ошибка конфигурации.
5
Verbose — ваш рентген. Без него вы слепы
Первый запуск — всегда с verbose=True. Это не опция для отладки, а ваши глаза внутри системы: как каждый агент рассуждает, какие инструменты вызывает, что передаёт дальше. Три сигнала, на которые стоит смотреть: агент долго «думает» без вызова инструментов — задача слишком абстрактная; вызывает инструмент в петле — expected_output неструктурирован; передаёт в context огромный текст — следующий агент потеряется.
❌ Симптом
- Агент придумывает факты
- Игнорирует предыдущий контекст
- Вызывает инструмент в петле
- Результат хуже одного агента
✅ Лечение
- Добавить инструмент поиска
- Указать формат в expected_output
- Конкретизировать description задачи
- Пересмотреть границы ролей (шаг 2)
запуск с verbose=True → смотрим:
кто какой инструмент вызвал
сколько итераций потратил каждый агент
что передал следующему в контекст
три сигнала проблем:
долго думает без вызова инструментов → задача абстрактная
вызывает инструмент по кругу → expected_output нечёткий
передаёт слишком много текста → фильтровать контекстСтавьте max_iter=5 при разработке. По умолчанию 15 — бесконечная петля обойдётся дорого. Типичный первый запуск команды из 3-4 агентов занимает 2-5 минут.
Результат
Работающая мультиагентная команда: исследователь находит факты, аналитик структурирует, автор пишет. Вы понимаете, когда команда нужна, а когда один агент справится лучше, как проектировать роли и читать verbose-вывод.