feat: add configurable AI model pool
This commit is contained in:
@@ -0,0 +1,59 @@
|
||||
import pytest
|
||||
|
||||
from app.integrations.model_router import ModelRouter
|
||||
|
||||
|
||||
def test_auto_route_requires_orchestrator_choice_with_multiple_candidates() -> None:
|
||||
pool = [
|
||||
{
|
||||
"id": "image-a",
|
||||
"name": "Image A",
|
||||
"model_id": "image-a-model",
|
||||
"category": "multimodal",
|
||||
"provider": "provider-a",
|
||||
"enabled": True,
|
||||
"capabilities": ["image_generation"],
|
||||
},
|
||||
{
|
||||
"id": "image-b",
|
||||
"name": "Image B",
|
||||
"model_id": "image-b-model",
|
||||
"category": "multimodal",
|
||||
"provider": "provider-b",
|
||||
"enabled": True,
|
||||
"capabilities": ["image_generation"],
|
||||
},
|
||||
]
|
||||
tests = {
|
||||
"model:image-a": {"ok": True},
|
||||
"model:image-b": {"ok": True},
|
||||
}
|
||||
router = ModelRouter({"model_pool": pool, "image_routing_mode": "auto"}, tests)
|
||||
|
||||
with pytest.raises(RuntimeError, match="总调度返回模型实例 ID"):
|
||||
router.choose("image")
|
||||
assert router.choose("image", "image-b")["model_id"] == "image-b-model"
|
||||
|
||||
|
||||
def test_manual_route_uses_the_user_selected_model() -> None:
|
||||
pool = [
|
||||
{
|
||||
"id": "spatial",
|
||||
"name": "Spatial",
|
||||
"model_id": "spatial-model",
|
||||
"category": "multimodal",
|
||||
"provider": "custom",
|
||||
"enabled": True,
|
||||
"capabilities": ["spatial_understanding"],
|
||||
}
|
||||
]
|
||||
router = ModelRouter(
|
||||
{
|
||||
"model_pool": pool,
|
||||
"spatial_routing_mode": "manual",
|
||||
"spatial_model_id": "spatial",
|
||||
},
|
||||
{"model:spatial": {"ok": True}},
|
||||
)
|
||||
|
||||
assert router.choose("spatial")["id"] == "spatial"
|
||||
Reference in New Issue
Block a user