From daccf0713e3ecd6d24f003a87b5f8b3c61852958 Mon Sep 17 00:00:00 2001 From: Tim Baek Date: Fri, 9 Jan 2026 03:41:43 -0500 Subject: [PATCH] enh: file context model setting --- backend/open_webui/utils/middleware.py | 23 +++++++++++++------ .../workspace/Models/Capabilities.svelte | 15 +++++++++++- .../workspace/Models/ModelEditor.svelte | 1 + 3 files changed, 31 insertions(+), 8 deletions(-) diff --git a/backend/open_webui/utils/middleware.py b/backend/open_webui/utils/middleware.py index 0cfd03d9a..35a0e42b5 100644 --- a/backend/open_webui/utils/middleware.py +++ b/backend/open_webui/utils/middleware.py @@ -1854,13 +1854,22 @@ async def process_chat_payload(request, form_data, user, metadata, model): except Exception as e: log.exception(e) - try: - form_data, flags = await chat_completion_files_handler( - request, form_data, extra_params, user - ) - sources.extend(flags.get("sources", [])) - except Exception as e: - log.exception(e) + # Check if file context extraction is enabled for this model (default True) + file_context_enabled = ( + model.get("info", {}) + .get("meta", {}) + .get("capabilities", {}) + .get("file_context", True) + ) + + if file_context_enabled: + try: + form_data, flags = await chat_completion_files_handler( + request, form_data, extra_params, user + ) + sources.extend(flags.get("sources", [])) + except Exception as e: + log.exception(e) # If context is not empty, insert it into the messages if sources and prompt: diff --git a/src/lib/components/workspace/Models/Capabilities.svelte b/src/lib/components/workspace/Models/Capabilities.svelte index b5dc7a02c..57810c230 100644 --- a/src/lib/components/workspace/Models/Capabilities.svelte +++ b/src/lib/components/workspace/Models/Capabilities.svelte @@ -15,6 +15,10 @@ label: $i18n.t('File Upload'), description: $i18n.t('Model accepts file inputs') }, + file_context: { + label: $i18n.t('File Context'), + description: $i18n.t('Inject file content into conversation context') + }, web_search: { label: $i18n.t('Web Search'), description: $i18n.t('Model can search the web for information') @@ -50,6 +54,7 @@ }; export let capabilities: { + file_context?: boolean; vision?: boolean; file_upload?: boolean; web_search?: boolean; @@ -60,6 +65,14 @@ status_updates?: boolean; builtin_tools?: boolean; } = {}; + + // Hide file_context when file_upload is disabled + $: visibleCapabilities = Object.keys(capabilityLabels).filter((cap) => { + if (cap === 'file_context' && !capabilities.file_upload) { + return false; + } + return true; + });
@@ -67,7 +80,7 @@
{$i18n.t('Capabilities')}
- {#each Object.keys(capabilityLabels) as capability} + {#each visibleCapabilities as capability}