Skip to content

Commit 86dbdb1

Browse files
hwchase17bborn
andauthored
Harrison/serpapi extra tools (#691)
Co-authored-by: Bruno Bornsztein <[email protected]>
1 parent b4fcdeb commit 86dbdb1

File tree

1 file changed

+17
-12
lines changed

1 file changed

+17
-12
lines changed

langchain/agents/load_tools.py

Lines changed: 17 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -24,14 +24,6 @@ def _get_python_repl() -> Tool:
2424
)
2525

2626

27-
def _get_serpapi() -> Tool:
28-
return Tool(
29-
"Search",
30-
SerpAPIWrapper().run,
31-
"A search engine. Useful for when you need to answer questions about current events. Input should be a search query.",
32-
)
33-
34-
3527
def _get_requests() -> Tool:
3628
return Tool(
3729
"Requests",
@@ -50,7 +42,6 @@ def _get_terminal() -> Tool:
5042

5143
_BASE_TOOLS = {
5244
"python_repl": _get_python_repl,
53-
"serpapi": _get_serpapi,
5445
"requests": _get_requests,
5546
"terminal": _get_terminal,
5647
}
@@ -139,13 +130,22 @@ def _get_google_search(**kwargs: Any) -> Tool:
139130
)
140131

141132

133+
def _get_serpapi(**kwargs: Any) -> Tool:
134+
return Tool(
135+
"Search",
136+
SerpAPIWrapper(**kwargs).run,
137+
"A search engine. Useful for when you need to answer questions about current events. Input should be a search query.",
138+
)
139+
140+
142141
_EXTRA_LLM_TOOLS = {
143142
"news-api": (_get_news_api, ["news_api_key"]),
144143
"tmdb-api": (_get_tmdb_api, ["tmdb_bearer_token"]),
145144
}
146145
_EXTRA_OPTIONAL_TOOLS = {
147146
"wolfram-alpha": (_get_wolfram_alpha, ["wolfram_alpha_appid"]),
148147
"google-search": (_get_google_search, ["google_api_key", "google_cse_id"]),
148+
"serpapi": (_get_serpapi, ["serpapi_api_key"]),
149149
}
150150

151151

@@ -172,15 +172,15 @@ def load_tools(
172172
elif name in _EXTRA_LLM_TOOLS:
173173
if llm is None:
174174
raise ValueError(f"Tool {name} requires an LLM to be provided")
175-
_get_tool_func, extra_keys = _EXTRA_OPTIONAL_TOOLS[name]
175+
_get_llm_tool_func, extra_keys = _EXTRA_LLM_TOOLS[name]
176176
missing_keys = set(extra_keys).difference(kwargs)
177177
if missing_keys:
178178
raise ValueError(
179179
f"Tool {name} requires some parameters that were not "
180180
f"provided: {missing_keys}"
181181
)
182182
sub_kwargs = {k: kwargs[k] for k in extra_keys}
183-
tools.append(_get_tool_func(llm=llm, **sub_kwargs))
183+
tools.append(_get_llm_tool_func(llm=llm, **sub_kwargs))
184184
elif name in _EXTRA_OPTIONAL_TOOLS:
185185
_get_tool_func, extra_keys = _EXTRA_OPTIONAL_TOOLS[name]
186186
sub_kwargs = {k: kwargs[k] for k in extra_keys if k in kwargs}
@@ -193,4 +193,9 @@ def load_tools(
193193

194194
def get_all_tool_names() -> List[str]:
195195
"""Get a list of all possible tool names."""
196-
return list(_BASE_TOOLS) + list(_EXTRA_OPTIONAL_TOOLS) + list(_LLM_TOOLS)
196+
return (
197+
list(_BASE_TOOLS)
198+
+ list(_EXTRA_OPTIONAL_TOOLS)
199+
+ list(_EXTRA_LLM_TOOLS)
200+
+ list(_LLM_TOOLS)
201+
)

0 commit comments

Comments
 (0)