Как использовать CrewAI: Практическое руководство по многоагентным рабочим процессам
Смелое обещание: Если вы когда-либо хотели клонировать своего лучшего товарища по команде, чтобы быстрее справиться с проектом, то CrewAI приближает вас к этому — посредством организации работы нескольких ИИ-агентов, которые планируют, сотрудничают и вместе выполняют работу.
В этом практическом, ориентированном на решения руководстве вы узнаете, как именно использовать CrewAI: от установки фреймворка и определения агентов до создания ролей, инструментов, задач и структурированных многоагентных рабочих процессов, которые обеспечивают реальные результаты. Мы рассмотрим шаблоны для исследований, контента, анализа данных и генерации кода — и то, как избежать распространенных ошибок, таких как тупики агентов, раздувание промптов и злоупотребление инструментами.
Наша цель: предоставить вам пошаговый путь «попробуйте сегодня» с кодом, который можно копировать и вставлять, проверенные лучшие практики и несколько шаблонов рабочих процессов, которые вы можете адаптировать. Независимо от того, автоматизируете ли вы исследование рынка или создаете спецификацию продукта на основе тикетов, это ваш путь к эффективному использованию CrewAI.
Что такое CrewAI (и чем он отличается)
- CrewAI — это фреймворк для создания многоагентных систем, где у каждого агента есть роль, цель, инструменты и правила. Затем фреймворк координирует этих агентов — передавая задачи, обмениваясь контекстом и итеративно двигаясь к результату.
- В отличие от одного LLM-промпта, CrewAI обеспечивает структуру: агенты определены явно, задачи модульные, инструменты имеют разрешения, а результаты поддаются аудиту.
- Преимущество: декомпозированные рабочие процессы (исследование → синтез → написание → QA), которые отражают то, как работают реальные команды — только быстрее, масштабируемее и воспроизводимее.
Быстрый старт: Как использовать CrewAI за 10 минут
Ниже представлен минимальный шаблон, который позволит вам перейти от нуля к работающей многоагентной команде. Будем считать, что вы используете Python.
1) Установка и настройка
pip install crewai langchain-openai python-dotenv
Создайте файл .env с ключами вашего LLM-провайдера:
OPENAI_API_KEY=sk-your-key
# или других провайдеров, поддерживаемых вашим стеком
2) Определите своих агентов (Роли + Цели + Инструменты)
from crewai import Agent
from langchain_openai import ChatOpenAI
llm = ChatOpenAI(model="gpt-4o-mini", temperature=0.2)
researcher = Agent(
role="Исследователь рынка",
goal="Найти достоверные, актуальные сведения о целевом рынке и конкурентах.",
backstory=(
"Вы — усердный аналитик, который проверяет утверждения, цитирует источники и обобщает "
"сигналы из авторитетных публикаций."
),
tools=[], # добавьте веб/поиск/инструменты для сбора данных позже
llm=llm
)
strategist = Agent(
role="Стратег продукта",
goal="Синтезировать результаты исследований в четкое позиционирование и варианты дорожной карты.",
backstory="Вы отдаете приоритет ясности, осуществимости и измеримым результатам.",
tools=[],
llm=llm
)
writer = Agent(
role="Автор контента",
goal="Создать хорошо структурированный бриф с примерами и дальнейшими шагами.",
backstory="Вы пишете на кратком, убедительном английском языке и следуете руководствам по стилю.",
tools=[],
llm=llm
)
3) Создайте задачи (Входные данные, Выходные данные и Критерии приемки)
from crewai import Task
research_task = Task(
description=(
"Исследовать рынок программного обеспечения для управления проектами в сегменте малого и среднего бизнеса (SMB) в США в 2025 году. "
"Определить ведущих конкурентов, ценовые категории, идеальных клиентов (ICP) и три неудовлетворенные потребности. "
"Вернуть маркированный список с 3–5 цитатами."
),
expected_output=(
"Краткий отчет в формате Markdown с разделами: Размер рынка, Ключевые игроки, Цены, ICP, "
"Неудовлетворенные потребности, Источники (со ссылками)."
),
agent=researcher
)
synthesis_task = Task(
description=(
"Используя исследовательский отчет, составить заявление о позиционировании, 2–3 отличительных признака "
"и 90-дневную дорожную карту с вехами."
),
expected_output="Краткая стратегическая записка (<= 400 слов).",
agent=strategist
)
writing_task = Task(
description=(
"Превратить стратегическую записку в одностраничный документ для публичного использования. Включите заголовок, "
"ценностное предложение, маркированный список функций и призыв к действию (CTA)."
),
expected_output="Одностраничный документ в формате Markdown, подходящий для целевой страницы.",
agent=writer
)
4) Организуйте команду (Поток + Память)
from crewai import Crew
crew = Crew(
agents=[researcher, strategist, writer],
tasks=[research_task, synthesis_task, writing_task],
process="sequential", # передавать результаты по порядку
verbose=True
)
result = crew.kickoff
print(result)
Это ваш первый рабочий конвейер. Вы определили агентов, связали задачи и запустили последовательный поток. Чтобы расширить его, добавьте инструменты (поиск, сбор данных, выполнение кода), этапы проверки и параллельные этапы.
Ментальная модель для проектов CrewAI
Думайте как менеджер проекта:
- Роли: Кто что делает? Исследователь, Аналитик, Инженер, Рецензент.
- Правила: Каким стандартам необходимо соответствовать? Руководство по стилю, цитирование, тесты.
- Инструменты: Какие возможности разрешены? Веб-поиск, векторная база данных, Python, API.
- Задачи: Как мы разбиваем проблему? Входные данные, выходные данные, критерии приемки.
- Передачи: Что передается дальше? Артефакты, метаданные, ограничения.
- Обратная связь: Кто проверяет? QA-агент, человек в цикле или тесты.
С помощью CrewAI ваш код кодирует эту операционную модель.
Как использовать CrewAI для реальной работы: 5 проверенных шаблонов
1) Исследование → Синтез → Составление (Контент и отчеты)
- Агенты: Исследователь, Редактор, Писатель, Фактолог.
- Инструменты: Веб-поиск, проверка источников, руководство по стилю.
- Совет: Требуйте цитирования и «таблицу утверждений», чтобы предотвратить галлюцинации.
fact_checker = Agent(
role="Фактолог",
goal="Проверить все утверждения по первоисточникам; отметить слабые цитаты.",
backstory="Скептичный, скрупулезный, непредвзятый.",
llm=llm
)
qa_task = Task(
description="Проверить все фактические утверждения; добавить исправления в строку с тегами [FIX].",
expected_output="Исправленный черновик с кратким изложением исправлений.",
agent=fact_checker
)
2) Спецификация продукта из тикетов (Инженерия)
- Агенты: Группировщик тикетов, Автор спецификации, Рецензент, Автор тестов.
- Инструменты: API системы отслеживания ошибок, контекст кодовой базы через встраивания (embeddings), генератор юнит-тестов.
- Совет: Добавьте автоматизированный контрольный список «Определение готовности».
3) Данные → Инсайт → Повествование (Аналитика)
- Агенты: Обработчик данных (Python), Аналитик, Рассказчик.
- Инструменты: Pandas, SQL, построение графиков, выполнение блокнотов.
- Совет: Используйте агента с включенными инструментами и выполнением
python для проверяемой аналитики.
4) Генерация кода с ограничениями
- Агенты: Планировщик, Кодировщик, Линтер, Тестировщик, Рецензент.
- Инструменты: Чтение репозитория, запуск юнит-тестов, форматировщик, сканер безопасности.
- Совет: Требуйте от Рецензента ссылаться на тесты, которые доказывают правильность.
5) Масштабирование последовательностей электронных писем клиентов
- Агенты: Сегментатор, Копирайтер, Персонализатор, QA.
- Инструменты: CRM API, шаблоны, руководство по тону бренда.
- Совет: Добавьте инструмент проверки отказов/спама и принудительно используйте варианты A/B.
Добавление инструментов: Предоставьте агентам реальные возможности
CrewAI проявляет себя лучше всего, когда агенты могут использовать инструменты. Пример: предоставьте исследователю веб-поиск и средство чтения URL-адресов.
from langchain_community.tools import DuckDuckGoSearchRun
from langchain_community.document_loaders import WebBaseLoader
search = DuckDuckGoSearchRun
def web_search_tool(query: str):
return search.run(query)
def read_url_tool(url: str):
loader = WebBaseLoader(url)
docs = loader.load
return "\n\n".join([d.page_content[:2000] for d in docs])
researcher.tools = [web_search_tool, read_url_tool]
Лучшие практики:
- Принцип наименьших привилегий: Предоставляйте агенту только те инструменты, которые ему действительно необходимы.
- Дисциплина схемы: Инструменты должны быть детерминированными и типизированными; возвращайте краткий, структурированный текст (JSON/Markdown), когда это возможно.
- Контроль затрат: Сократите объем выходных данных инструментов; обобщите перед передачей.
Проектирование задач, которые приводят к успеху
Хорошо спроектированные задачи определяют успех или неудачу многоагентных систем.
- Будьте конкретны: «Верните таблицу в формате Markdown со столбцами X, Y, Z».
- Определите критерии приемки: «Содержит 3 ссылки на первоисточники».
- Установите границы: Ограничения по количеству слов, времени или шагам уменьшают отклонения.
- Включите примеры: Предоставьте мини-спецификацию желаемого формата вывода.
- Добавьте теги памяти: Используйте согласованные заголовки/ключи в задачах для упрощения передачи.
Пример скелета задачи:
Task(
description=(
"Обобщите 5 недавних исследований о производительности удаленной работы (2023–2025 гг.) с "
"методологией, размером выборки и ключевыми выводами."
),
expected_output=(
"Markdown с разделами H2 для каждого исследования, итоговой сравнительной таблицей и ссылками."
),
agent=researcher
)
Режимы оркестровки: Последовательный, параллельный и гибридный
- Последовательный: Надежная передача; медленнее, но проще для понимания.
- Параллельный: Несколько агентов работают одновременно (например, 3 исследователя); объедините позже.
- Гибридный: Параллельное расширение исследований → объединение результатов синтеза и контроля качества.
Пример гибридного подхода:
r1 = Agent(role="Исследователь A", goal="Сосредоточиться на ценах", backstory="", llm=llm)
r2 = Agent(role="Исследователь B", goal="Сосредоточиться на функциях", backstory="", llm=llm)
# Параллельные задачи для r1, r2; последующая задача синтеза объединяет их результаты.
Совет: При объединении попросите синтезатора дедуплицировать, разрешать конфликты и ссылаться на более надежный источник.
Меры предосторожности и контроль качества: Поддерживайте честность агентов
- Арбитры: Добавьте рецензента или фактолога с явным правом вето.
- Контрольные списки: Закодируйте соответствие требованиям (конфиденциальность, безопасность, тон бренда) в виде контрольного списка, который должен отметить QA-агент.
- Самокритика: Попросите агентов включить краткий раздел «Что я мог упустить».
- Детерминизм: Используйте более низкую температуру для QA-агентов.
qa = Agent(
role="QA Рецензент",
goal="Убедитесь, что выходные данные соответствуют критериям приемки и руководству по стилю.",
backstory="Вы строгий и педантичный.",
llm=llm
)
Разработка промптов для агентов CrewAI
Ваши промпты для агентов — это мини-описания должностей. Держите их краткими.
- Ролевой промпт: Кто вы, что вы оптимизируете.
- Целевой промпт: Желаемое конечное состояние.
- Ограничения: Количество слов, формат, тон, ссылки.
- Инструменты: Названия, когда их использовать, что возвращать.
- Примеры: 1–2 коротких, реалистичных образца.
Фрагмент:
researcher = Agent(
role="Аналитический исследователь",
goal=(
"Предоставлять компактные, точные отчеты с 3–5 достоверными ссылками и примечанием о рисках."
),
backstory=(
"Вы проверяете утверждения, предпочитаете первоисточники и отмечаете неопределенность."
),
llm=llm
)
Наблюдаемость: Смотрите, что сделали агенты (и почему)
Включите подробные журналы и сохраните артефакты:
- Сохраните промпт каждой задачи, выходные данные и вызовы инструментов.
- Сохраните манифест запуска с метаданными (модель, температура, инструменты).
- Ведите черновик для промежуточных заметок; это помогает отладке и аудиту.
Шаблон:
crew = Crew(..., verbose=True, output_log_file="runs/2025-crew.log")
Советы по стоимости, задержке и надежности
- Пакетная обработка: Параллелизируйте независимые задачи; ограничьте параллелизм, чтобы избежать ограничений скорости.
- Суммирование: Сжимайте промежуточные артефакты, чтобы уменьшить потери токенов.
- Кэширование: Запоминайте стабильные шаги (например, определения рынка) с помощью векторных хранилищ.
- Запасные варианты: Предоставьте резервную модель или политику повторных попыток для ненадежных вызовов.
- Человек в цикле: Вставьте необязательные шлюзы утверждения на этапах с высоким риском.
Распространенные ошибки (и как их исправить)
- Ошибка: Расплывчатые задачи → беспорядочные результаты.
- Исправление: Добавьте четкие критерии приемки и примеры.
- Ошибка: Слишком много инструментов → отвлечение и затраты.
- Исправление: Только инструменты с наименьшими привилегиями, специфичные для задач.
- Ошибка: Бесконечные циклы или чрезмерная итерация.
- Исправление: Добавьте ограничения по шагам/времени и пункт «остановить, если критерии выполнены».
- Ошибка: Потеря контекста между агентами.
- Исправление: Используйте структурированные объекты передачи (JSON) и согласованные заголовки.
- Ошибка: QA — запоздалая мысль.
- Исправление: Рассматривайте QA как первоклассного агента с правом вето.
Сквозной пример: Генератор конкурентного анализа
Цель: Создать конкурентный анализ, сравнивающий три инструмента для целевой персоны.
Агенты:
- Аналитик персоны → определяет болевые точки и задачи, которые необходимо выполнить.
- Исследователь → собирает данные и цитаты.
- Синтезатор → строит сравнительную таблицу и анализирует.
- Писатель → создает окончательный анализ.
- QA → проверяет источники и ясность.
Скелет:
persona = Agent(role="Аналитик персоны", goal="Определить ICP и JTBD.", llm=llm)
researcher = Agent(role="Исследователь", goal="Собрать достоверные данные.", llm=llm)
synth = Agent(role="Синтезатор", goal="Сравнить и интерпретировать.", llm=llm)
writer = Agent(role="Писатель", goal="Создать отчет, готовый для руководства.", llm=llm)
qa = Agent(role="QA", goal="Проверить утверждения и ясность.", llm=llm)
persona_task = Task(description="Определить ICP и JTBD для руководителей RevOps в SaaS.", agent=persona,
expected_output="Маркированный список + болевые точки + показатели успеха.")
research_task = Task(description="Собрать цены, функции и отзывы для 3 инструментов.", agent=researcher,
expected_output="Таблица + 5 цитат.")
synth_task = Task(description="Создать сравнительную матрицу и 3 основных вывода.", agent=synth,
expected_output="Таблица Markdown + выводы.")
write_task = Task(description="Составить одностраничный отчет с рекомендациями.", agent=writer,
expected_output="Отчет для руководства в формате Markdown.")
qa_task = Task(description="Проверить точность и читабельность; исправить проблемы.", agent=qa,
expected_output="Чистый, проверенный отчет.")
crew = Crew(agents=[persona, researcher, synth, writer, qa],
tasks=[persona_task, research_task, synth_task, write_task, qa_task],
process="sequential", verbose=True)
print(crew.kickoff)
Когда использовать CrewAI вместо одного промпта
Используйте CrewAI, когда:
- Задача естественным образом разбивается на роли или этапы.
- Вам нужна прослеживаемость, контроль качества или использование инструментов.
- Вы создаете многократно используемый конвейер, а не разовую задачу.
Придерживайтесь одного промпта, когда:
- Это короткая, субъективная задача без внешних инструментов.
- Скорость важнее структуры.
Кстати: Пишите быстрее с помощью боковой панели AI
Если вы используете многоагентные рабочие процессы для исследования, составления планов и разработки контента, стоит отметить, что боковая панель AI, такая как Sider.ai, может находиться рядом с вашим браузером и документами, чтобы суммировать страницы, создавать планы и уточнять черновики в режиме реального времени. Это не заменит оркестровку CrewAI, но может ускорить ручные части — сбор фрагментов, переписывание разделов или проверку тона — прежде чем вы вернете контент обратно в свою команду. Действенные следующие шаги
- Установите CrewAI и запустите пример быстрого запуска.
- Выберите реальный рабочий процесс (исследование → черновик → QA) и закодируйте его.
- Добавляйте по одному инструменту за раз; измерьте влияние на качество вывода и стоимость.
- Представьте QA-агента с явными критериями приемки.
- Перейдите к гибридной модели оркестровки для скорости.
Ключевые выводы
- CrewAI превращает сложные проекты в модульные, многоагентные рабочие процессы.
- Успех зависит от четких ролей, четких задач и дисциплинированного использования инструментов.
- Меры предосторожности (QA, контрольные списки, ограничения) снижают затраты и повышают качество.
- Начните с малого, затем масштабируйте с помощью параллельных исследований и гибридных потоков.
Мини-контрольный список: Как эффективно использовать CrewAI
- Явно определите роли, цели и инструменты.
- Пишите задачи с критериями приемки и примерами.
- Используйте последовательный режим для надежности, гибридный — для скорости.
- Добавьте QA-агента на раннем этапе; предоставьте ему право вето.
- Регистрируйте все; храните артефакты для аудита.
- Оптимизируйте затраты с помощью сводок, кэширования и пакетной обработки.
FAQ
Q1:Что такое CrewAI и как его использовать для многоагентных рабочих процессов?
CrewAI — это фреймворк для организации работы нескольких ИИ-агентов с ролями, задачами и инструментами. Вы используете его, определяя агентов, создавая задачи с критериями приемки и запуская команду, которая координирует передачу задач для получения окончательного результата.
В2: Как добавить такие инструменты, как веб-поиск, к агентам CrewAI?
Прикрепите функции инструментов к агенту и укажите, когда их использовать. Поддерживайте структурированные и краткие выходные данные (например, JSON или Markdown), чтобы контролировать расходы и улучшить передачу данных.
В3: Когда следует использовать CrewAI вместо одного запроса к LLM?
Используйте CrewAI, когда задача разбивается на этапы, требует использования инструментов или контроля качества, или нуждается в повторяемых конвейерах. Используйте один запрос для быстрых, субъективных задач, которые не нуждаются в структуре.
В4: Как предотвратить галлюцинации в выходных данных CrewAI?
Добавьте агента Fact‑Checker или QA с правом вето, требуйте цитирования первоисточников, установите низкую температуру для QA и укажите критерии приемлемости, такие как таблица утверждений.
В5: Может ли CrewAI выполнять задачи параллельно, чтобы ускорить процесс?
Да. Используйте параллельных агентов для независимых задач (например, несколько исследователей), а затем задачу синтеза для объединения результатов. Гибридная оркестрация обеспечивает баланс между скоростью и надежностью.