6.0 KiB
BaseWorkflow
The BaseWorkflow
class serves as a foundational structure for defining and managing workflows. It allows users to add, remove, update, and manage tasks and agents within a workflow, offering flexibility and extensibility for various applications.
Key Concepts
- Agents: Entities participating in the workflow.
- Tasks: Units of work to be executed within the workflow.
- Models: Computational models used within the workflow.
- Workflow State: The state of the workflow, which can be saved and restored.
Attributes
Arguments
Argument | Type | Default | Description |
---|---|---|---|
agents |
List[Agent] |
None |
A list of agents participating in the workflow. |
task_pool |
List[Task] |
None |
A list of tasks in the workflow. |
models |
List[Any] |
None |
A list of models used in the workflow. |
*args |
Variable length argument list. | ||
**kwargs |
Arbitrary keyword arguments. |
Attributes
Attribute | Type | Description |
---|---|---|
agents |
List[Agent] |
A list of agents participating in the workflow. |
task_pool |
List[Task] |
A list of tasks in the workflow. |
models |
List[Any] |
A list of models used in the workflow. |
Methods
add_task
Adds a task or a list of tasks to the task pool.
Arguments:
Parameter | Type | Default | Description |
---|---|---|---|
task |
Task |
None |
A single task to add. |
tasks |
List[Task] |
None |
A list of tasks to add. |
Raises:
ValueError
: If neither task nor tasks are provided.
Examples:
workflow = BaseWorkflow()
task1 = Task(description="Task 1")
task2 = Task(description="Task 2")
# Adding a single task
workflow.add_task(task=task1)
# Adding multiple tasks
workflow.add_task(tasks=[task1, task2])
add_agent
Adds an agent to the workflow.
Arguments:
Parameter | Type | Description |
---|---|---|
agent |
Agent |
The agent to add to the workflow. |
Examples:
workflow = BaseWorkflow()
agent = Agent(name="Agent 1")
# Adding an agent to the workflow
workflow.add_agent(agent=agent)
run
Abstract method to run the workflow.
__sequential_loop
Abstract method for the sequential loop.
__log
Logs a message if verbose mode is enabled.
Arguments:
Parameter | Type | Description |
---|---|---|
message |
str |
The message to log. |
str
Returns a string representation of the workflow.
repr
Returns a string representation of the workflow for debugging.
reset
Resets the workflow by clearing the results of each task.
Examples:
workflow = BaseWorkflow()
workflow.reset()
get_task_results
Returns the results of each task in the workflow.
Returns:
Return Type | Description |
---|---|
Dict[str, Any] |
The results of each task in the workflow. |
Examples:
workflow = BaseWorkflow()
results = workflow.get_task_results()
remove_task
Removes a task from the workflow.
Arguments:
Parameter | Type | Description |
---|---|---|
task |
str |
The description of the task to remove. |
Examples:
workflow = BaseWorkflow()
workflow.remove_task(task="Task 1")
update_task
Updates the arguments of a task in the workflow.
Arguments:
Parameter | Type | Description |
---|---|---|
task |
str |
The description of the task to update. |
**updates |
The updates to apply to the task. |
Raises:
ValueError
: If the task is not found in the workflow.
Examples:
workflow = BaseWorkflow()
task = Task(description="Task 1", kwargs={"param": 1})
# Adding a task to the workflow
workflow.add_task(task=task)
# Updating the task
workflow.update_task("Task 1", param=2)
delete_task
Deletes a task from the workflow.
Arguments:
Parameter | Type | Description |
---|---|---|
task |
str |
The description of the task to delete. |
Raises:
ValueError
: If the task is not found in the workflow.
Examples:
workflow = BaseWorkflow()
task = Task(description="Task 1")
# Adding a task to the workflow
workflow.add_task(task=task)
# Deleting the task
workflow.delete_task("Task 1")
save_workflow_state
Saves the workflow state to a json file.
Arguments:
Parameter | Type | Default | Description |
---|---|---|---|
filepath |
Optional[str] |
"sequential_workflow_state.json" |
The path to save the workflow state to. |
Examples:
workflow = BaseWorkflow()
workflow.save_workflow_state(filepath="workflow_state.json")
add_objective_to_workflow
Adds an objective to the workflow.
Arguments:
Parameter | Type | Description |
---|---|---|
task |
str |
The description of the task. |
**kwargs |
Additional keyword arguments for the task. |
Examples:
workflow = BaseWorkflow()
workflow.add_objective_to_workflow(task="New Objective", agent=agent, args=[], kwargs={})
load_workflow_state
Loads the workflow state from a json file and restores the workflow state.
Arguments:
Parameter | Type | Default | Description |
---|---|---|---|
filepath |
str |
None |
The path to load the workflow state from. |
Examples:
workflow = BaseWorkflow()
workflow.load_workflow_state(filepath="workflow_state.json")
workflow_dashboard
Displays a dashboard for the workflow.
Arguments:
Parameter | Type | Description |
---|---|---|
**kwargs |
Additional keyword arguments to pass to the dashboard. |
Examples:
workflow = BaseWorkflow()
workflow.workflow_dashboard()
workflow_bootup
Initializes the workflow.
Examples:
workflow = BaseWorkflow()
workflow.workflow_bootup()