Spaces:
Sleeping
Sleeping
| # 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:** | |
| ```python | |
| 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:** | |
| ```python | |
| 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:** | |
| ```python | |
| 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:** | |
| ```python | |
| 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:** | |
| ```python | |
| 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:** | |
| ```python | |
| 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:** | |
| ```python | |
| 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:** | |
| ```python | |
| 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:** | |
| ```python | |
| 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:** | |
| ```python | |
| 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:** | |
| ```python | |
| workflow = BaseWorkflow() | |
| workflow.workflow_dashboard() | |
| ``` | |
| ### workflow_bootup | |
| Initializes the workflow. | |
| **Examples:** | |
| ```python | |
| workflow = BaseWorkflow() | |
| workflow.workflow_bootup() | |
| ``` |