Все рецепты

Мультиагентная команда на 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-вывод.