test: split llm-core temperature tests (#4935)

This commit is contained in:
Alexandre Teixeira
2026-06-27 21:02:41 +01:00
committed by GitHub
parent 70d806019b
commit 2497160fd4
3 changed files with 134 additions and 85 deletions
+100
View File
@@ -0,0 +1,100 @@
"""Regression tests: Moonshot/Kimi temperature detection and payload behavior.
Moonshot kimi-k2.5+ models reject custom temperature values; the payload
builder must detect the Moonshot provider and omit temperature for the affected
model family. Self-hosted Kimi deployments (non-Moonshot URL) must keep the
caller-specified temperature unchanged.
"""
import httpx
import pytest
from src import llm_core
@pytest.mark.parametrize(
"model",
[
"kimi-k2.5",
"kimi-k2.6",
"moonshot/kimi-k2.6",
"kimi-k2.6-preview",
],
)
def test_moonshot_k2_5_plus_uses_fixed_temperature(model):
assert llm_core._moonshot_rejects_custom_temperature("moonshot", model)
@pytest.mark.parametrize(
"provider,model",
[
("openai", "kimi-k2.6"),
("moonshot", "kimi-k2-0905-preview"),
("moonshot", "kimi-k2-thinking"),
("moonshot", "kimi-k2.50"),
("moonshot", None),
],
)
def test_other_models_keep_temperature(provider, model):
assert not llm_core._moonshot_rejects_custom_temperature(provider, model)
@pytest.mark.parametrize(
"url",
[
"https://api.moonshot.ai/v1/chat/completions",
"https://api.moonshot.cn/v1/chat/completions",
],
)
def test_moonshot_provider_detection(url):
assert llm_core._detect_provider(url) == "moonshot"
def _capture_openai_payload(
monkeypatch,
model,
temperature,
url="https://api.openai.com/v1/chat/completions",
):
"""Run a synchronous OpenAI-compatible call and return the posted JSON body."""
llm_core._response_cache.clear()
seen = {}
def fake_post(url, headers=None, json=None, timeout=None):
seen["json"] = json
request = httpx.Request("POST", url)
return httpx.Response(
200,
request=request,
json={"choices": [{"message": {"content": "OK"}}]},
)
monkeypatch.setattr(llm_core.httpx, "post", fake_post)
result = llm_core.llm_call(
url,
model,
[{"role": "user", "content": "Say OK"}],
temperature=temperature,
max_tokens=5,
)
assert result == "OK"
return seen["json"]
def test_moonshot_k2_6_payload_omits_temperature(monkeypatch):
payload = _capture_openai_payload(
monkeypatch,
"kimi-k2.6",
0.7,
url="https://api.moonshot.ai/v1/chat/completions",
)
assert "temperature" not in payload
def test_self_hosted_kimi_k2_6_payload_keeps_temperature(monkeypatch):
payload = _capture_openai_payload(
monkeypatch,
"kimi-k2.6",
0.7,
url="http://localhost:8000/v1/chat/completions",
)
assert payload["temperature"] == 0.7