[agent_executor] convenience func: lookup tool by name

This commit is contained in:
blob42 2023-03-26 05:03:18 +02:00
parent b83e826510
commit 8307712a45
2 changed files with 26 additions and 0 deletions

View File

@ -363,6 +363,10 @@ class AgentExecutor(Chain, BaseModel):
else: else:
return self.agent.return_values return self.agent.return_values
def lookup_tool(self, name: str) -> BaseTool:
"""Lookup tool by name."""
return {tool.name: tool for tool in self.tools}[name]
def _should_continue(self, iterations: int) -> bool: def _should_continue(self, iterations: int) -> bool:
if self.max_iterations is None: if self.max_iterations is None:
return True return True

View File

@ -289,3 +289,25 @@ def test_agent_with_new_prefix_suffix() -> None:
prompt_str = agent.agent.llm_chain.prompt.template prompt_str = agent.agent.llm_chain.prompt.template
assert prompt_str.startswith(prefix), "Prompt does not start with prefix" assert prompt_str.startswith(prefix), "Prompt does not start with prefix"
assert prompt_str.endswith(suffix), "Prompt does not end with suffix" assert prompt_str.endswith(suffix), "Prompt does not end with suffix"
def test_agent_lookup_tool() -> None:
"""Test agent lookup tool."""
fake_llm = FakeListLLM(
responses=["FooBarBaz\nAction: Search\nAction Input: misalignment"]
)
tools = [
Tool(
name="Search",
func=lambda x: x,
description="Useful for searching",
return_direct=True,
),
]
agent = initialize_agent(
tools=tools,
llm=fake_llm,
agent="zero-shot-react-description",
)
assert agent.lookup_tool("Search") == tools[0]