mirror of
https://github.com/crewAIInc/crewAI.git
synced 2026-01-05 22:28:29 +00:00
internal crew
This commit is contained in:
15
src/crewai/internal/agents/hierarchical_manager.py
Normal file
15
src/crewai/internal/agents/hierarchical_manager.py
Normal file
@@ -0,0 +1,15 @@
|
||||
from crewai.agent import Agent
|
||||
from crewai.tools.agent_tools import AgentTools
|
||||
from crewai.utilities import I18N
|
||||
|
||||
class HierarchicalManagerAgent:
|
||||
def __init__(self, llm, agents, verbose):
|
||||
i18n = I18N()
|
||||
self.agent = Agent(
|
||||
role=i18n.retrieve("hierarchical_manager_agent", "role"),
|
||||
goal=i18n.retrieve("hierarchical_manager_agent", "goal"),
|
||||
backstory=i18n.retrieve("hierarchical_manager_agent", "backstory"),
|
||||
tools=AgentTools(agents=agents).tools(),
|
||||
llm=llm,
|
||||
verbose=verbose,
|
||||
)
|
||||
12
src/crewai/internal/agents/planning_manager.py
Normal file
12
src/crewai/internal/agents/planning_manager.py
Normal file
@@ -0,0 +1,12 @@
|
||||
from crewai.agent import Agent
|
||||
from crewai.utilities import i18n
|
||||
|
||||
class PlanningManagerAgent:
|
||||
def __init__(self, llm, verbose):
|
||||
self.agent = Agent(
|
||||
role=i18n.retrieve("planning_manager_agent", "role"),
|
||||
goal=i18n.retrieve("planning_manager_agent", "goal"),
|
||||
backstory=i18n.retrieve("planning_manager_agent", "backstory"),
|
||||
verbose=verbose,
|
||||
llm=llm,
|
||||
)
|
||||
21
src/crewai/internal/crew/planning_crew/config/agents.yaml
Normal file
21
src/crewai/internal/crew/planning_crew/config/agents.yaml
Normal file
@@ -0,0 +1,21 @@
|
||||
project_manager:
|
||||
role: >
|
||||
High-Level Task Decomposer
|
||||
goal: >
|
||||
Efficiently break down high-level tasks into actionable subtasks.
|
||||
backstory: >
|
||||
As a visionary leader and strategist, you excel at dissecting complex
|
||||
projects into manageable parts. Your expertise lies in identifying key
|
||||
components and stages of a project, ensuring that each piece is addressed
|
||||
with precision and aligned with overarching objectives.
|
||||
|
||||
resource_manager:
|
||||
role: >
|
||||
Resource Allocation Specialist
|
||||
goal: >
|
||||
Assign the right resources (agents and tools) to the generated subtasks.
|
||||
backstory: >
|
||||
With a strategic mind and a masterful grasp of logistics, you specialize
|
||||
in allocating the best-suited agents and tools for specific tasks. Your
|
||||
ability to match project needs with available resources ensures optimal
|
||||
efficiency and effectiveness in project execution.
|
||||
36
src/crewai/internal/crew/planning_crew/config/tasks.yaml
Normal file
36
src/crewai/internal/crew/planning_crew/config/tasks.yaml
Normal file
@@ -0,0 +1,36 @@
|
||||
task_decomposition:
|
||||
description: >
|
||||
Analyze the high-level task, "{task}", provided and break it down into
|
||||
distinct, manageable subtasks that are specific and actionable.
|
||||
Consider all aspects of the task and ensure that each subtask is
|
||||
aligned with the final goal. Additionally, outline the roles, goals,
|
||||
and backstories for the agents you plan to recruit for performing
|
||||
each subtask. Make sure to clearly define their responsibilities in
|
||||
the context of this project.
|
||||
expected_output: >
|
||||
A detailed list of subtasks, each with defined objectives and
|
||||
scopes, ensuring they collectively address all components of the
|
||||
original task, "{task}". Each subtask should be assigned to a
|
||||
specific agent you will recruit, complete with their role, goal, and
|
||||
backstory. The main goal is to ensure systematic progression and
|
||||
effective task management.
|
||||
|
||||
resource_allocation:
|
||||
description: >
|
||||
Evaluate the list of subtasks generated from the high-level task
|
||||
"{task}" and determine the most appropriate agents and tools needed
|
||||
for each. Assign resources based on the complexity, required skills,
|
||||
and the tools needed to effectively complete each subtask. This
|
||||
evaluation should consider the unique requirements of each subtask
|
||||
and align resources to optimize task completion. Available tools to
|
||||
choose from include:
|
||||
{tools_list}.
|
||||
expected_output: >
|
||||
An allocation plan that lists each subtask along with the assigned
|
||||
agent and the tools they will use, explaining the rationale for each
|
||||
resource assignment to ensure transparency and optimal task
|
||||
alignment. The expected outcome is to have a fully resourced plan
|
||||
that facilitates efficient task execution and achievement of the
|
||||
main goal: "{goal}".
|
||||
Ensure each tool selected is from the provided list of available tools:
|
||||
{tools_list}.
|
||||
51
src/crewai/internal/crew/planning_crew/crew.py
Normal file
51
src/crewai/internal/crew/planning_crew/crew.py
Normal file
@@ -0,0 +1,51 @@
|
||||
from .... import Agent, Crew, Process, Task
|
||||
from ....project import CrewBase, agent, crew, task
|
||||
|
||||
from .crew_config import CrewConfig
|
||||
|
||||
@CrewBase
|
||||
class PlanningCrewCrew():
|
||||
"""PlanningCrew crew"""
|
||||
agents_config = '../internal/crew/planning_crew/config/agents.yaml'
|
||||
tasks_config = '../internal/crew/planning_crew/config/tasks.yaml'
|
||||
|
||||
@agent
|
||||
def project_manager(self) -> Agent:
|
||||
return Agent(
|
||||
config=self.agents_config['project_manager'],
|
||||
allow_delegation=False,
|
||||
verbose=True
|
||||
)
|
||||
|
||||
@agent
|
||||
def resource_manager(self) -> Agent:
|
||||
return Agent(
|
||||
config=self.agents_config['resource_manager'],
|
||||
allow_delegation=False,
|
||||
verbose=True
|
||||
)
|
||||
|
||||
@task
|
||||
def task_decomposition(self) -> Task:
|
||||
return Task(
|
||||
config=self.tasks_config['task_decomposition'],
|
||||
agent=self.project_manager(),
|
||||
output_pydantic=CrewConfig
|
||||
)
|
||||
|
||||
@task
|
||||
def resource_allocation(self) -> Task:
|
||||
return Task(
|
||||
config=self.tasks_config['resource_allocation'],
|
||||
agent=self.resource_manager(),
|
||||
output_pydantic=CrewConfig
|
||||
)
|
||||
|
||||
@crew
|
||||
def crew(self) -> Crew:
|
||||
"""Creates the PlanningCrew crew"""
|
||||
return Crew(
|
||||
agents=[self.project_manager(), self.resource_manager()],
|
||||
tasks=[self.task_decomposition(), self.resource_allocation()],
|
||||
process=Process.sequential
|
||||
)
|
||||
17
src/crewai/internal/crew/planning_crew/crew_config.py
Normal file
17
src/crewai/internal/crew/planning_crew/crew_config.py
Normal file
@@ -0,0 +1,17 @@
|
||||
from typing import List
|
||||
from pydantic import BaseModel, Field
|
||||
|
||||
|
||||
class AgentConfig(BaseModel):
|
||||
role: str = Field(..., description="The role of the agent")
|
||||
goal: str = Field(..., description="The goal of the agent")
|
||||
backstory: str = Field(..., description="The backstory of the agent")
|
||||
tools: List[str] = Field(..., description="The tools used by the agent")
|
||||
|
||||
class TaskConfig(BaseModel):
|
||||
description: str = Field(..., description="The description of the task")
|
||||
expected_output: str = Field(..., description="The expected output of the task")
|
||||
agent: AgentConfig = Field(..., description="The agent responsible for the task")
|
||||
|
||||
class CrewConfig(BaseModel):
|
||||
tasks: List[TaskConfig] = Field(..., description="The tasks to be performed by the crew")
|
||||
Reference in New Issue
Block a user