diff --git a/langchain/tools/base.py b/langchain/tools/base.py index ea69731b67d0f2..99036a49d17f74 100644 --- a/langchain/tools/base.py +++ b/langchain/tools/base.py @@ -391,7 +391,7 @@ def _to_args_and_kwargs(self, tool_input: Union[str, Dict]) -> Tuple[Tuple, Dict # 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 dd1be32f934aab..371e48b84093cf 100644 --- a/tests/unit_tests/agents/test_tools.py +++ b/tests/unit_tests/agents/test_tools.py @@ -14,6 +14,7 @@ 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 ambiguous_function(*args: Any, **kwargs: Any) -> str: 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 6638a095317b5e..a55976a2ded65a 100644 --- a/tests/unit_tests/tools/test_base.py +++ b/tests/unit_tests/tools/test_base.py @@ -231,7 +231,7 @@ def structured_tool_input( 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)