From 7ea1e9cbd0f39a6a7de67a01e97c47af8a8a3b72 Mon Sep 17 00:00:00 2001 From: Steve-Li-1998 <35399390+Steve-Li-1998@users.noreply.github.com> Date: Wed, 11 Mar 2026 21:34:24 +0100 Subject: [PATCH] fix: Prefer model-provided web search result count over admin default (#22577) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Prefer model-provided web search result count over admin default Update `search_web` to prioritize the model-provided `count` parameter before falling back to the admin-configured `WEB_SEARCH_RESULT_COUNT`, and finally defaulting to 5. Changes: - Set `count` default to `None` instead of `5`. - Adjust fallback order to: model-provided `count` → admin-configured value → `5`. - Update comment to reflect the new precedence logic. This ensures explicit model requests for result count are respected while preserving sensible defaults. * Enforce maximum web search result count from config Update `search_web` to cap the model-provided `count` parameter at the admin-configured `WEB_SEARCH_RESULT_COUNT` to prevent excessive result requests. Changes: - Set default `count` parameter to `5`. - Replace fallback logic with enforcement logic that limits `count` to the configured maximum. - Update comment to reflect that the result count is now capped to prevent abuse. This ensures web search requests cannot exceed the configured limit while maintaining a sensible default. --- backend/open_webui/tools/builtin.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/backend/open_webui/tools/builtin.py b/backend/open_webui/tools/builtin.py index b438759e10..594a7d24ac 100644 --- a/backend/open_webui/tools/builtin.py +++ b/backend/open_webui/tools/builtin.py @@ -168,8 +168,8 @@ async def search_web( engine = __request__.app.state.config.WEB_SEARCH_ENGINE user = UserModel(**__user__) if __user__ else None - # Use admin-configured result count if configured, falling back to model-provided count of provided, else default to 5 - count = __request__.app.state.config.WEB_SEARCH_RESULT_COUNT or count + # Enforce maximum result count from config to prevent abuse + count = count if count < __request__.app.state.config.WEB_SEARCH_RESULT_COUNT else __request__.app.state.config.WEB_SEARCH_RESULT_COUNT results = await asyncio.to_thread(_search_web, __request__, engine, query, user)