From 9810c05a9962690300da742595714ae246598f25 Mon Sep 17 00:00:00 2001 From: Kowyo Date: Tue, 30 Sep 2025 04:21:36 +0000 Subject: [PATCH 1/5] fix(ollama/chat): 'think' param handling --- litellm/llms/ollama/chat/transformation.py | 3 +++ litellm/llms/ollama/completion/transformation.py | 3 +++ 2 files changed, 6 insertions(+) diff --git a/litellm/llms/ollama/chat/transformation.py b/litellm/llms/ollama/chat/transformation.py index 3b755e7933..dfd53a5e2b 100644 --- a/litellm/llms/ollama/chat/transformation.py +++ b/litellm/llms/ollama/chat/transformation.py @@ -281,6 +281,7 @@ class OllamaChatConfig(BaseConfig): stream = optional_params.pop("stream", False) format = optional_params.pop("format", None) keep_alive = optional_params.pop("keep_alive", None) + think = optional_params.pop("think", None) function_name = optional_params.pop("function_name", None) litellm_params["function_name"] = function_name tools = optional_params.pop("tools", None) @@ -344,6 +345,8 @@ class OllamaChatConfig(BaseConfig): data["tools"] = tools if keep_alive is not None: data["keep_alive"] = keep_alive + if think is not None: + data["think"] = think return data diff --git a/litellm/llms/ollama/completion/transformation.py b/litellm/llms/ollama/completion/transformation.py index 981a987ec9..662affcb27 100644 --- a/litellm/llms/ollama/completion/transformation.py +++ b/litellm/llms/ollama/completion/transformation.py @@ -412,6 +412,7 @@ class OllamaConfig(BaseConfig): stream = optional_params.pop("stream", False) format = optional_params.pop("format", None) images = optional_params.pop("images", None) + think = optional_params.pop("think", None) data = { "model": model, "prompt": ollama_prompt, @@ -425,6 +426,8 @@ class OllamaConfig(BaseConfig): data["images"] = [ _convert_image(convert_to_ollama_image(image)) for image in images ] + if think is not None: + data["think"] = think return data From eecb2ba77a4c7a82fa2cf128a98d9dbd1f8c97b7 Mon Sep 17 00:00:00 2001 From: Kowyo Date: Tue, 30 Sep 2025 12:46:22 +0000 Subject: [PATCH 2/5] fix: add 'think' parameter handling in ollama_chat.py --- litellm/llms/ollama_chat.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/litellm/llms/ollama_chat.py b/litellm/llms/ollama_chat.py index 082312d28f..e186636de9 100644 --- a/litellm/llms/ollama_chat.py +++ b/litellm/llms/ollama_chat.py @@ -59,6 +59,7 @@ def get_ollama_response( # noqa: PLR0915 stream = optional_params.pop("stream", False) format = optional_params.pop("format", None) keep_alive = optional_params.pop("keep_alive", None) + think = optional_params.pop("think", None) function_name = optional_params.pop("function_name", None) tools = optional_params.pop("tools", None) @@ -98,6 +99,8 @@ def get_ollama_response( # noqa: PLR0915 data["tools"] = tools if keep_alive is not None: data["keep_alive"] = keep_alive + if think is not None: + data["think"] = think ## LOGGING logging_obj.pre_call( input=None, From bb3829b69721fc13cf7a90caf0a2e24c0ca3179f Mon Sep 17 00:00:00 2001 From: Kowyo Date: Sat, 4 Oct 2025 02:50:00 +0000 Subject: [PATCH 3/5] fix: update 'think' parameter assignment to use provided value in transformation.py --- litellm/llms/ollama/chat/transformation.py | 2 +- litellm/llms/ollama/completion/transformation.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/litellm/llms/ollama/chat/transformation.py b/litellm/llms/ollama/chat/transformation.py index dfd53a5e2b..c2c5a366ec 100644 --- a/litellm/llms/ollama/chat/transformation.py +++ b/litellm/llms/ollama/chat/transformation.py @@ -186,7 +186,7 @@ class OllamaChatConfig(BaseConfig): optional_params["format"] = value["json_schema"]["schema"] ### FUNCTION CALLING LOGIC ### if param == "reasoning_effort" and value is not None: - optional_params["think"] = True + optional_params["think"] = value if param == "tools": ## CHECK IF MODEL SUPPORTS TOOL CALLING ## try: diff --git a/litellm/llms/ollama/completion/transformation.py b/litellm/llms/ollama/completion/transformation.py index 662affcb27..dd0280a00b 100644 --- a/litellm/llms/ollama/completion/transformation.py +++ b/litellm/llms/ollama/completion/transformation.py @@ -180,7 +180,7 @@ class OllamaConfig(BaseConfig): elif param == "stop": optional_params["stop"] = value elif param == "reasoning_effort" and value is not None: - optional_params["think"] = True + optional_params["think"] = value elif param == "response_format" and isinstance(value, dict): if value["type"] == "json_object": optional_params["format"] = "json" From 619ab42c9384adcc5a4731667c8125f9623203a0 Mon Sep 17 00:00:00 2001 From: kowyo Date: Sun, 5 Oct 2025 12:16:00 +0800 Subject: [PATCH 4/5] fix: only use think level for gpt-oss model --- litellm/llms/ollama/chat/transformation.py | 5 ++++- litellm/llms/ollama/completion/transformation.py | 5 ++++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/litellm/llms/ollama/chat/transformation.py b/litellm/llms/ollama/chat/transformation.py index c2c5a366ec..e78e9920bb 100644 --- a/litellm/llms/ollama/chat/transformation.py +++ b/litellm/llms/ollama/chat/transformation.py @@ -186,7 +186,10 @@ class OllamaChatConfig(BaseConfig): optional_params["format"] = value["json_schema"]["schema"] ### FUNCTION CALLING LOGIC ### if param == "reasoning_effort" and value is not None: - optional_params["think"] = value + if model.startswith("gpt-oss"): + optional_params["think"] = value + else: + optional_params["think"] = True if param == "tools": ## CHECK IF MODEL SUPPORTS TOOL CALLING ## try: diff --git a/litellm/llms/ollama/completion/transformation.py b/litellm/llms/ollama/completion/transformation.py index dd0280a00b..b476e5c8a6 100644 --- a/litellm/llms/ollama/completion/transformation.py +++ b/litellm/llms/ollama/completion/transformation.py @@ -180,7 +180,10 @@ class OllamaConfig(BaseConfig): elif param == "stop": optional_params["stop"] = value elif param == "reasoning_effort" and value is not None: - optional_params["think"] = value + if model.startswith("gpt-oss"): + optional_params["think"] = value + else: + optional_params["think"] = True elif param == "response_format" and isinstance(value, dict): if value["type"] == "json_object": optional_params["format"] = "json" From d9851d2598f50f2bdd9ee181dfd06e65a6819a01 Mon Sep 17 00:00:00 2001 From: kowyo Date: Sun, 5 Oct 2025 12:17:08 +0800 Subject: [PATCH 5/5] fix comment --- litellm/llms/ollama/chat/transformation.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/litellm/llms/ollama/chat/transformation.py b/litellm/llms/ollama/chat/transformation.py index e78e9920bb..b740eb122f 100644 --- a/litellm/llms/ollama/chat/transformation.py +++ b/litellm/llms/ollama/chat/transformation.py @@ -184,12 +184,12 @@ class OllamaChatConfig(BaseConfig): ): if value.get("json_schema") and value["json_schema"].get("schema"): optional_params["format"] = value["json_schema"]["schema"] - ### FUNCTION CALLING LOGIC ### if param == "reasoning_effort" and value is not None: if model.startswith("gpt-oss"): optional_params["think"] = value else: optional_params["think"] = True + ### FUNCTION CALLING LOGIC ### if param == "tools": ## CHECK IF MODEL SUPPORTS TOOL CALLING ## try: