mirror of
https://github.com/open-webui/open-webui.git
synced 2026-05-05 18:38:17 -05:00
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
This commit is contained in:
@@ -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)},
|
||||
|
||||
Reference in New Issue
Block a user