diff --git a/conf/model_providers.yaml b/conf/model_providers.yaml index ba3f0ea48..58bb2e7cc 100644 --- a/conf/model_providers.yaml +++ b/conf/model_providers.yaml @@ -84,6 +84,7 @@ chat: endpoint_url: "/v1/models" default_base: "http://host.docker.internal:1234" kwargs: + a0_api_mode: chat api_base: "http://host.docker.internal:1234/v1" api_key: "lm-studio" llama_cpp: @@ -93,6 +94,7 @@ chat: endpoint_url: "/v1/models" default_base: "http://host.docker.internal:8080" kwargs: + a0_api_mode: chat api_base: "http://host.docker.internal:8080/v1" api_key: "llama-cpp" mistral: @@ -120,6 +122,7 @@ chat: format: "ollama" default_base: "http://host.docker.internal:11434" kwargs: + a0_api_mode: chat api_base: "http://host.docker.internal:11434" omlx: name: oMLX @@ -128,6 +131,7 @@ chat: endpoint_url: "/v1/models" default_base: "http://host.docker.internal:8000" kwargs: + a0_api_mode: chat api_base: "http://host.docker.internal:8000/v1" api_key: "omlx" ollama_cloud: @@ -136,6 +140,7 @@ chat: models_list: endpoint_url: "/models" kwargs: + a0_api_mode: chat api_base: https://ollama.com/v1 openai: name: OpenAI @@ -184,6 +189,7 @@ chat: endpoint_url: "/v1/models" default_base: "http://host.docker.internal:8000" kwargs: + a0_api_mode: chat api_base: "http://host.docker.internal:8000/v1" api_key: "vllm" xai: @@ -208,6 +214,8 @@ chat: other: name: Other OpenAI compatible litellm_provider: openai + kwargs: + a0_api_mode: chat embedding: huggingface: diff --git a/tests/test_model_config_api_keys.py b/tests/test_model_config_api_keys.py index e1f62d2f0..a76c1cd0d 100644 --- a/tests/test_model_config_api_keys.py +++ b/tests/test_model_config_api_keys.py @@ -265,6 +265,7 @@ def test_ollama_cloud_provider_config_requires_key_and_base_url(): ollama_cloud = provider_config["chat"]["ollama_cloud"] assert ollama_cloud["name"] == "Ollama Cloud" + assert ollama_cloud["kwargs"]["a0_api_mode"] == "chat" assert ollama_cloud["kwargs"]["api_base"] == "https://ollama.com/v1" assert ollama_cloud["models_list"]["endpoint_url"] == "/models" assert "api_key_mode" not in ollama_cloud @@ -298,6 +299,36 @@ def test_direct_venice_chat_provider_defaults_to_chat_completions(monkeypatch): assert custom.kwargs["a0_api_mode"] == "responses" +def test_local_chat_providers_default_to_chat_completions(): + import yaml + + provider_path = PROJECT_ROOT / "conf/model_providers.yaml" + provider_config = yaml.safe_load(provider_path.read_text(encoding="utf-8")) + + chat_completions_default_providers = ( + "lm_studio", + "llama_cpp", + "ollama", + "ollama_cloud", + "omlx", + "other", + "vllm", + ) + local_embedding_providers = ( + "lm_studio", + "llama_cpp", + "ollama", + "omlx", + "vllm", + ) + + for provider in chat_completions_default_providers: + assert provider_config["chat"][provider]["kwargs"]["a0_api_mode"] == "chat" + + for provider in local_embedding_providers: + assert "a0_api_mode" not in provider_config["embedding"][provider]["kwargs"] + + def test_missing_api_key_banner_does_not_include_auto_modal_metadata(monkeypatch): from plugins._model_config.helpers import model_config