From 42a28ac1ba1dab551353678a0de0d6c350c8f058 Mon Sep 17 00:00:00 2001 From: Harrison Chase Date: Sat, 17 Jun 2023 11:00:35 -0700 Subject: [PATCH] Harrison/error zero tools (#6340) Co-authored-by: Juhee Kim <46583939+juppytt@users.noreply.github.com> --- langchain/agents/mrkl/base.py | 4 ++++ tests/unit_tests/agents/test_serialization.py | 9 ++++++++- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/langchain/agents/mrkl/base.py b/langchain/agents/mrkl/base.py index f28a01ab..e1d55eb1 100644 --- a/langchain/agents/mrkl/base.py +++ b/langchain/agents/mrkl/base.py @@ -124,6 +124,10 @@ class ZeroShotAgent(Agent): @classmethod def _validate_tools(cls, tools: Sequence[BaseTool]) -> None: validate_tools_single_input(cls.__name__, tools) + if len(tools) == 0: + raise ValueError( + f"Got no tools for {cls.__name__}. At least one tool must be provided." + ) for tool in tools: if tool.description is None: raise ValueError( diff --git a/tests/unit_tests/agents/test_serialization.py b/tests/unit_tests/agents/test_serialization.py index db68fd2b..64e5e4d8 100644 --- a/tests/unit_tests/agents/test_serialization.py +++ b/tests/unit_tests/agents/test_serialization.py @@ -3,12 +3,19 @@ from tempfile import TemporaryDirectory from langchain.agents.agent_types import AgentType from langchain.agents.initialize import initialize_agent, load_agent +from langchain.agents.tools import Tool from langchain.llms.fake import FakeListLLM def test_mrkl_serialization() -> None: agent = initialize_agent( - [], + [ + Tool( + name="Test tool", + func=lambda x: x, + description="Test description", + ) + ], FakeListLLM(responses=[]), agent=AgentType.ZERO_SHOT_REACT_DESCRIPTION, verbose=True,