From 8bd23b91459914eb7df5b5a66567d3544e0da168 Mon Sep 17 00:00:00 2001 From: Timothy Jaeryang Baek Date: Tue, 14 Apr 2026 16:47:43 -0500 Subject: [PATCH] refac --- backend/open_webui/routers/ollama.py | 2 ++ backend/open_webui/utils/payload.py | 5 +++++ 2 files changed, 7 insertions(+) diff --git a/backend/open_webui/routers/ollama.py b/backend/open_webui/routers/ollama.py index d06ceee6e..9272db1e6 100644 --- a/backend/open_webui/routers/ollama.py +++ b/backend/open_webui/routers/ollama.py @@ -1020,6 +1020,8 @@ class ChatMessage(BaseModel): tool_calls: Optional[list[dict]] = None images: Optional[list[str]] = None + model_config = ConfigDict(extra='allow') + @validator('content', pre=True) @classmethod def check_at_least_one_field(cls, field_value, values, **kwargs): diff --git a/backend/open_webui/utils/payload.py b/backend/open_webui/utils/payload.py index 440927caf..7cf4fe4de 100644 --- a/backend/open_webui/utils/payload.py +++ b/backend/open_webui/utils/payload.py @@ -204,6 +204,11 @@ def convert_messages_openai_to_ollama(messages: list[dict]) -> list[dict]: # Initialize the new message structure with the role new_message = {'role': message['role']} + # Preserve Ollama-native 'thinking' field (used by reasoning models, + # may be injected by filter inlet functions). + if 'thinking' in message: + new_message['thinking'] = message['thinking'] + content = message.get('content', []) tool_calls = message.get('tool_calls', None) tool_call_id = message.get('tool_call_id', None)