mirror of
https://github.com/crewAIInc/crewAI.git
synced 2026-01-10 16:48:30 +00:00
refactoring task execution
This commit is contained in:
@@ -125,7 +125,7 @@ class Agent(BaseModel):
|
||||
|
||||
def execute_task(
|
||||
self,
|
||||
task: str,
|
||||
task: Any,
|
||||
context: Optional[str] = None,
|
||||
tools: Optional[List[Any]] = None,
|
||||
) -> str:
|
||||
@@ -140,17 +140,20 @@ class Agent(BaseModel):
|
||||
Output of the agent
|
||||
"""
|
||||
|
||||
task_prompt = task.prompt()
|
||||
|
||||
if context:
|
||||
task = self.i18n.slice("task_with_context").format(
|
||||
task=task, context=context
|
||||
task_prompt = self.i18n.slice("task_with_context").format(
|
||||
task=task_prompt, context=context
|
||||
)
|
||||
|
||||
tools = tools or self.tools
|
||||
self.agent_executor.tools = tools
|
||||
self.agent_executor.task = task
|
||||
|
||||
result = self.agent_executor.invoke(
|
||||
{
|
||||
"input": task,
|
||||
"input": task_prompt,
|
||||
"tool_names": self.__tools_names(tools),
|
||||
"tools": render_text_description(tools),
|
||||
}
|
||||
|
||||
@@ -17,6 +17,7 @@ class Task(BaseModel):
|
||||
arbitrary_types_allowed = True
|
||||
|
||||
__hash__ = object.__hash__ # type: ignore
|
||||
used_tools: int = 0
|
||||
i18n: I18N = I18N()
|
||||
thread: threading.Thread = None
|
||||
description: str = Field(description="Description of the actual task.")
|
||||
@@ -96,25 +97,29 @@ class Task(BaseModel):
|
||||
|
||||
if self.async_execution:
|
||||
self.thread = threading.Thread(
|
||||
target=self._execute, args=(agent, self._prompt(), context, tools)
|
||||
target=self._execute, args=(agent, self, context, tools)
|
||||
)
|
||||
self.thread.start()
|
||||
else:
|
||||
result = self._execute(
|
||||
task=self,
|
||||
agent=agent,
|
||||
task_prompt=self._prompt(),
|
||||
context=context,
|
||||
tools=tools,
|
||||
)
|
||||
return result
|
||||
|
||||
def _execute(self, agent, task_prompt, context, tools):
|
||||
result = agent.execute_task(task=task_prompt, context=context, tools=tools)
|
||||
def _execute(self, agent, task, context, tools):
|
||||
result = agent.execute_task(
|
||||
task=task,
|
||||
context=context,
|
||||
tools=tools,
|
||||
)
|
||||
self.output = TaskOutput(description=self.description, result=result)
|
||||
self.callback(self.output) if self.callback else None
|
||||
return result
|
||||
|
||||
def _prompt(self) -> str:
|
||||
def prompt(self) -> str:
|
||||
"""Prompt the task.
|
||||
|
||||
Returns:
|
||||
|
||||
@@ -4,6 +4,7 @@ from langchain.tools import StructuredTool
|
||||
from pydantic import BaseModel, Field
|
||||
|
||||
from crewai.agent import Agent
|
||||
from crewai.task import Task
|
||||
from crewai.utilities import I18N
|
||||
|
||||
|
||||
@@ -53,4 +54,5 @@ class AgentTools(BaseModel):
|
||||
)
|
||||
|
||||
agent = agent[0]
|
||||
task = Task(description=task, agent=agent)
|
||||
return agent.execute_task(task, context)
|
||||
|
||||
Reference in New Issue
Block a user