new tool style

NewTools
Kye 2 years ago
parent b069672488
commit 6b3fba50ea

@ -13,20 +13,22 @@ import logging
from pydantic import BaseModel, Extra from pydantic import BaseModel, Extra
logging.basicConfig(level=logging.DEBUG, format='%(asctime)s - %(levelname)s - %(message)s') logging.basicConfig(level=logging.DEBUG, format='%(asctime)s - %(levelname)s - %(message)s')
class WorkerNodeArgs(BaseModel): # class WorkerNodeArgs(BaseModel):
prompt: str # prompt: str
run_manager: Optional[CallbackManagerForToolRun] = None # run_manager: Optional[CallbackManagerForToolRun] = None
class Config: # class Config:
arbitrary_types_allowed = True # arbitrary_types_allowed = True
extra = Extra.forbid # extra = Extra.forbid
@tool("WorkerNode") # @tool("WorkerNode")
class WorkerNode(BaseTool): class WorkerNode(
# BaseTool
):
"""Useful for when you need to spawn an autonomous agent instance as a worker to accomplish complex tasks, it can search the internet or spawn child multi-modality models to process and generate images and text or audio and so on""" """Useful for when you need to spawn an autonomous agent instance as a worker to accomplish complex tasks, it can search the internet or spawn child multi-modality models to process and generate images and text or audio and so on"""
args_schema: Optional[Type[BaseModel]] = WorkerNodeArgs # args_schema: Optional[Type[BaseModel]] = WorkerNodeArgs
"""Pydantic model class to validate and parse the tool's input arguments.""" # """Pydantic model class to validate and parse the tool's input arguments."""
def __init__(self, **kwargs): def __init__(self, **kwargs):
super().__init__(**kwargs) super().__init__(**kwargs)
@ -66,7 +68,11 @@ class WorkerNode(BaseTool):
raise NotImplementedError("WorkerNode does not support async") raise NotImplementedError("WorkerNode does not support async")
worker_tool = Tool(
name="WorkerNode AI Agent",
func=WorkerNode._run,
description="Useful for when you need to spawn an autonomous agent instance as a worker to accomplish complex tasks, it can search the internet or spawn child multi-modality models to process and generate images and text or audio and so on"
)
# class WorkerNode(BaseTool): # class WorkerNode(BaseTool):
# """Useful for when you need to spawn an autonomous agent instance as a worker to accomplish complex tasks, it can search the internet or spawn child multi-modality models to process and generate images and text or audio and so on """ # """Useful for when you need to spawn an autonomous agent instance as a worker to accomplish complex tasks, it can search the internet or spawn child multi-modality models to process and generate images and text or audio and so on """

@ -3,6 +3,7 @@ from swarms.agents.workers.worker import WorkerNode
from swarms.agents.boss.boss_agent import BossNode from swarms.agents.boss.boss_agent import BossNode
# from swarms.agents.workers.omni_worker import OmniWorkerAgent # from swarms.agents.workers.omni_worker import OmniWorkerAgent
from swarms.agents.workers.worker import worker_tool
import logging import logging
logging.basicConfig(level=logging.DEBUG, format='%(asctime)s - %(levelname)s - %(message)s') logging.basicConfig(level=logging.DEBUG, format='%(asctime)s - %(levelname)s - %(message)s')
@ -50,7 +51,7 @@ class Swarms:
todo_chain = LLMChain(llm=llm, prompt=todo_prompt) todo_chain = LLMChain(llm=llm, prompt=todo_prompt)
tools = [ tools = [
Tool(name="TODO", func=todo_chain.run, description="useful for when you need to come up with todo lists. Input: an objective to create a todo list for. Output: a todo list for that objective. Please be very clear what the objective is!"), Tool(name="TODO", func=todo_chain.run, description="useful for when you need to come up with todo lists. Input: an objective to create a todo list for. Output: a todo list for that objective. Please be very clear what the objective is!"),
worker_node, worker_tool
] ]
suffix = """Question: {task}\n{agent_scratchpad}""" suffix = """Question: {task}\n{agent_scratchpad}"""
prefix = """You are an Boss in a swarm who performs one task based on the following objective: {objective}. Take into account these previously completed tasks: {context}.\n""" prefix = """You are an Boss in a swarm who performs one task based on the following objective: {objective}. Take into account these previously completed tasks: {context}.\n"""

Loading…
Cancel
Save