diff --git a/backend/open_webui/utils/middleware.py b/backend/open_webui/utils/middleware.py index d397471dd9..06636eb6a1 100644 --- a/backend/open_webui/utils/middleware.py +++ b/backend/open_webui/utils/middleware.py @@ -1550,10 +1550,15 @@ async def process_chat_payload(request, form_data, user, metadata, model): if prompt is None: raise Exception("No user message found") + model_rag_template = ( + model.get("info", {}).get("params", {}).get("rag_template", "") + or request.app.state.config.RAG_TEMPLATE + ) + if context_string != "": form_data["messages"] = add_or_update_user_message( rag_template( - request.app.state.config.RAG_TEMPLATE, + model_rag_template, context_string, prompt, ), diff --git a/src/lib/components/workspace/Models/ModelEditor.svelte b/src/lib/components/workspace/Models/ModelEditor.svelte index a05896f8d8..678230462b 100644 --- a/src/lib/components/workspace/Models/ModelEditor.svelte +++ b/src/lib/components/workspace/Models/ModelEditor.svelte @@ -67,6 +67,7 @@ } let system = ''; + let rag_template = ''; let info = { id: '', base_model_id: null, @@ -78,12 +79,14 @@ tags: [] }, params: { - system: '' + system: '', + rag_template: '' } }; - let params = { - system: '' + let params: { + system: ''; + rag_template: ''; }; let knowledge = []; @@ -207,6 +210,7 @@ } info.params.system = system.trim() === '' ? null : system; + info.params.rag_template = rag_template.trim() === '' ? null : rag_template; info.params.stop = params.stop ? params.stop.split(',').filter((s) => s.trim()) : null; Object.keys(info.params).forEach((key) => { if (info.params[key] === '' || info.params[key] === null) { @@ -254,6 +258,7 @@ } system = model?.params?.system ?? ''; + rag_template = model?.params?.rag_template ?? ''; params = { ...params, ...model?.params }; params.stop = params?.stop @@ -644,6 +649,18 @@ +