fix: support max reasoning and custom model selection for 1.0.0

This commit is contained in:
chenmingxuan committed 2026-09-23 00:24:35 +08:00
1 parent e1185a5104
commit 2ec563c079
12 files changed
+119 -16

No files matched your search

@@ -125,16 +125,30 @@ def test_reasoning_retry_settings_roundtrip(isolated_settings):
assert parse_llm_config().operator.reasoning_effort == "default"
def test_responses_payload_has_reasoning_and_no_sdk_retry(monkeypatch):
def test_max_reasoning_and_custom_model_survive_reload(isolated_settings):
result = service.save_model_settings(
service.ModelSettingsUpdate(model="custom/model-v2", reasoning_effort="max")
)
assert result["model"] == "custom/model-v2"
assert result["reasoning_effort"] == "max"
assert dotenv_values(isolated_settings)["OPENAI_REASONING_EFFORT"] == "max"
reloaded = Settings(_env_file=isolated_settings)
assert reloaded.OPENAI_REASONING_EFFORT == "max"
assert reloaded.OPENAI_MODEL == "custom/model-v2"
assert parse_llm_config().operator.reasoning_effort == "max"
@pytest.mark.parametrize("effort", ["high", "max"])
def test_responses_payload_has_reasoning_and_no_sdk_retry(monkeypatch, effort):
from artemis.llm.router import ModelEndpoint, ModelFactory
from unittest.mock import Mock
factory = Mock()
monkeypatch.setattr("langchain_openai.ChatOpenAI", factory)
ModelFactory.create_model(
ModelEndpoint(api_key="test-only", reasoning_effort="high", max_retries=5)
ModelEndpoint(api_key="test-only", reasoning_effort=effort, max_retries=5)
)
assert factory.call_args.kwargs["reasoning_effort"] == "high"
assert factory.call_args.kwargs["reasoning_effort"] == effort
assert factory.call_args.kwargs["max_retries"] == 0
assert factory.call_args.kwargs["use_responses_api"] is True
ModelFactory.create_model(ModelEndpoint(api_key="test-only", reasoning_effort="default"))
+9
View File
@@ -85,6 +85,15 @@ async def test_text_and_image_use_responses_transport(transport_model):
assert result.usage_metadata["total_tokens"] == 13
@pytest.mark.asyncio
async def test_max_reasoning_is_sent_unchanged_to_responses(transport_model):
model, requests, _ = transport_model
model.reasoning_effort = "max"
await model.ainvoke([HumanMessage(content="Check")])
assert requests[0].url.path == "/v1/responses"
assert json.loads(requests[0].content)["reasoning"]["effort"] == "max"
@pytest.mark.asyncio
async def test_function_call_roundtrip_uses_call_id(transport_model):
model, requests, outputs = transport_model