mirror of
https://github.com/open-jarvis/OpenJarvis.git
synced 2026-07-28 14:07:55 +00:00
68 lines
1.9 KiB
Python
68 lines
1.9 KiB
Python
"""Tests for API server model selection."""
|
|
|
|
from __future__ import annotations
|
|
|
|
from openjarvis.cli.serve import _resolve_server_model
|
|
from openjarvis.core.config import JarvisConfig
|
|
|
|
|
|
class _FakeEngine:
|
|
def __init__(self, models: list[str]) -> None:
|
|
self._models = models
|
|
|
|
def list_models(self) -> list[str]:
|
|
return self._models
|
|
|
|
|
|
def test_server_model_falls_back_to_reachable_ollama_model() -> None:
|
|
cfg = JarvisConfig()
|
|
cfg.server.model = "mlx-community/Qwen2.5-7B-Instruct-4bit"
|
|
cfg.intelligence.default_model = "mlx-community/Qwen2.5-7B-Instruct-4bit"
|
|
cfg.intelligence.fallback_model = "qwen3.5:9b"
|
|
|
|
model = _resolve_server_model(
|
|
None,
|
|
config=cfg,
|
|
engine_name="multi",
|
|
engine=_FakeEngine(["qwen3.5:9b"]),
|
|
all_models={"multi": ["qwen3.5:9b"]},
|
|
)
|
|
|
|
assert model == "qwen3.5:9b"
|
|
|
|
|
|
def test_server_model_prefers_reachable_configured_model() -> None:
|
|
cfg = JarvisConfig()
|
|
cfg.server.model = "mlx-community/Qwen2.5-7B-Instruct-4bit"
|
|
cfg.intelligence.default_model = "qwen3.5:9b"
|
|
cfg.intelligence.fallback_model = "qwen3.5:9b"
|
|
|
|
model = _resolve_server_model(
|
|
None,
|
|
config=cfg,
|
|
engine_name="multi",
|
|
engine=_FakeEngine(
|
|
["mlx-community/Qwen2.5-7B-Instruct-4bit", "qwen3.5:9b"]
|
|
),
|
|
all_models={"multi": ["mlx-community/Qwen2.5-7B-Instruct-4bit"]},
|
|
)
|
|
|
|
assert model == "mlx-community/Qwen2.5-7B-Instruct-4bit"
|
|
|
|
|
|
def test_server_model_keeps_explicit_cli_model() -> None:
|
|
cfg = JarvisConfig()
|
|
cfg.server.model = "configured-model"
|
|
cfg.intelligence.fallback_model = "fallback-model"
|
|
|
|
model = _resolve_server_model(
|
|
"explicit-model",
|
|
config=cfg,
|
|
engine_name="multi",
|
|
engine=_FakeEngine(["fallback-model"]),
|
|
all_models={"multi": ["fallback-model"]},
|
|
)
|
|
|
|
assert model == "explicit-model"
|
|
|