From 0fa4dea5ff64ea663f162d07c9a1175c39e4aad0 Mon Sep 17 00:00:00 2001 From: Timothy Jaeryang Baek Date: Sun, 6 Sep 2026 17:21:57 -0400 Subject: [PATCH] refac --- backend/open_webui/retrieval/web/duckduckgo.py | 9 ++++++++- backend/open_webui/routers/retrieval.py | 9 +++++++++ backend/requirements-slim.txt | 2 -- src/lib/components/admin/Settings/WebSearch.svelte | 2 +- 4 files changed, 18 insertions(+), 4 deletions(-) diff --git a/backend/open_webui/retrieval/web/duckduckgo.py b/backend/open_webui/retrieval/web/duckduckgo.py index afd82eaf04..c9cefc25b1 100644 --- a/backend/open_webui/retrieval/web/duckduckgo.py +++ b/backend/open_webui/retrieval/web/duckduckgo.py @@ -3,7 +3,7 @@ from __future__ import annotations import logging import urllib.request -from ddgs import DDGS +from open_webui.env import USE_SLIM from open_webui.retrieval.web.main import SearchResult, get_filtered_results log = logging.getLogger(__name__) @@ -26,6 +26,13 @@ def search_duckduckgo( Returns: list[SearchResult]: A list of search results """ + if USE_SLIM: + raise ValueError( + 'DDGS is unavailable in slim. Configure another web search provider in Admin Settings > Web Search.' + ) + + from ddgs import DDGS + # The ddgs library (primp-based) does not auto-detect proxy env vars. # Resolve via stdlib getproxies() — same pattern as the other loaders. env_proxies = urllib.request.getproxies() diff --git a/backend/open_webui/routers/retrieval.py b/backend/open_webui/routers/retrieval.py index e57ca656e1..55813341a2 100644 --- a/backend/open_webui/routers/retrieval.py +++ b/backend/open_webui/routers/retrieval.py @@ -951,6 +951,15 @@ async def update_rag_config(request: Request, form_data: ConfigForm, user=Depend # RAG settings config = await get_retrieval_config() if USE_SLIM: + if ( + form_data.web + and form_data.web.WEB_SEARCH_ENGINE == 'duckduckgo' + and config.WEB_SEARCH_ENGINE != 'duckduckgo' + ): + raise HTTPException( + 400, + 'DDGS is unavailable in slim. Configure another web search provider in Admin Settings > Web Search.', + ) if ( form_data.web and form_data.web.WEB_LOADER_ENGINE == 'playwright' diff --git a/backend/requirements-slim.txt b/backend/requirements-slim.txt index 4006798175..92e04118e5 100644 --- a/backend/requirements-slim.txt +++ b/backend/requirements-slim.txt @@ -74,8 +74,6 @@ rank-bm25==0.2.2 black==26.5.1 youtube-transcript-api==1.2.4 -ddgs==9.14.4 - azure-ai-documentintelligence==1.0.2 azure-identity==1.25.3 azure-search-documents==12.0.0 diff --git a/src/lib/components/admin/Settings/WebSearch.svelte b/src/lib/components/admin/Settings/WebSearch.svelte index 2a20f192f3..e77814f3a4 100644 --- a/src/lib/components/admin/Settings/WebSearch.svelte +++ b/src/lib/components/admin/Settings/WebSearch.svelte @@ -210,7 +210,7 @@ {#each webSearchEngines as engine} {#if engine === 'duckduckgo' || engine === 'ddgs'} - + {:else if engine === 'serphouse'} {:else}