From 12abc57fa703760359726090dd5da36638a4b2e6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=AD=A6=E9=98=B3?= Date: Fri, 8 May 2026 11:59:46 +0800 Subject: [PATCH] Accept provider-prefixed model selection --- backend/api/server.py | 5 ++++- tests/test_gui_server.py | 10 ++++++++++ 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/backend/api/server.py b/backend/api/server.py index 642d0ae..8f3d3f4 100644 --- a/backend/api/server.py +++ b/backend/api/server.py @@ -524,7 +524,10 @@ class AgentState: with self._lock: config = self._config_for(account_id) if model is not None: - config = replace(config, model=_normalize_chat_model_name(model)) + normalized_model = _normalize_model_id(model) + if normalized_model is None: + raise ValueError('model must not be empty') + config = replace(config, model=normalized_model) if base_url is not None: config = replace(config, base_url=base_url) if api_key is not None: diff --git a/tests/test_gui_server.py b/tests/test_gui_server.py index 7db31d4..000f9e3 100644 --- a/tests/test_gui_server.py +++ b/tests/test_gui_server.py @@ -71,6 +71,16 @@ class GuiServerTests(unittest.TestCase): self.assertTrue(data['allow_shell']) self.assertEqual(data['model'], 'other-model') + def test_state_update_accepts_provider_prefixed_model(self) -> None: + with tempfile.TemporaryDirectory() as d: + client, _ = _build_client(Path(d)) + updated = client.post( + '/api/state', + json={'model': 'azure_openai/gpt-4o-mini'}, + ) + self.assertEqual(updated.status_code, 200) + self.assertEqual(updated.json()['model'], 'azure_openai/gpt-4o-mini') + def test_state_snapshot_can_scope_to_account(self) -> None: with tempfile.TemporaryDirectory() as d: client, _ = _build_client(Path(d))