langchain
langchain copied to clipboard
ZeroShotAgent does not support multi-input tool Calculator.
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.
+1
Same issue here
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.
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.
This should be fixed in 0.0.153
langchain 0.0.153 can handle this error.
you bet.
I meet this problem again with newest version.
Any update on this? I cannot use tools.
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]`