mirror of
https://github.com/zhayujie/chatgpt-on-wechat.git
synced 2026-06-03 10:47:08 +08:00
feat(models): support ASR model selection in web console
This commit is contained in:
@@ -54,6 +54,46 @@ class TestModelsHandler(unittest.TestCase):
|
||||
write_file.assert_called_once_with(file_config)
|
||||
refresh_voice.assert_called_once()
|
||||
|
||||
def test_set_asr_empty_model_keeps_existing(self):
|
||||
# Switching provider with an empty model must not wipe a user's
|
||||
# hand-configured voice_to_text_model.
|
||||
from channel.web.web_channel import ModelsHandler
|
||||
|
||||
local_config = {"voice_to_text_model": "qwen3-asr-flash"}
|
||||
file_config = {"voice_to_text_model": "qwen3-asr-flash"}
|
||||
handler = ModelsHandler()
|
||||
|
||||
with patch("channel.web.web_channel.conf", return_value=local_config):
|
||||
with patch.object(ModelsHandler, "_read_file_config", return_value=file_config):
|
||||
with patch.object(ModelsHandler, "_write_file_config"):
|
||||
with patch.object(ModelsHandler, "_refresh_voice_routing"):
|
||||
result = json.loads(handler._handle_set_capability({
|
||||
"capability": "asr",
|
||||
"provider_id": "zhipu",
|
||||
"model": "",
|
||||
}))
|
||||
|
||||
self.assertEqual(result["status"], "success")
|
||||
self.assertEqual(local_config["voice_to_text"], "zhipu")
|
||||
# Existing model preserved, not overwritten with "".
|
||||
self.assertEqual(local_config["voice_to_text_model"], "qwen3-asr-flash")
|
||||
self.assertEqual(file_config["voice_to_text_model"], "qwen3-asr-flash")
|
||||
self.assertEqual(result["model"], "qwen3-asr-flash")
|
||||
|
||||
def test_asr_capability_exposes_provider_models(self):
|
||||
from channel.web.web_channel import ModelsHandler
|
||||
|
||||
cap = ModelsHandler._asr_capability({
|
||||
"voice_to_text": "dashscope",
|
||||
"voice_to_text_model": "qwen3-asr-flash",
|
||||
})
|
||||
|
||||
self.assertTrue(cap["editable"])
|
||||
self.assertEqual(cap["current_provider"], "dashscope")
|
||||
self.assertEqual(cap["current_model"], "qwen3-asr-flash")
|
||||
self.assertIn("provider_models", cap)
|
||||
self.assertIn("dashscope", cap["provider_models"])
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
unittest.main()
|
||||
|
||||
Reference in New Issue
Block a user