feat(provider): add kuaishou-wanqing endpoint with base URL presets and manual model input

This commit is contained in:
jxxghp
2026-05-08 15:16:29 +08:00
parent 14b366a648
commit e4c5a4f232
4 changed files with 103 additions and 8 deletions

View File

@@ -287,6 +287,61 @@ class LlmProviderRegistryTest(unittest.TestCase):
self.assertIsNone(provider.models_dev_provider_id)
self.assertFalse(provider.supports_model_refresh)
def test_builtin_provider_includes_kuaishou_wanqing_endpoint(self):
manager = LLMProviderManager()
provider = manager.get_provider("kuaishou-wanqing")
self.assertEqual(provider.name, "快手万擎")
self.assertEqual(provider.runtime, "openai_compatible")
self.assertEqual(
provider.default_base_url,
"https://wanqing.streamlakeapi.com/api/gateway/v1/endpoints",
)
self.assertEqual(
tuple((preset.id, preset.label, preset.value) for preset in provider.base_url_presets),
(
(
"kuaishou-wanqing-usage",
"按量计费",
"https://wanqing.streamlakeapi.com/api/gateway/v1/endpoints",
),
(
"kuaishou-wanqing-coding",
"Coding Plan",
"https://wanqing.streamlakeapi.com/api/gateway/coding/v1",
),
),
)
self.assertEqual(provider.model_list_strategy, "manual")
self.assertFalse(provider.supports_model_refresh)
def test_kuaishou_wanqing_coding_preset_resolves_runtime_base_url(self):
manager = LLMProviderManager()
runtime = asyncio.run(
manager.resolve_runtime(
provider_id="kuaishou-wanqing",
model="kat-coder-pro-v2",
api_key="sk-test",
base_url="https://wanqing.streamlakeapi.com/api/gateway/coding/v1",
base_url_preset_id="kuaishou-wanqing-coding",
)
)
self.assertEqual(runtime["runtime"], "openai_compatible")
self.assertEqual(
runtime["base_url"],
"https://wanqing.streamlakeapi.com/api/gateway/coding/v1",
)
def test_kuaishou_wanqing_models_are_manual_input(self):
manager = LLMProviderManager()
models = asyncio.run(manager.list_models(provider_id="kuaishou-wanqing"))
self.assertEqual(models, [])
def test_builtin_minimax_provider_merges_general_and_coding_presets(self):
manager = LLMProviderManager()

View File

@@ -185,7 +185,7 @@ class LocalSetupLlmProviderPromptTests(unittest.TestCase):
self.assertEqual(provider, "my-provider_01")
def test_fallback_provider_choices_include_baidu_and_jdcloud(self):
def test_fallback_provider_choices_include_baidu_jdcloud_and_wanqing(self):
module = load_local_setup_module()
self.assertEqual(
@@ -193,8 +193,12 @@ class LocalSetupLlmProviderPromptTests(unittest.TestCase):
"百度千帆",
)
self.assertEqual(module.LLM_PROVIDER_FALLBACK_CHOICES["jdcloud"], "京东云")
self.assertEqual(
module.LLM_PROVIDER_FALLBACK_CHOICES["kuaishou-wanqing"],
"快手万擎",
)
def test_local_setup_defaults_include_baidu_and_jdcloud_base_urls(self):
def test_local_setup_defaults_include_baidu_jdcloud_and_wanqing_base_urls(self):
module = load_local_setup_module()
self.assertEqual(
@@ -205,6 +209,14 @@ class LocalSetupLlmProviderPromptTests(unittest.TestCase):
module.LLM_PROVIDER_DEFAULTS["jdcloud"]["base_url"],
"https://modelservice.jdcloud.com/v1",
)
self.assertEqual(
module.LLM_PROVIDER_DEFAULTS["kuaishou-wanqing"]["base_url"],
"https://wanqing.streamlakeapi.com/api/gateway/v1/endpoints",
)
self.assertEqual(
module.LLM_PROVIDER_DEFAULTS["kuaishou-wanqing"]["base_url_preset"],
"kuaishou-wanqing-usage",
)
def test_collect_agent_config_prompts_for_duplicate_base_url_presets(self):
module = load_local_setup_module()