|
50 | 50 | from open_webui.retrieval.web.google_pse import search_google_pse |
51 | 51 | from open_webui.retrieval.web.jina_search import search_jina |
52 | 52 | from open_webui.retrieval.web.searchapi import search_searchapi |
| 53 | +from open_webui.retrieval.web.serpapi import search_serpapi |
53 | 54 | from open_webui.retrieval.web.searxng import search_searxng |
54 | 55 | from open_webui.retrieval.web.serper import search_serper |
55 | 56 | from open_webui.retrieval.web.serply import search_serply |
@@ -388,6 +389,8 @@ async def get_rag_config(request: Request, user=Depends(get_admin_user)): |
388 | 389 | "tavily_api_key": request.app.state.config.TAVILY_API_KEY, |
389 | 390 | "searchapi_api_key": request.app.state.config.SEARCHAPI_API_KEY, |
390 | 391 | "searchapi_engine": request.app.state.config.SEARCHAPI_ENGINE, |
| 392 | + "serpapi_api_key": request.app.state.config.SERPAPI_API_KEY, |
| 393 | + "serpapi_engine": request.app.state.config.SERPAPI_ENGINE, |
391 | 394 | "jina_api_key": request.app.state.config.JINA_API_KEY, |
392 | 395 | "bing_search_v7_endpoint": request.app.state.config.BING_SEARCH_V7_ENDPOINT, |
393 | 396 | "bing_search_v7_subscription_key": request.app.state.config.BING_SEARCH_V7_SUBSCRIPTION_KEY, |
@@ -439,6 +442,8 @@ class WebSearchConfig(BaseModel): |
439 | 442 | tavily_api_key: Optional[str] = None |
440 | 443 | searchapi_api_key: Optional[str] = None |
441 | 444 | searchapi_engine: Optional[str] = None |
| 445 | + serpapi_api_key: Optional[str] = None |
| 446 | + serpapi_engine: Optional[str] = None |
442 | 447 | jina_api_key: Optional[str] = None |
443 | 448 | bing_search_v7_endpoint: Optional[str] = None |
444 | 449 | bing_search_v7_subscription_key: Optional[str] = None |
@@ -545,6 +550,13 @@ async def update_rag_config( |
545 | 550 | form_data.web.search.searchapi_engine |
546 | 551 | ) |
547 | 552 |
|
| 553 | + request.app.state.config.SERPAPI_API_KEY = ( |
| 554 | + form_data.web.search.serpapi_api_key |
| 555 | + ) |
| 556 | + request.app.state.config.SERPAPI_ENGINE = ( |
| 557 | + form_data.web.search.serpapi_engine |
| 558 | + ) |
| 559 | + |
548 | 560 | request.app.state.config.JINA_API_KEY = form_data.web.search.jina_api_key |
549 | 561 | request.app.state.config.BING_SEARCH_V7_ENDPOINT = ( |
550 | 562 | form_data.web.search.bing_search_v7_endpoint |
@@ -604,6 +616,8 @@ async def update_rag_config( |
604 | 616 | "serply_api_key": request.app.state.config.SERPLY_API_KEY, |
605 | 617 | "serachapi_api_key": request.app.state.config.SEARCHAPI_API_KEY, |
606 | 618 | "searchapi_engine": request.app.state.config.SEARCHAPI_ENGINE, |
| 619 | + "serpapi_api_key": request.app.state.config.SERPAPI_API_KEY, |
| 620 | + "serpapi_engine": request.app.state.config.SERPAPI_ENGINE, |
607 | 621 | "tavily_api_key": request.app.state.config.TAVILY_API_KEY, |
608 | 622 | "jina_api_key": request.app.state.config.JINA_API_KEY, |
609 | 623 | "bing_search_v7_endpoint": request.app.state.config.BING_SEARCH_V7_ENDPOINT, |
@@ -1127,6 +1141,7 @@ def search_web(request: Request, engine: str, query: str) -> list[SearchResult]: |
1127 | 1141 | - TAVILY_API_KEY |
1128 | 1142 | - EXA_API_KEY |
1129 | 1143 | - SEARCHAPI_API_KEY + SEARCHAPI_ENGINE (by default `google`) |
| 1144 | + - SERPAPI_API_KEY + SERPAPI_ENGINE (by default `google`) |
1130 | 1145 | Args: |
1131 | 1146 | query (str): The query to search for |
1132 | 1147 | """ |
@@ -1255,6 +1270,17 @@ def search_web(request: Request, engine: str, query: str) -> list[SearchResult]: |
1255 | 1270 | ) |
1256 | 1271 | else: |
1257 | 1272 | raise Exception("No SEARCHAPI_API_KEY found in environment variables") |
| 1273 | + elif engine == "serpapi": |
| 1274 | + if request.app.state.config.SERPAPI_API_KEY: |
| 1275 | + return search_serpapi( |
| 1276 | + request.app.state.config.SERPAPI_API_KEY, |
| 1277 | + request.app.state.config.SERPAPI_ENGINE, |
| 1278 | + query, |
| 1279 | + request.app.state.config.RAG_WEB_SEARCH_RESULT_COUNT, |
| 1280 | + request.app.state.config.RAG_WEB_SEARCH_DOMAIN_FILTER_LIST, |
| 1281 | + ) |
| 1282 | + else: |
| 1283 | + raise Exception("No SERPAPI_API_KEY found in environment variables") |
1258 | 1284 | elif engine == "jina": |
1259 | 1285 | return search_jina( |
1260 | 1286 | request.app.state.config.JINA_API_KEY, |
|
0 commit comments