Merge pull request #15465 from kowyo/kowyo/fix-ollama-think

fix(ollama/chat): correctly map reasoning_effort to think in requests
This commit is contained in:
Krish Dholakia
2025-10-12 22:11:17 -07:00
committed by GitHub
3 changed files with 18 additions and 3 deletions
+8 -2
View File
@@ -184,9 +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:
optional_params["think"] = True
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:
@@ -281,6 +284,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 +348,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
@@ -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"] = True
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"
@@ -412,6 +415,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 +429,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
+3
View File
@@ -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,