CrewAI — фреймворк для мультиагентных систем на Python
📂 Исходный код на GitHubОпенсорсный Python-фреймворк CrewAI для сборки production-агентных систем: автономные Crews, событийные Flows, инструменты, память и поддержка MCP.
CrewAI — опенсорсный Python-фреймворк для мультиагентных систем. Проект описывает себя как «быстрый и гибкий фреймворк мультиагентной автоматизации». Он дает высокоуровневые абстракции и низкоуровневые API для production-сценариев. Лицензия — MIT. Требуется Python от 3.10 до 3.13. Через курсы сообщества прошло больше 100 000 сертифицированных разработчиков.
Crews и Flows: два подхода
CrewAI строится на двух взаимодополняющих примитивах.
Crews («экипажи») — команды агентов с реальной автономией. Каждый агент получает роль, цель, предысторию, набор инструментов и LLM. Агенты сами решают, как делить работу, и взаимодействуют через ролевую модель.
Flows («потоки») — событийные рабочие процессы с точным контролем. Вы описываете шаги обычным кодом на Python. Переходы задаются декораторами, состояние хранится между задачами, а условная логика пишется явно.
Идея фреймворка проста: автономность там, где она помогает, и явный контроль там, где он нужен. Crews и Flows можно комбинировать. Например, запустить Crew как один шаг внутри Flow.
Установка
CrewAI использует UV для управления зависимостями. Установите uv, затем CLI:
curl -LsSf https://astral.sh/uv/install.sh | sh
uv tool install crewai
Проверить установку можно командой uv tool list. Обновление глобального CLI:
uv tool install crewai --upgrade
Первый проект
CLI создает проект с декларативной структурой на JSON:
crewai create crew latest-ai-development
cd latest_ai_development
Структура проекта выглядит так:
my_project/
├── .env
├── agents/
│ └── researcher.jsonc
├── crew.jsonc
├── knowledge/
├── pyproject.toml
├── skills/
└── tools/
Агенты описываются в файлах agents/*.jsonc. Задачи и настройки экипажа живут в crew.jsonc. Пример агента:
{
"role": "{topic} Senior Data Researcher",
"goal": "Uncover cutting-edge developments in {topic}",
"backstory": "You're a seasoned researcher who finds relevant information and presents it clearly.",
"llm": "openai/gpt-4o",
"tools": ["SerperDevTool"]
}
Определение задач и процесса:
{
"name": "Latest AI Development",
"agents": ["researcher", "reporting_analyst"],
"tasks": [
{
"name": "research_task",
"description": "Conduct thorough research about {topic}.",
"expected_output": "A list with 10 bullet points of the most relevant information.",
"agent": "researcher"
},
{
"name": "reporting_task",
"description": "Review the research and expand each topic into a full section.",
"expected_output": "A markdown report with the main topics.",
"agent": "reporting_analyst",
"context": ["research_task"],
"output_file": "output/report.md",
"markdown": true
}
],
"process": "sequential",
"inputs": { "topic": "AI Agents" }
}
Плейсхолдеры вида {topic} заполняются из блока inputs. Если значения нет, CLI спросит его при запуске. Старый каркас на Python и YAML с файлами crew.py, config/agents.yaml и config/tasks.yaml доступен через флаг --classic.
Запуск
Перед запуском положите ключ провайдера моделей в файл .env. Для веб-поиска нужен ключ Serper.dev. Затем две команды:
crewai install
crewai run
Результат появится в консоли и в файле output/report.md.
Помимо последовательного процесса (sequential) есть иерархический (hierarchical). В этом режиме фреймворк добавляет менеджера, который сам делегирует задачи и проверяет результаты.
Flows на декораторах
Flows пишутся на чистом Python. Состояние задается Pydantic-моделью. Шаги связываются декораторами @start, @listen и @router. Логические операторы or_ и and_ комбинируют условия запуска. Упрощенный пример из документации:
from crewai.flow.flow import Flow, listen, start, router
from crewai import Agent, Task, Crew, Process
from pydantic import BaseModel
class MarketState(BaseModel):
sentiment: str = "neutral"
confidence: float = 0.0
class AnalysisFlow(Flow[MarketState]):
@start()
def fetch_market_data(self):
self.state.sentiment = "analyzing"
return {"sector": "tech", "timeframe": "1W"}
@listen(fetch_market_data)
def analyze_with_crew(self, market_data):
analyst = Agent(
role="Senior Market Analyst",
goal="Conduct deep market analysis",
)
task = Task(
description="Analyze {sector} data for {timeframe}",
expected_output="Market analysis with confidence score",
agent=analyst,
)
crew = Crew(agents=[analyst], tasks=[task], process=Process.sequential)
return crew.kickoff(inputs=market_data)
@router(analyze_with_crew)
def determine_next_steps(self):
if self.state.confidence > 0.8:
return "high_confidence"
return "low_confidence"
@listen("high_confidence")
def execute_strategy(self):
return "Strategy execution started"
@listen("low_confidence")
def request_additional_analysis(self):
return "Additional analysis required"
Такой стиль подходит для production: рядом с агентами живет обычный Python, переходы детерминированы, а состояние под контролем.
Подключение LLM
По умолчанию агенты обращаются к OpenAI API. Фреймворк работает и с локальными моделями через Ollama и LM Studio. Все варианты подключения описаны в разделе LLM Connections документации.
CrewAI для кодинг-агентов
Отдельный интерес для тех, кто уже работает с AI-агентами в редакторе: у CrewAI есть официальный набор скиллов в репозитории crewAIInc/skills. Эти скиллы учат кодинг-агента best practices фреймворка.
Для Claude Code:
/plugin marketplace add crewAIInc/skills
/plugin install crewai-skills@crewai-plugins
/reload-plugins
Для Cursor, Codex и Windsurf установка идет через skills.sh:
npx skills add crewaiinc/skills
В комплекте четыре скилла:
getting-started— каркас проекта и выбор междуLLM.call(),Agent,CrewиFlow;design-agent— настройка агентов: роль, цель, инструменты, память, guardrails;design-task— описание задач, зависимости и структурированный вывод черезoutput_pydanticиoutput_json;ask-docs— запросы к MCP-серверу документации CrewAI за актуальными сведениями об API.
CrewAI AMP: коммерческая обвязка
Для компаний есть надстройка CrewAI AMP Suite. Она добавляет управляемое развертывание, observability, безопасность и поддержку 24/7. Часть набора под названием Crew Control Plane доступна бесплатно через app.crewai.com. Сам опенсорсный фреймворк при этом полностью функционален без оплаты.
Когда выбирать CrewAI
Фреймворк подходит, когда одного промпта или чат-бота мало:
- несколько агентов с разными ролями и задачами;
- детерминированные событийные процессы вокруг автономных агентов;
- логика приложения на обычном Python;
- путь от эксперимента до production без смены фреймворка;
- инструменты, память, чекпоинты и асинхронное исполнение по мере роста системы.
Готовые примеры — генератор лендингов, планировщик поездок, анализ акций — собраны в отдельном репозитории crewAI-examples. Для вклада в проект в репозитории есть гайд для контрибьюторов.
Телеметрия
CrewAI собирает анонимную телеметрию: версии фреймворка и Python, ОС, число агентов и задач, тип процесса, название LLM. Промпты, ответы моделей, описания агентов и секреты не собираются. Телеметрию можно отключить переменной окружения OTEL_SDK_DISABLED=true.
Источник: https://github.com/crewAIInc/crewAI