langchain icon indicating copy to clipboard operation
langchain copied to clipboard

ZeroShotAgent does not support multi-input tool Calculator.

Open pranjaldoshi96 opened this issue 1 year ago • 3 comments

I am trying to follow quick start guide for using agents from https://python.langchain.com/en/latest/getting_started/getting_started.html#agents-dynamically-call-chains-based-on-user-input while following steps I am seeing error

ZeroShotAgent does not support multi-input tool Calculator.

I am using langchain==0.0.152 and python version Python 3.8.10

Python code I executed

from langchain.agents import load_tools
from langchain.agents import initialize_agent
from langchain.agents import AgentType

llm = OpenAI(temperature=0)
tools = load_tools(["serpapi", "llm-math"], llm=llm)
agent = initialize_agent(tools, llm, agent=AgentType.ZERO_SHOT_REACT_DESCRIPTION, verbose=True)

The Error I am seeing

---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
/tmp/ipykernel_1917316/1048650410.py in <module>
      1 llm = OpenAI(temperature=0)
      2 tools = load_tools(["serpapi", "llm-math"], llm=llm)
----> 3 agent = initialize_agent(tools, llm, agent=AgentType.ZERO_SHOT_REACT_DESCRIPTION, verbose=True)

~/Code/langchainApp/venv/lib/python3.8/site-packages/langchain/agents/initialize.py in initialize_agent(tools, llm, agent, callback_manager, agent_path, agent_kwargs, **kwargs)
     50         agent_cls = AGENT_TO_CLASS[agent]
     51         agent_kwargs = agent_kwargs or {}
---> 52         agent_obj = agent_cls.from_llm_and_tools(
     53             llm, tools, callback_manager=callback_manager, **agent_kwargs
     54         )

~/Code/langchainApp/venv/lib/python3.8/site-packages/langchain/agents/mrkl/base.py in from_llm_and_tools(cls, llm, tools, callback_manager, output_parser, prefix, suffix, format_instructions, input_variables, **kwargs)
     99     ) -> Agent:
    100         """Construct an agent from an LLM and tools."""
--> 101         cls._validate_tools(tools)
    102         prompt = cls.create_prompt(
    103             tools,

~/Code/langchainApp/venv/lib/python3.8/site-packages/langchain/agents/mrkl/base.py in _validate_tools(cls, tools)
    123     @classmethod
    124     def _validate_tools(cls, tools: Sequence[BaseTool]) -> None:
--> 125         super()._validate_tools(tools)
    126         for tool in tools:
    127             if tool.description is None:

~/Code/langchainApp/venv/lib/python3.8/site-packages/langchain/agents/agent.py in _validate_tools(cls, tools)
    457         for tool in tools:
    458             if not tool.is_single_input:
--> 459                 raise ValueError(
    460                     f"{cls.__name__} does not support multi-input tool {tool.name}."
    461                 )

ValueError: ZeroShotAgent does not support multi-input tool Calculator.

Let me know if more information is needed or if this is expected behavior then documentation changes are needed.

pranjaldoshi96 avatar Apr 29 '23 11:04 pranjaldoshi96

+1

Same issue here

aliw77 avatar Apr 29 '23 14:04 aliw77

Not sure why that is not allowed - its not like LLM's can't generate the input lol. I just overwrote the from_llm_and_tools method to not validate the tools.

philipk19238 avatar Apr 29 '23 19:04 philipk19238

I created a PR https://github.com/hwchase17/langchain/pull/3803 that removes the restrictive checking of multi-input in the Agent base class. Will need reviewers to +1 and merge.

philipk19238 avatar Apr 30 '23 00:04 philipk19238

This should be fixed in 0.0.153

vowelparrot avatar May 01 '23 01:05 vowelparrot

langchain 0.0.153 can handle this error.

bigmarten avatar May 26 '23 23:05 bigmarten

you bet.

Zero-coder avatar Jun 27 '23 06:06 Zero-coder

I meet this problem again with newest version.

Zero-coder avatar Jun 27 '23 06:06 Zero-coder

Any update on this? I cannot use tools.

dev-frid avatar Aug 16 '23 14:08 dev-frid

I face the same issue now.

Name: langchain Version: 0.0.308 Summary: Building applications with LLMs through composability Home-page: https://github.com/langchain-ai/langchain Author: Author-email: License: MIT Location: /Users/cgm_mbf_lemery_mac/miniconda3/envs/torch/lib/python3.10/site-packages Requires: aiohttp, anyio, async-timeout, dataclasses-json, jsonpatch, langsmith, numpy, pydantic, PyYAML, requests, SQLAlchemy, tenacity Required-by: langchain-experimental, langflow, langfuse

`from typing import Optional, Type from langchain.chains.conversation.memory import ConversationBufferWindowMemory import random

from langchain.callbacks.manager import ( AsyncCallbackManagerForToolRun, CallbackManagerForToolRun, )

Set up the turbo LLM

turbo_llm = ChatOpenAI( temperature=0, model_name='gpt-3.5-turbo' )

email = 'XXXXXXX' url = "https://XXXXXXX.atlassian.net/rest/api/3/issue"

class CustomJiraToolIssueStory(BaseTool): """ Custom Jira Tool for creating tickets in Jira. """ name = "CustomJiraPost" description = "Useful to create tickets in Jira"

def _run(
    self,
    tool_input: str,
    url: str,
    email: str, 
    run_manager: Optional[AsyncCallbackManagerForToolRun] = None
) -> str:
    
    """Use the tool."""
    
    url = url

    auth = HTTPBasicAuth(email, api_token_jira)

    headers = {
      "Accept": "application/json",
      "Content-Type": "application/json"
    }


    payload = tool_input

    response = requests.request(
       "POST",
       url,
       data=payload,
       headers=headers,
       auth=auth
    )
    
    return json.dumps(json.loads(response.text), sort_keys=True, indent=4, separators=(",", ": "))

async def _arun(
    self,
    tool_input: str,
    url: str, 
    email: str,  
    run_manager: Optional[AsyncCallbackManagerForToolRun] = None,
) -> str:
    """Use the tool asynchronously."""
    raise NotImplementedError("custom_search does not support async")

Jira = CustomJiraToolIssueStory()

tools = [Jira]`

JoffreyLemery avatar Oct 30 '23 12:10 JoffreyLemery