| """Tests for the current writing-model registry and legacy migrations.""" |
|
|
| from unittest.mock import Mock, patch |
|
|
| import pytest |
|
|
| from services.llm_client import _call_provider, resolve_premium_model |
|
|
|
|
| @pytest.mark.parametrize( |
| ("selector", "expected"), |
| [ |
| ("gpt-oss-120b", "openai/gpt-oss-120b"), |
| ("gpt-oss-20b", "openai/gpt-oss-20b"), |
| ("compound", "groq/compound"), |
| ("compound-mini", "groq/compound-mini"), |
| ("qwen-3.6-27b", "qwen/qwen3.6-27b"), |
| ("gpt-4o", "openai/gpt-oss-120b"), |
| ("gpt-4o-mini", "openai/gpt-oss-20b"), |
| ("Meta-Llama-3.1-405B-Instruct", "openai/gpt-oss-120b"), |
| ], |
| ) |
| def test_resolve_premium_model(selector, expected): |
| assert resolve_premium_model(selector) == expected |
|
|
|
|
| def test_resolve_premium_model_rejects_arbitrary_provider_ids(): |
| with pytest.raises(ValueError, match="Unsupported writing model"): |
| resolve_premium_model("unknown/provider-model") |
|
|
|
|
| def test_gpt_oss_requests_low_reasoning_for_fast_writing(): |
| response = Mock() |
| response.raise_for_status.return_value = None |
| response.json.return_value = {"choices": [{"message": {"content": "Ready"}}]} |
|
|
| with patch("services.llm_client.httpx.post", return_value=response) as post: |
| result = _call_provider( |
| url="https://provider.test/chat", |
| api_key="secret", |
| model="openai/gpt-oss-20b", |
| messages=[{"role": "user", "content": "Continue this draft"}], |
| temperature=0.7, |
| max_tokens=1024, |
| timeout=30.0, |
| ) |
|
|
| assert result == "Ready" |
| assert post.call_args.kwargs["json"]["reasoning_effort"] == "low" |
|
|