@@ -24,14 +24,6 @@ def _get_python_repl() -> Tool:
24
24
)
25
25
26
26
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
-
35
27
def _get_requests () -> Tool :
36
28
return Tool (
37
29
"Requests" ,
@@ -50,7 +42,6 @@ def _get_terminal() -> Tool:
50
42
51
43
_BASE_TOOLS = {
52
44
"python_repl" : _get_python_repl ,
53
- "serpapi" : _get_serpapi ,
54
45
"requests" : _get_requests ,
55
46
"terminal" : _get_terminal ,
56
47
}
@@ -139,13 +130,22 @@ def _get_google_search(**kwargs: Any) -> Tool:
139
130
)
140
131
141
132
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
+
142
141
_EXTRA_LLM_TOOLS = {
143
142
"news-api" : (_get_news_api , ["news_api_key" ]),
144
143
"tmdb-api" : (_get_tmdb_api , ["tmdb_bearer_token" ]),
145
144
}
146
145
_EXTRA_OPTIONAL_TOOLS = {
147
146
"wolfram-alpha" : (_get_wolfram_alpha , ["wolfram_alpha_appid" ]),
148
147
"google-search" : (_get_google_search , ["google_api_key" , "google_cse_id" ]),
148
+ "serpapi" : (_get_serpapi , ["serpapi_api_key" ]),
149
149
}
150
150
151
151
@@ -172,15 +172,15 @@ def load_tools(
172
172
elif name in _EXTRA_LLM_TOOLS :
173
173
if llm is None :
174
174
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 ]
176
176
missing_keys = set (extra_keys ).difference (kwargs )
177
177
if missing_keys :
178
178
raise ValueError (
179
179
f"Tool { name } requires some parameters that were not "
180
180
f"provided: { missing_keys } "
181
181
)
182
182
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 ))
184
184
elif name in _EXTRA_OPTIONAL_TOOLS :
185
185
_get_tool_func , extra_keys = _EXTRA_OPTIONAL_TOOLS [name ]
186
186
sub_kwargs = {k : kwargs [k ] for k in extra_keys if k in kwargs }
@@ -193,4 +193,9 @@ def load_tools(
193
193
194
194
def get_all_tool_names () -> List [str ]:
195
195
"""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