CrewAI🕐 18 мин📅 Май 2025

CrewAI на практике: создание AI-бота поддержки командой мульти-агентов

С нуля строим полноценную систему поддержки на базе мульти-агентов с использованием CrewAI. Agent-исследователь анализирует запрос, Agent базы знаний выполняет поиск, Agent-автор формирует ответ, Agent контроля качества проверяет — весь процесс автоматизирован.

Почему именно CrewAI?

CrewAI — один из самых лаконичных фреймворков для мульти-агентов. Его ключевая идея — «роль + цель + предыстория»: три строки конфигурации — и Agent готов. По сравнению со сложными конечными автоматами LangGraph, CrewAI лучше подходит для быстрого внедрения.

🎯 Сценарии применения

Поддержка клиентов, ревью кода, создание контента, анализ данных — любой рабочий процесс с чётким разделением ролей отлично ложится на CrewAI.

Архитектура системы

Наша команда мульти-агентов для поддержки включает 4 роли:

Полная реализация кода

Step 1: Установка зависимостей

pip install crewai langchain langchain-community pip install 'crewai[tools]' # встроенный набор инструментов pip install qdrant-client # векторная БД (при использовании RAG)

Step 2: Определение ролей Agent

from crewai import Agent, Task, Crew classifier = Agent( role="Классификатор обращений", goal="Быстро и точно определить тип вопроса клиента", backstory="Опытный оператор колл-центра с 5-летним стажем. " "Знает все категории обращений и типичные паттерны.", verbose=True, allow_delegation=False # не делегирует, выполняет сам ) searcher = Agent( role="Поисковик базы знаний", goal="Найти релевантную информацию о продуктах Sanduoyun", backstory="Технический эксперт по GPU-серверам. " "Знает все спецификации и может найти нужные данные.", tools=[search_tool, scrape_tool], # инструменты MCP verbose=True, allow_delegation=False ) writer = Agent( role="Автор ответов", goal="Написать профессиональный и дружелюбный ответ клиенту", backstory="Копирайтер с опытом в B2B-сегменте. " "Пишет чётко, по делу, без воды.", verbose=True, allow_delegation=True # может делегировать другим Agent ) reviewer = Agent( role="Контроль качества", goal="Убедиться что ответ готов к отправке", backstory="QA-специалист с вниманием к деталям. " "Не пропустит ошибку или неточность.", verbose=True, allow_delegation=False )

Step 3: Определение Tasks

classify_task = Task( description="Классифицируй обращение клиента: " "TECHNICAL / PRICE / SUPPORT / SALES", agent=classifier, expected_output=" одна категория из: TECHNICAL, PRICE, SUPPORT, SALES" ) search_task = Task( description="Найди в базе знаний релевантную информацию. " "Если обращение техническое — найди спецификации. " "Если про цену — найди прайс и акции. " "Если про поддержку — найди SLA и условия.", agent=searcher, expected_output=" структурированная информация из базы знаний", context=[classify_task] # входные данные из предыдущего шага ) write_task = Task( description="На основе классификации и найденной информации " "напиши ответ клиенту. Используй только проверенные данные.", agent=writer, expected_output=" готовый ответ клиенту на русском языке", context=[classify_task, search_task] ) review_task = Task( description="Проверь ответ: нет ли фактических ошибок, " "правильный ли тон, всё ли учтено. " "Если есть проблемы — исправь.", agent=reviewer, expected_output=" финальный ответ и вердикт: APPROVED или REVISION", context=[write_task] )

Step 4: Сборка Crew и запуск

crew = Crew( agents=[classifier, searcher, writer, reviewer], tasks=[classify_task, search_task, write_task, review_task], process="sequential", # последовательное выполнение (также доступен режим "hierarchical" с менеджером) verbose=True, memory=True # общая память между Agent ) # запуск взаимодействия мульти-агентов result = crew.kickoff( inputs={"customer_message": user_input} ) print(result) # итоговый ответ

Step 5: Конфигурация GPU-ресурсов (CrewAI + vLLM)

# gpu_config.yaml # выделяем отдельный экземпляр LLM для каждого Agent deployment: vllm: model: "meta-llama/Llama-3-8B-Instruct" tensor_parallel_size: 1 # по 1 GPU на каждый Agent gpu_memory_utilization: 0.85 max_num_seqs: 256 ports: [8001, 8002, 8003, 8004] # отдельный порт для каждого Agent crew: agents: classifier: {port: 8001, gpu: 0} searcher: {port: 8002, gpu: 0} writer: {port: 8003, gpu: 1} reviewer: {port: 8004, gpu: 1} # рекомендуемое оборудование: SDY-421GU-TNXR (8× L40S) # - Agent 0-3 → GPU 0-3 (соединение NVLink) # - Agent 4-7 → GPU 4-7 (соединение NVLink)

Режим менеджера (CrewAI Hierarchical)

Помимо последовательного режима, CrewAI поддерживает «режим менеджера»: один Agent-менеджер отвечает за распределение задач, а несколько Agent-исполнителей работают параллельно.

# режим менеджера: эффективнее, подходит для масштабных задач crew_hierarchical = Crew( agents=[manager, executor_1, executor_2, executor_3], tasks=[complex_task], process="hierarchical", manager_agent=manager # назначаем менеджера ) # менеджер автоматически разбивает задачу → распределяет исполнителям → собирает результат result = crew_hierarchical.kickoff()

Расширение: интеграция инструментов MCP

Используем протокол MCP, чтобы дать Agent доступ к внешним инструментам: поиску, CRM, запросам к данным.

from crewai.tools import MCPTool # подключаем шину инструментов MCP search_tool = MCPTool( server="https://api.sanduoyun.com/mcp", tool="search_knowledge_base" ) crm_tool = MCPTool( server="https://api.sanduoyun.com/mcp", tool="query_crm" ) searcher = Agent( role="Поисковик", tools=[search_tool, crm_tool], ... )

Рекомендации по оборудованию

МасштабСерверGPUКоличество AgentЦена
Разработка / тестированиеSDY-4208-I44× L40S1-5¥68,000
Малое производствоSDY-421GU-TNXR8× L40S5-15¥128,000
Среднее производствоSDY-5126-TNRT8× H10015-50¥580,000

📌 Нужен полноценный демо-стенд поддержки на Agent?

Наши инженеры развернут для вас готовую систему поддержки на мульти-агентах CrewAI, включая базу знаний RAG, шину инструментов MCP и панель мониторинга.