mirror of
https://github.com/BerriAI/litellm.git
synced 2026-10-09 03:18:44 +00:00
fix(ollama): unwrap any Mapping reasoning_effort, not only dict
responses_api_bridge_check accepts Mapping[str, object], so a read-only mapping reached the same set membership check and raised the same TypeError
This commit is contained in:
parent
d15aa0c89b
commit
da7ec892af
4 changed files with 11 additions and 5 deletions
|
|
@ -171,7 +171,7 @@ class OllamaChatConfig(BaseConfig):
|
|||
if value.get("json_schema") and value["json_schema"].get("schema"):
|
||||
optional_params["format"] = value["json_schema"]["schema"]
|
||||
if param == "reasoning_effort" and value is not None:
|
||||
effort: Final = value.get("effort") if isinstance(value, dict) else value
|
||||
effort: Final = value.get("effort") if isinstance(value, Mapping) else value
|
||||
if effort is not None:
|
||||
if model.startswith("gpt-oss"):
|
||||
optional_params["think"] = effort
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
import json
|
||||
import time
|
||||
from collections.abc import AsyncIterator, Iterator
|
||||
from collections.abc import AsyncIterator, Iterator, Mapping
|
||||
from typing import TYPE_CHECKING, Any, Final
|
||||
|
||||
from httpx._models import Headers, Response
|
||||
|
|
@ -215,7 +215,7 @@ class OllamaConfig(BaseConfig):
|
|||
elif param == "stop":
|
||||
optional_params["stop"] = value
|
||||
elif param == "reasoning_effort" and value is not None:
|
||||
effort: Final = value.get("effort") if isinstance(value, dict) else value
|
||||
effort: Final = value.get("effort") if isinstance(value, Mapping) else value
|
||||
if effort is not None:
|
||||
if model.startswith("gpt-oss"):
|
||||
optional_params["think"] = effort
|
||||
|
|
|
|||
|
|
@ -1,6 +1,8 @@
|
|||
import inspect
|
||||
import os
|
||||
import sys
|
||||
from collections.abc import Mapping
|
||||
from types import MappingProxyType
|
||||
from typing import Final, cast
|
||||
|
||||
import pytest
|
||||
|
|
@ -1000,11 +1002,12 @@ class TestOllamaChatReasoningEffort:
|
|||
("none", False),
|
||||
({"effort": "medium"}, True),
|
||||
({"effort": "medium", "summary": "auto"}, True),
|
||||
(MappingProxyType({"effort": "medium", "summary": "auto"}), True),
|
||||
({"effort": "none", "summary": "detailed"}, False),
|
||||
],
|
||||
)
|
||||
def test_reasoning_effort_string_or_dict_maps_to_think(
|
||||
self, reasoning_effort: str | dict[str, str], expected_think: bool
|
||||
self, reasoning_effort: str | Mapping[str, str], expected_think: bool
|
||||
) -> None:
|
||||
optional_params: Final = get_optional_params(
|
||||
model="ollama_chat/qwen3:8b",
|
||||
|
|
|
|||
|
|
@ -2,6 +2,8 @@ import base64
|
|||
import io
|
||||
import json
|
||||
import sys
|
||||
from collections.abc import Mapping
|
||||
from types import MappingProxyType
|
||||
from typing import Final
|
||||
from litellm._uuid import uuid
|
||||
from unittest.mock import MagicMock, patch
|
||||
|
|
@ -784,11 +786,12 @@ class TestOllamaConfigReasoningEffort:
|
|||
[
|
||||
("medium", True),
|
||||
({"effort": "medium", "summary": "auto"}, True),
|
||||
(MappingProxyType({"effort": "medium", "summary": "auto"}), True),
|
||||
({"effort": "none"}, False),
|
||||
],
|
||||
)
|
||||
def test_reasoning_effort_string_or_dict_maps_to_think(
|
||||
self, reasoning_effort: str | dict[str, str], expected_think: bool
|
||||
self, reasoning_effort: str | Mapping[str, str], expected_think: bool
|
||||
) -> None:
|
||||
optional_params: Final = OllamaConfig().map_openai_params(
|
||||
non_default_params={"reasoning_effort": reasoning_effort},
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue