core/config+cli: empty models are bad; prompt model on provider switch

Reject providers with no models into bad_providers and warn with reasons
on chat/providers. When /provider changes and the current model is not
listed, prompt for a new model (keep it when still supported).
This commit is contained in:
2026-07-15 14:17:34 +08:00
parent 64d288a9b1
commit 553d491cbc
7 changed files with 155 additions and 10 deletions
+16 -2
View File
@@ -52,9 +52,23 @@ def test_select_provider_interactive_choose() -> None:
from tests.test_prompting import ScriptedBackend
providers = {
"a": OpenAIProvider(access_key_or_token="sk"),
"b": OpenAICompatibleProvider(access_key_or_token="sk", url="https://x/v1"),
"a": OpenAIProvider(access_key_or_token="sk", models={"m": ModelConfig()}),
"b": OpenAICompatibleProvider(
access_key_or_token="sk",
url="https://x/v1",
models={"m": ModelConfig()},
),
}
with temporary_backend(ScriptedBackend(["2"])):
name, _ = select_provider(providers)
assert name == "b"
def test_select_model_when_preferred_missing_raises() -> None:
provider = OpenAICompatibleProvider(
access_key_or_token="sk",
url="https://x/v1",
models={"m1": ModelConfig()},
)
with pytest.raises(Exception, match="unknown model"):
_ = select_model(provider, preferred="nope")