diff --git a/langchain/tools/base.py b/langchain/tools/base.py index ca3bebb0..c3fab242 100644 --- a/langchain/tools/base.py +++ b/langchain/tools/base.py @@ -394,7 +394,7 @@ class Tool(BaseTool): # For backwards compatibility. The tool must be run with a single input all_args = list(args) + list(kwargs.values()) if len(all_args) != 1: - raise ValueError( + raise ToolException( f"Too many arguments to single-input tool {self.name}." f" Args: {all_args}" ) diff --git a/tests/unit_tests/agents/test_tools.py b/tests/unit_tests/agents/test_tools.py index dd1be32f..371e48b8 100644 --- a/tests/unit_tests/agents/test_tools.py +++ b/tests/unit_tests/agents/test_tools.py @@ -14,6 +14,7 @@ from langchain.agents.mrkl.base import ZeroShotAgent from langchain.agents.react.base import ReActDocstoreAgent, ReActTextWorldAgent from langchain.agents.self_ask_with_search.base import SelfAskWithSearchAgent from langchain.agents.tools import Tool, tool +from langchain.tools.base import ToolException from tests.unit_tests.callbacks.fake_callback_handler import FakeCallbackHandler @@ -63,7 +64,7 @@ def test_tool_no_args_specified_assumes_str() -> None: assert some_tool.args == expected_args assert some_tool.run("foobar") == "foobar" assert some_tool.run({"tool_input": "foobar"}) == "foobar" - with pytest.raises(ValueError, match="Too many arguments to single-input tool"): + with pytest.raises(ToolException, match="Too many arguments to single-input tool"): some_tool.run({"tool_input": "foobar", "other_input": "bar"}) diff --git a/tests/unit_tests/tools/test_base.py b/tests/unit_tests/tools/test_base.py index 9f05faa0..e486fcc9 100644 --- a/tests/unit_tests/tools/test_base.py +++ b/tests/unit_tests/tools/test_base.py @@ -231,7 +231,7 @@ def test_structured_args_decorator_no_infer_schema() -> None: assert isinstance(structured_tool_input, BaseTool) assert structured_tool_input.name == "structured_tool_input" args = {"arg1": 1, "arg2": 0.001, "opt_arg": {"foo": "bar"}} - with pytest.raises(ValueError): + with pytest.raises(ToolException): assert structured_tool_input.run(args)