mirror of
https://github.com/NousResearch/hermes-agent.git
synced 2026-05-02 02:01:47 +00:00
The Kimi gateway selects the correct temperature server-side based on the active mode (thinking on → 1.0, thinking off → 0.6). Client-side clamping is no longer needed and would conflict if the gateway changes its defaults. Removed: - _FIXED_TEMPERATURE_MODELS, _KIMI_INSTANT_MODELS, _KIMI_THINKING_MODELS, _KIMI_PUBLIC_API_OVERRIDES maps from auxiliary_client.py - All Kimi-specific branches in _fixed_temperature_for_model() — the function now always returns None (kept for future non-Kimi contracts) Callers already guard with 'if fixed_temperature is not None:' so the change is transparent — temperature is simply omitted from API calls, letting the Kimi gateway use its own defaults. Updated tests across 5 files to verify temperature is NOT forced.
61 lines
2.1 KiB
Python
61 lines
2.1 KiB
Python
from types import SimpleNamespace
|
|
from unittest.mock import MagicMock, patch
|
|
|
|
|
|
def test_run_task_kimi_preserves_default_temperature():
|
|
"""Kimi models should NOT have client-side temperature overrides.
|
|
|
|
The Kimi gateway selects the correct temperature server-side, so
|
|
mini_swe_runner should not inject a temperature key at all.
|
|
"""
|
|
with patch("openai.OpenAI") as mock_openai:
|
|
client = MagicMock()
|
|
client.chat.completions.create.return_value = SimpleNamespace(
|
|
choices=[SimpleNamespace(message=SimpleNamespace(content="done", tool_calls=[]))]
|
|
)
|
|
mock_openai.return_value = client
|
|
|
|
from mini_swe_runner import MiniSWERunner
|
|
|
|
runner = MiniSWERunner(
|
|
model="kimi-for-coding",
|
|
base_url="https://api.kimi.com/coding/v1",
|
|
api_key="test-key",
|
|
env_type="local",
|
|
max_iterations=1,
|
|
)
|
|
runner._create_env = MagicMock()
|
|
runner._cleanup_env = MagicMock()
|
|
|
|
result = runner.run_task("2+2")
|
|
|
|
assert result["completed"] is True
|
|
assert "temperature" not in client.chat.completions.create.call_args.kwargs
|
|
|
|
|
|
def test_run_task_public_moonshot_kimi_k2_5_preserves_default_temperature():
|
|
"""kimi-k2.5 on the public Moonshot API should not get a forced temperature."""
|
|
with patch("openai.OpenAI") as mock_openai:
|
|
client = MagicMock()
|
|
client.base_url = "https://api.moonshot.ai/v1"
|
|
client.chat.completions.create.return_value = SimpleNamespace(
|
|
choices=[SimpleNamespace(message=SimpleNamespace(content="done", tool_calls=[]))]
|
|
)
|
|
mock_openai.return_value = client
|
|
|
|
from mini_swe_runner import MiniSWERunner
|
|
|
|
runner = MiniSWERunner(
|
|
model="kimi-k2.5",
|
|
base_url="https://api.moonshot.ai/v1",
|
|
api_key="test-key",
|
|
env_type="local",
|
|
max_iterations=1,
|
|
)
|
|
runner._create_env = MagicMock()
|
|
runner._cleanup_env = MagicMock()
|
|
|
|
result = runner.run_task("2+2")
|
|
|
|
assert result["completed"] is True
|
|
assert "temperature" not in client.chat.completions.create.call_args.kwargs
|