В этом руководстве мы покажем вам, как спроектировать и реализовать продвинутую структуру агентов-супервизоров, используя CrewAI с моделью Google Gemini. Мы создадим специализированных агентов, включая исследователей, аналитиков, писателей и рецензентов, и подчиним их агенту-супервизору, который будет координировать и контролировать их работу.
Установка библиотек и модулей
Для начала установим библиотеки и необходимые модули для настройки нашей структуры CrewAI. Здесь мы определяем перечисление TaskPriority, которое помогает нам назначать разные уровни срочности и важности для каждой создаваемой нами задачи.
«`python
from enum import Enum
class TaskPriority(Enum):
LOW = 1
MEDIUM = 2
HIGH = 3
CRITICAL = 4
«`
Определение класса TaskConfig
«`python
@dataclass
class TaskConfig:
description: str
expected_output: str
priority: TaskPriority
maxexecutiontime: int = 300
requireshumaninput: bool = False
«`
Класс SupervisorFramework
«`python
class SupervisorFramework:
«»»
Advanced Supervisor Agent Framework using CrewAI
Manages multiple specialized agents with hierarchical coordination
«»»
def init(self, geminiapikey: str, serperapikey: str = None):
«»»
Initialize the supervisor framework
Args:
geminiapikey: Google Gemini API key (free tier)
serperapikey: Serper API key for web search (optional, has free tier)
«»»
os.environ[«GOOGLEAPIKEY»] = geminiapikey
if serperapikey:
os.environ[«SERPERAPIKEY»] = serperapikey
self.llm = ChatGoogleGenerativeAI(
model=»gemini-1.5-flash»,
temperature=0.7,
max_tokens=2048
)
self.tools = []
if serperapikey:
self.tools.append(SerperDevTool())
self.agents = {}
self.supervisor = None
self.crew = None
print(» SupervisorFramework initialized successfully!»)
print(f» LLM Model: {self.llm.model}»)
print(f» Available tools: {len(self.tools)}»)
«`
Создание агентов
«`python
def createresearchagent(self) -> Agent:
«»»Create a specialized research agent»»»
return Agent(
role=»Senior Research Analyst»,
goal=»Conduct comprehensive research and gather accurate information on any given topic»,
backstory=»»»You are an expert research analyst with years of experience in
information gathering, fact-checking, and synthesizing complex data from multiple sources.
You excel at finding reliable sources and presenting well-structured research findings.»»»,
verbose=True,
allow_delegation=False,
llm=self.llm,
tools=self.tools,
max_iter=3,
memory=True
)
«`
Настройка агентов
«`python
def setup_agents(self):
«»»Initialize all agents in the framework»»»
print(» Setting up specialized agents…»)
self.agents = {
‘researcher’: self.createresearchagent(),
‘analyst’: self.createanalystagent(),
‘writer’: self.createwriteragent(),
‘reviewer’: self.createrevieweragent()
}
self.supervisor = self.createsupervisoragent()
print(f» Created {len(self.agents)} specialized agents + 1 supervisor»)
for role, agent in self.agents.items():
print(f» └── {role.title()}: {agent.role}»)
«`
Создание рабочего процесса
«`python
def createtaskworkflow(self, topic: str, task_configs: Dict[str, TaskConfig]) -> List[Task]:
«»»
Create a comprehensive task workflow
Args:
topic: Main topic/project focus
task_configs: Dictionary of task configurations
Returns:
List of CrewAI Task objects
«»»
tasks = []
if ‘research’ in task_configs:
config = task_configs[‘research’]
research_task = Task(
description=f»{config.description} Focus on: {topic}»,
expectedoutput=config.expectedoutput,
agent=self.agents[‘researcher’]
)
tasks.append(research_task)
# Аналогично для анализа, написания и рецензирования
supervisor_task = Task(
description=f»»»As the project supervisor, coordinate the entire workflow for: {topic}.
Monitor progress, ensure quality standards, resolve any conflicts between agents,
and provide final project oversight. Ensure all deliverables meet requirements.»»»,
expected_output=»»»A comprehensive project summary including:
— Executive summary of all completed work
— Quality assessment of deliverables
— Recommendations for improvements or next steps
— Final project status report»»»,
agent=self.supervisor,
context=tasks
)
tasks.append(supervisor_task)
return tasks
«`
Выполнение проекта
«`python
def execute_project(self,
topic: str,
task_configs: Dict[str, TaskConfig],
process_type: Process = Process.hierarchical) -> Dict[str, Any]:
«»»
Execute a complete project using the supervisor framework
Args:
topic: Main project topic
task_configs: Task configurations
process_type: CrewAI process type (hierarchical recommended for supervisor)
Returns:
Dictionary containing execution results
«»»
print(f» Starting project execution: {topic}»)
print(f» Process type: {process_type.value}»)
if not self.agents or not self.supervisor:
self.setup_agents()
tasks = self.createtaskworkflow(topic, task_configs)
print(f» Created {len(tasks)} tasks in workflow»)
crew_agents = list(self.agents.values()) + [self.supervisor]
self.crew = Crew(
agents=crew_agents,
tasks=tasks,
process=process_type,
manager_llm=self.llm,
verbose=True,
memory=True
)
print(» Executing project…»)
try:
result = self.crew.kickoff()
return {
‘status’: ‘success’,
‘result’: result,
‘topic’: topic,
‘tasks_completed’: len(tasks),
‘agentsinvolved’: len(crewagents)
}
except Exception as e:
print(f» Error during execution: {str(e)}»)
return {
‘status’: ‘error’,
‘error’: str(e),
‘topic’: topic
}
«`
Мы определяем гибкий класс данных TaskConfig для захвата намерений каждой задачи, ожидаемого результата, приоритета и требований ко времени выполнения, стандартизируя таким образом рабочий процесс в системе. Затем мы создаём SupervisorFramework, который подключает Gemini, дополнительные поисковые инструменты и скоординированную команду специализированных агентов, чтобы организовать работу по принципу «исследование → анализ → написание → рецензирование» под руководством агента-супервизора в режиме реального времени.
Мы создаём вспомогательную функцию createsampletask_configs(), которая определяет стандартные чертежи задач для исследования, анализа, написания и рецензирования. Устанавливая чёткие описания, ожидаемые результаты и приоритеты, мы гарантируем, что наши агенты точно знают, что нужно предоставить, и важность каждого шага в рабочем процессе.
В заключение мы видим, как Supervisor Framework позволяет нам систематически управлять сложными проектами, используя нескольких специализированных агентов, работающих согласованно. Теперь мы можем выполнять задачи по исследованию, анализу, написанию и рецензированию в рамках скоординированного рабочего процесса, при этом супервизор обеспечивает качество и согласованность на каждом этапе. С такой настройкой мы готовы эффективно работать над реальными проектами, превращая абстрактные цели в действенные, высококачественные результаты.
1. Какие инструменты и библиотеки используются для создания иерархической структуры агентов-супервизоров в данном руководстве?
В данном руководстве используются CrewAI и модель Google Gemini. Для настройки структуры CrewAI устанавливаются необходимые библиотеки и модули.
2. Какие классы и объекты определены для управления специализированными агентами в иерархической структуре?
Для управления специализированными агентами в иерархической структуре определены следующие классы и объекты:
* класс TaskPriority для назначения уровней срочности и важности задачам;
* класс TaskConfig для захвата намерений каждой задачи, ожидаемого результата, приоритета и требований ко времени выполнения;
* класс SupervisorFramework для подключения Gemini, дополнительных поисковых инструментов и скоординированной команды специализированных агентов;
* класс Agent для создания специализированных агентов (исследователей, аналитиков, писателей и рецензентов);
* класс Task для создания задач для агентов;
* класс Crew для организации работы агентов.
3. Какие шаги необходимо выполнить для создания рабочего процесса с использованием SupervisorFramework?
Для создания рабочего процесса с использованием SupervisorFramework необходимо выполнить следующие шаги:
1. Определить перечисление TaskPriority.
2. Определить класс TaskConfig.
3. Создать класс SupervisorFramework.
4. Создать специализированных агентов (исследователей, аналитиков, писателей и рецензентов).
5. Настроить агентов в рамках SupervisorFramework.
6. Создать рабочий процесс с помощью метода createtaskworkflow.
7. Выполнить проект с помощью метода execute_project.
4. Какие аргументы принимает метод createtaskworkflow и что он возвращает?
Метод createtaskworkflow принимает следующие аргументы:
* topic — основная тема или проектный фокус;
* task_configs — словарь конфигураций задач.
Метод возвращает список объектов Task.