feat(api): route the npc role to its own model

This commit is contained in:
2026-07-10 12:11:54 -05:00
parent 69729f7673
commit 6cd5003930
3 changed files with 18 additions and 0 deletions

View File

@@ -18,5 +18,9 @@ def narrator_model() -> str:
return os.environ.get("OLLAMA_NARRATOR_MODEL", "qwen3.5:latest")
def npc_model() -> str:
return os.environ.get("OLLAMA_NPC_MODEL", "qwen3.5:latest")
def call_log_path() -> str | None:
return os.environ.get("CALL_LOG_PATH") or None

View File

@@ -22,4 +22,10 @@ def for_role(role: str) -> RoleConfig:
options={"temperature": 0.8, "top_p": 0.9, "num_predict": 300},
think=False, # qwen3.x thinking OFF; harmless on non-thinking models
)
if role == "npc":
return RoleConfig(
model=config.npc_model(),
options={"temperature": 0.8, "top_p": 0.9, "num_predict": 320},
think=False,
)
raise KeyError(f"no routing for role: {role}")

View File

@@ -19,3 +19,11 @@ def test_env_overrides_model(monkeypatch):
def test_unknown_role_raises():
with pytest.raises(KeyError):
for_role("wizard")
def test_npc_role_routes_to_npc_model(monkeypatch):
monkeypatch.setenv("OLLAMA_NPC_MODEL", "some-npc-model")
cfg = for_role("npc")
assert cfg.model == "some-npc-model"
assert cfg.think is False
assert "num_predict" in cfg.options