From ce19b7120b7980051a13d95f0692049872231fd8 Mon Sep 17 00:00:00 2001 From: Mati Date: Tue, 11 Nov 2025 20:35:25 +0100 Subject: [PATCH] fix: Duplicate instructions in tool selection calling prompt (#19122) * Fix duplicated query prefix in user prompt for function calling * Fix duplicated last user message in prompt for function calling --- backend/open_webui/utils/middleware.py | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/backend/open_webui/utils/middleware.py b/backend/open_webui/utils/middleware.py index e5b84a3d79..7fd556dc57 100644 --- a/backend/open_webui/utils/middleware.py +++ b/backend/open_webui/utils/middleware.py @@ -302,19 +302,23 @@ async def chat_completion_tools_handler( def get_tools_function_calling_payload(messages, task_model_id, content): user_message = get_last_user_message(messages) + if user_message and messages and messages[-1]["role"] == "user": + # Remove the last user message to avoid duplication + messages = messages[:-1] + recent_messages = messages[-4:] if len(messages) > 4 else messages chat_history = "\n".join( f"{message['role'].upper()}: \"\"\"{get_content_from_message(message)}\"\"\"" for message in recent_messages ) - prompt = f"History:\n{chat_history}\nQuery: {user_message}" + prompt = f"History:\n{chat_history}\nQuery: {user_message}" if chat_history else f"Query: {user_message}" return { "model": task_model_id, "messages": [ {"role": "system", "content": content}, - {"role": "user", "content": f"Query: {prompt}"}, + {"role": "user", "content": prompt}, ], "stream": False, "metadata": {"task": str(TASKS.FUNCTION_CALLING)},