From 4821367c12918f9b50377ce0bf7b13d730e0b297 Mon Sep 17 00:00:00 2001 From: Dillon Laird Date: Fri, 5 Apr 2024 16:23:43 -0700 Subject: [PATCH] Add NoOp (#41) * spelling mistakes * added noop * added noop * format fix --- vision_agent/agent/vision_agent_prompts.py | 2 +- vision_agent/tools/tools.py | 20 ++++++++++++++++++++ 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/vision_agent/agent/vision_agent_prompts.py b/vision_agent/agent/vision_agent_prompts.py index 62579419..d5d2b1ef 100644 --- a/vision_agent/agent/vision_agent_prompts.py +++ b/vision_agent/agent/vision_agent_prompts.py @@ -1,4 +1,4 @@ -VISION_AGENT_REFLECTION = """You are an advanced reasoning agent that can improve based on self refection. You will be given a previous reasoning trial in which you were given the user's question, the available tools that the agent has, the decomposed tasks and tools that the agent used to answer the question and the final answer the agent provided. You must determine if the agent's answer was correct or incorrect. If the agent's answer was correct, respond with Finish. If the agent's answer was incorrect, you must diagnose a possible reason for failure or phrasing discrepancy and devise a new, concise, high level plan that aims to mitigate the same failure with the tools avilable. Use complete sentences. +VISION_AGENT_REFLECTION = """You are an advanced reasoning agent that can improve based on self refection. You will be given a previous reasoning trial in which you were given the user's question, the available tools that the agent has, the decomposed tasks and tools that the agent used to answer the question and the final answer the agent provided. You must determine if the agent's answer was correct or incorrect. If the agent's answer was correct, respond with Finish. If the agent's answer was incorrect, you must diagnose a possible reason for failure or phrasing discrepancy and devise a new, concise, high level plan that aims to mitigate the same failure with the tools available. Use complete sentences. User's question: {question} diff --git a/vision_agent/tools/tools.py b/vision_agent/tools/tools.py index f13c14dd..151faa36 100644 --- a/vision_agent/tools/tools.py +++ b/vision_agent/tools/tools.py @@ -51,6 +51,25 @@ class Tool(ABC): usage: Dict +class NoOp(Tool): + name = "noop_" + description = ( + "'noop_' is a no-op tool that does nothing if you do not need to use a tool." + ) + usage = { + "required_parameters": [], + "examples": [ + { + "scenario": "If you do not want to use a tool.", + "parameters": {}, + } + ], + } + + def __call__(self) -> None: + return None + + class CLIP(Tool): r"""CLIP is a tool that can classify or tag any image given a set if input classes or tags. @@ -612,6 +631,7 @@ def __call__(self, input: List[int]) -> float: i: {"name": c.name, "description": c.description, "usage": c.usage, "class": c} for i, c in enumerate( [ + NoOp, CLIP, GroundingDINO, AgentGroundingSAM,