mirror of
https://github.com/crewAIInc/crewAI.git
synced 2026-01-10 00:28:31 +00:00
adding support for agents and tasks to be defined of configs
This commit is contained in:
@@ -36,6 +36,7 @@ class Agent(BaseModel):
|
|||||||
role: The role of the agent.
|
role: The role of the agent.
|
||||||
goal: The objective of the agent.
|
goal: The objective of the agent.
|
||||||
backstory: The backstory of the agent.
|
backstory: The backstory of the agent.
|
||||||
|
config: Dict representation of agent configuration.
|
||||||
llm: The language model that will run the agent.
|
llm: The language model that will run the agent.
|
||||||
function_calling_llm: The language model that will the tool calling for this agent, it overrides the crew function_calling_llm.
|
function_calling_llm: The language model that will the tool calling for this agent, it overrides the crew function_calling_llm.
|
||||||
max_iter: Maximum number of iterations for an agent to execute a task.
|
max_iter: Maximum number of iterations for an agent to execute a task.
|
||||||
@@ -63,6 +64,10 @@ class Agent(BaseModel):
|
|||||||
role: str = Field(description="Role of the agent")
|
role: str = Field(description="Role of the agent")
|
||||||
goal: str = Field(description="Objective of the agent")
|
goal: str = Field(description="Objective of the agent")
|
||||||
backstory: str = Field(description="Backstory of the agent")
|
backstory: str = Field(description="Backstory of the agent")
|
||||||
|
config: Optional[Dict[str, Any]] = Field(
|
||||||
|
description="Configuration for the agent",
|
||||||
|
default=None,
|
||||||
|
)
|
||||||
max_rpm: Optional[int] = Field(
|
max_rpm: Optional[int] = Field(
|
||||||
default=None,
|
default=None,
|
||||||
description="Maximum number of requests per minute for the agent execution to be respected.",
|
description="Maximum number of requests per minute for the agent execution to be respected.",
|
||||||
@@ -106,6 +111,10 @@ class Agent(BaseModel):
|
|||||||
description="Language model that will run the agent.", default=None
|
description="Language model that will run the agent.", default=None
|
||||||
)
|
)
|
||||||
|
|
||||||
|
def __init__(__pydantic_self__, **data):
|
||||||
|
config = data.pop("config", {})
|
||||||
|
super().__init__(**config, **data)
|
||||||
|
|
||||||
@field_validator("id", mode="before")
|
@field_validator("id", mode="before")
|
||||||
@classmethod
|
@classmethod
|
||||||
def _deny_user_set_id(cls, v: Optional[UUID4]) -> None:
|
def _deny_user_set_id(cls, v: Optional[UUID4]) -> None:
|
||||||
@@ -114,6 +123,14 @@ class Agent(BaseModel):
|
|||||||
"may_not_set_field", "This field is not to be set by the user.", {}
|
"may_not_set_field", "This field is not to be set by the user.", {}
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@model_validator(mode="after")
|
||||||
|
def set_attributes_based_on_config(self) -> "Agent":
|
||||||
|
"""Set attributes based on the agent configuration."""
|
||||||
|
if self.config:
|
||||||
|
for key, value in self.config.items():
|
||||||
|
setattr(self, key, value)
|
||||||
|
return self
|
||||||
|
|
||||||
@model_validator(mode="after")
|
@model_validator(mode="after")
|
||||||
def set_private_attrs(self):
|
def set_private_attrs(self):
|
||||||
"""Set private attributes."""
|
"""Set private attributes."""
|
||||||
|
|||||||
@@ -28,6 +28,10 @@ class Task(BaseModel):
|
|||||||
expected_output: str = Field(
|
expected_output: str = Field(
|
||||||
description="Clear definition of expected output for the task."
|
description="Clear definition of expected output for the task."
|
||||||
)
|
)
|
||||||
|
config: Optional[Dict[str, Any]] = Field(
|
||||||
|
description="Configuration for the agent",
|
||||||
|
default=None,
|
||||||
|
)
|
||||||
callback: Optional[Any] = Field(
|
callback: Optional[Any] = Field(
|
||||||
description="Callback to be executed after the task is completed.", default=None
|
description="Callback to be executed after the task is completed.", default=None
|
||||||
)
|
)
|
||||||
@@ -67,6 +71,10 @@ class Task(BaseModel):
|
|||||||
description="Unique identifier for the object, not set by user.",
|
description="Unique identifier for the object, not set by user.",
|
||||||
)
|
)
|
||||||
|
|
||||||
|
def __init__(__pydantic_self__, **data):
|
||||||
|
config = data.pop("config", {})
|
||||||
|
super().__init__(**config, **data)
|
||||||
|
|
||||||
@field_validator("id", mode="before")
|
@field_validator("id", mode="before")
|
||||||
@classmethod
|
@classmethod
|
||||||
def _deny_user_set_id(cls, v: Optional[UUID4]) -> None:
|
def _deny_user_set_id(cls, v: Optional[UUID4]) -> None:
|
||||||
@@ -75,6 +83,14 @@ class Task(BaseModel):
|
|||||||
"may_not_set_field", "This field is not to be set by the user.", {}
|
"may_not_set_field", "This field is not to be set by the user.", {}
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@model_validator(mode="after")
|
||||||
|
def set_attributes_based_on_config(self) -> "Task":
|
||||||
|
"""Set attributes based on the agent configuration."""
|
||||||
|
if self.config:
|
||||||
|
for key, value in self.config.items():
|
||||||
|
setattr(self, key, value)
|
||||||
|
return self
|
||||||
|
|
||||||
@model_validator(mode="after")
|
@model_validator(mode="after")
|
||||||
def check_tools(self):
|
def check_tools(self):
|
||||||
"""Check if the tools are set."""
|
"""Check if the tools are set."""
|
||||||
|
|||||||
Reference in New Issue
Block a user