From b8c9ab04fe7f510c7c99da29f9d26270fe31ecb0 Mon Sep 17 00:00:00 2001 From: Kye Date: Sun, 19 Nov 2023 22:29:56 -0800 Subject: [PATCH] CLEAN UP: Structs folder of old workflow.py and nonlinearworkflow.py --- .../account_team2.py => account_team2.py | 6 +- pyproject.toml | 2 +- swarms/structs/task.py | 174 ------------------ swarms/structs/workflow.py | 84 --------- 4 files changed, 2 insertions(+), 264 deletions(-) rename playground/demos/accountant_team/account_team2.py => account_team2.py (92%) delete mode 100644 swarms/structs/task.py delete mode 100644 swarms/structs/workflow.py diff --git a/playground/demos/accountant_team/account_team2.py b/account_team2.py similarity index 92% rename from playground/demos/accountant_team/account_team2.py rename to account_team2.py index b39e91fc..d7842ee4 100644 --- a/playground/demos/accountant_team/account_team2.py +++ b/account_team2.py @@ -4,7 +4,6 @@ from swarms.models import Anthropic, OpenAIChat from swarms.prompts.accountant_swarm_prompts import ( DECISION_MAKING_PROMPT, DOC_ANALYZER_AGENT_PROMPT, - FRAUD_DETECTION_AGENT_PROMPT, SUMMARY_GENERATOR_AGENT_PROMPT, ) from swarms.structs import Flow @@ -61,16 +60,13 @@ print(pdf_text) fraud_detection_agent_output = doc_analyzer_agent.run( f"{fraud_detection_instructions}: {pdf_text}" ) -# print(fraud_detection_agent_output) # Generate an actionable summary of the document summary_agent_output = summary_generator_agent.run( f"{summary_agent_instructions}: {fraud_detection_agent_output}" ) -# print(summary_agent_output) # Provide decision making support to the accountant decision_making_support_agent_output = decision_making_support_agent.run( f"{decision_making_support_agent_instructions}: {summary_agent_output}" -) -# print(decision_making_support_agent_output) \ No newline at end of file +) \ No newline at end of file diff --git a/pyproject.toml b/pyproject.toml index c96f5119..d7fd64b0 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "poetry.core.masonry.api" [tool.poetry] name = "swarms" -version = "2.3.7" +version = "2.3.9" description = "Swarms - Pytorch" license = "MIT" authors = ["Kye Gomez "] diff --git a/swarms/structs/task.py b/swarms/structs/task.py deleted file mode 100644 index 3d479c43..00000000 --- a/swarms/structs/task.py +++ /dev/null @@ -1,174 +0,0 @@ -# from __future__ import annotations - -# import json -# import pprint -# import uuid -# from abc import ABC, abstractmethod -# from enum import Enum -# from typing import Any, List, Optional, Union - -# from pydantic import BaseModel, Field, StrictStr -# # from swarms.artifacts.main import Artifact -# # from swarms.artifacts.error_artifact import ErrorArtifact - - -# class BaseTask(ABC): -# class State(Enum): -# PENDING = 1 -# EXECUTING = 2 -# FINISHED = 3 - -# def __init__(self): -# self.id: str = uuid.uuid4().hex -# self.state: BaseTask.State = self.State.PENDING -# self.parent_ids: List[str] = [] -# self.child_ids: List[str] = [] -# self.output = None -# self.structure = None - -# @property -# @abstractmethod -# def input(self) -> Any: -# pass - -# @property -# def parents(self) -> List[BaseTask]: -# return [self.structure.find_task(parent_id) for parent_id in self.parent_ids] - -# @property -# def children(self) -> List[BaseTask]: -# return [self.structure.find_task(child_id) for child_id in self.child_ids] - -# def __rshift__(self, child: BaseTask) -> BaseTask: -# return self.add_child(child) - -# def __lshift__(self, child: BaseTask) -> BaseTask: -# return self.add_parent(child) - -# def preprocess(self, structure) -> BaseTask: -# self.structure = structure -# return self - -# def add_child(self, child: BaseTask) -> BaseTask: -# if self.structure: -# child.structure = self.structure -# elif child.structure: -# self.structure = child.structure - -# if child not in self.structure.tasks: -# self.structure.tasks.append(child) - -# if self not in self.structure.tasks: -# self.structure.tasks.append(self) - -# if child.id not in self.child_ids: -# self.child_ids.append(child.id) - -# if self.id not in child.parent_ids: -# child.parent_ids.append(self.id) - -# return child - -# def add_parent(self, parent: BaseTask) -> BaseTask: -# if self.structure: -# parent.structure = self.structure -# elif parent.structure: -# self.structure = parent.structure - -# if parent not in self.structure.tasks: -# self.structure.tasks.append(parent) - -# if self not in self.structure.tasks: -# self.structure.tasks.append(self) - -# if parent.id not in self.parent_ids: -# self.parent_ids.append(parent.id) - -# if self.id not in parent.child_ids: -# parent.child_ids.append(self.id) - -# return parent - -# def is_pending(self) -> bool: -# return self.state == self.State.PENDING - -# def is_finished(self) -> bool: -# return self.state == self.State.FINISHED - -# def is_executing(self) -> bool: -# return self.state == self.State.EXECUTING - -# def before_run(self) -> None: -# pass - -# def after_run(self) -> None: -# pass - -# def execute(self) -> Optional[Union[Artifact, ErrorArtifact]]: -# try: -# self.state = self.State.EXECUTING -# self.before_run() -# self.output = self.run() -# self.after_run() -# except Exception as e: -# self.output = ErrorArtifact(str(e)) -# finally: -# self.state = self.State.FINISHED -# return self.output - -# def can_execute(self) -> bool: -# return self.state == self.State.PENDING and all( -# parent.is_finished() for parent in self.parents -# ) - -# def reset(self) -> BaseTask: -# self.state = self.State.PENDING -# self.output = None -# return self - -# @abstractmethod -# def run(self) -> Optional[Union[Artifact, ErrorArtifact]]: -# pass - - -# class Task(BaseModel): -# input: Optional[StrictStr] = Field(None, description="Input prompt for the task") -# additional_input: Optional[Any] = Field( -# None, description="Input parameters for the task. Any value is allowed" -# ) -# task_id: StrictStr = Field(..., description="ID of the task") - -# class Config: -# allow_population_by_field_name = True -# validate_assignment = True - -# def to_str(self) -> str: -# return pprint.pformat(self.dict(by_alias=True)) - -# def to_json(self) -> str: -# return json.dumps(self.dict(by_alias=True, exclude_none=True)) - -# @classmethod -# def from_json(cls, json_str: str) -> "Task": -# return cls.parse_raw(json_str) - -# def to_dict(self) -> dict: -# _dict = self.dict(by_alias=True, exclude_none=True) -# if self.artifacts: -# _dict["artifacts"] = [ -# artifact.dict(by_alias=True, exclude_none=True) -# for artifact in self.artifacts -# ] -# return _dict - -# @classmethod -# def from_dict(cls, obj: dict) -> "Task": -# if obj is None: -# return None -# if not isinstance(obj, dict): -# raise ValueError("Input must be a dictionary.") -# if "artifacts" in obj: -# obj["artifacts"] = [ -# Artifact.parse_obj(artifact) for artifact in obj["artifacts"] -# ] -# return cls.parse_obj(obj) diff --git a/swarms/structs/workflow.py b/swarms/structs/workflow.py deleted file mode 100644 index 31c95144..00000000 --- a/swarms/structs/workflow.py +++ /dev/null @@ -1,84 +0,0 @@ -from __future__ import annotations - -import uuid - -# from concurrent.futures import ThreadPoolExecutor -# from typing import Any, Dict, List, Optional -# # from swarms.structs.task import Task - - -# class Workflow: -# """ -# Workflows are ideal for prescriptive processes that need to be executed -# sequentially. -# They string together multiple tasks of varying types, and can use Short-Term Memory -# or pass specific arguments downstream. - -# Usage -# llm = LLM() -# workflow = Workflow(llm) - -# workflow.add("What's the weather in miami") -# workflow.add("Provide details for {{ parent_output }}") -# workflow.add("Summarize the above information: {{ parent_output}}) - -# workflow.run() - -# """ - -# def __init__(self, agent, parallel: bool = False): -# """__init__""" -# self.agent = agent -# self.tasks: List[Task] = [] -# self.parallel = parallel - -# def add(self, task: str) -> Task: -# """Add a task""" -# task = Task(task_id=uuid.uuid4().hex, input=task) - -# if self.last_task(): -# self.last_task().add_child(task) -# else: -# task.structure = self -# self.tasks.append(task) -# return task - -# def first_task(self) -> Optional[Task]: -# """Add first task""" -# return self.tasks[0] if self.tasks else None - -# def last_task(self) -> Optional[Task]: -# """Last task""" -# return self.tasks[-1] if self.tasks else None - -# def run(self, task: str) -> Task: -# """Run tasks""" -# self.add(task) - -# if self.parallel: -# with ThreadPoolExecutor() as executor: -# list(executor.map(self.__run_from_task, [self.first_task])) -# else: -# self.__run_from_task(self.first_task()) - -# return self.last_task() - -# def context(self, task: Task) -> Dict[str, Any]: -# """Context in tasks""" -# return { -# "parent_output": task.parents[0].output -# if task.parents and task.parents[0].output -# else None, -# "parent": task.parents[0] if task.parents else None, -# "child": task.children[0] if task.children else None, -# } - -# def __run_from_task(self, task: Optional[Task]) -> None: -# """Run from task""" -# if task is None: -# return -# else: -# if isinstance(task.execute(), Exception): -# return -# else: -# self.__run_from_task(next(iter(task.children), None))