List validated chat model providers

This commit is contained in:
武阳
2026-05-08 11:51:53 +08:00
parent 37fc367304
commit e4c3b973d4
4 changed files with 264 additions and 34 deletions
+48 -1
View File
@@ -3,6 +3,7 @@ from __future__ import annotations
import unittest
from src.openai_compat import (
OpenAICompatClient,
OpenAICompatError,
_build_response_format,
_join_url,
@@ -10,8 +11,9 @@ from src.openai_compat import (
_optional_int,
_parse_tool_arguments,
_parse_usage,
_temperature_for_model,
)
from src.agent_types import OutputSchemaConfig, UsageStats
from src.agent_types import ModelConfig, OutputSchemaConfig, UsageStats
class TestJoinUrl(unittest.TestCase):
@@ -163,5 +165,50 @@ class TestOptionalInt(unittest.TestCase):
self.assertEqual(_optional_int('abc'), 0)
class TestProviderTemperatureFloor(unittest.TestCase):
def test_minimax_temperature_is_clamped_to_provider_minimum(self):
self.assertEqual(_temperature_for_model('minimax/MiniMax-M2.5', 0.0), 0.01)
def test_wenxin_temperature_is_clamped_to_provider_minimum(self):
self.assertEqual(_temperature_for_model('wenxin/ernie-4.0-turbo-128k', 0.0), 0.1)
def test_regular_models_keep_configured_temperature(self):
self.assertEqual(_temperature_for_model('xiaomi/mimo-v2-flash', 0.0), 0.0)
def test_payload_uses_temperature_floor(self):
client = OpenAICompatClient(
ModelConfig(model='minimax/MiniMax-M2.5', temperature=0.0)
)
payload = client._build_payload( # noqa: SLF001 - verify payload compatibility.
messages=[{'role': 'user', 'content': 'hi'}],
tools=[],
stream=False,
output_schema=None,
)
self.assertEqual(payload['temperature'], 0.01)
def test_payload_omits_tool_choice_when_no_tools_are_supplied(self):
client = OpenAICompatClient(ModelConfig(model='azure_openai/gpt-4o-mini'))
payload = client._build_payload( # noqa: SLF001 - verify provider compatibility.
messages=[{'role': 'user', 'content': 'hi'}],
tools=[],
stream=False,
output_schema=None,
)
self.assertNotIn('tools', payload)
self.assertNotIn('tool_choice', payload)
def test_payload_includes_tool_choice_when_tools_are_supplied(self):
client = OpenAICompatClient(ModelConfig(model='azure_openai/gpt-4o-mini'))
payload = client._build_payload( # noqa: SLF001 - verify provider compatibility.
messages=[{'role': 'user', 'content': 'hi'}],
tools=[{'type': 'function', 'function': {'name': 'noop', 'parameters': {}}}],
stream=False,
output_schema=None,
)
self.assertIn('tools', payload)
self.assertEqual(payload['tool_choice'], 'auto')
if __name__ == '__main__':
unittest.main()