From 293bd14051c136c8404239c04284d5ac5a1c3774 Mon Sep 17 00:00:00 2001 From: Adil Hafeez Date: Tue, 8 Jul 2025 16:13:56 -0700 Subject: [PATCH] use provider_id/model_id for model --- arch/arch_config_schema.yaml | 16 ---------- arch/tools/cli/config_generator.py | 30 +++++++++++++++++-- demos/use_cases/llm_routing/arch_config.yaml | 24 +++++---------- .../preference_based_routing/arch_config.yaml | 16 ++++------ 4 files changed, 41 insertions(+), 45 deletions(-) diff --git a/arch/arch_config_schema.yaml b/arch/arch_config_schema.yaml index 45f4d1cf..411e189f 100644 --- a/arch/arch_config_schema.yaml +++ b/arch/arch_config_schema.yaml @@ -66,21 +66,6 @@ properties: properties: name: type: string - # provider field is deprecated, use provider_interface instead - provider: - type: string - enum: - - openai - provider_interface: - type: string - enum: - - arch - - claude - - deepseek - - groq - - mistral - - openai - - gemini access_key: type: string model: @@ -104,7 +89,6 @@ properties: additionalProperties: false required: - model - - provider_interface overrides: type: object properties: diff --git a/arch/tools/cli/config_generator.py b/arch/tools/cli/config_generator.py index cc45ff21..6dea940b 100644 --- a/arch/tools/cli/config_generator.py +++ b/arch/tools/cli/config_generator.py @@ -19,6 +19,16 @@ ARCH_CONFIG_SCHEMA_FILE = os.getenv( "ARCH_CONFIG_SCHEMA_FILE", "arch_config_schema.yaml" ) +SUPPORTED_PROVIDERS = [ + "arch", + "claude", + "deepseek", + "groq", + "mistral", + "openai", + "gemini", +] + def get_endpoint_and_port(endpoint, protocol): endpoint_tokens = endpoint.split(":") @@ -92,10 +102,24 @@ def validate_and_render_schema(): raise Exception( f"Duplicate llm_provider name {llm_provider.get('name')}, please provide unique name for each llm_provider" ) + + model_name = llm_provider.get("model") if llm_provider.get("name") is None: - provider_interface = llm_provider.get("provider_interface", "unknown") - model_name = llm_provider.get("model", "unknown") - llm_provider["name"] = f"{provider_interface}/{model_name}" + llm_provider["name"] = model_name + + model_name_tokens = model_name.split("/") + if len(model_name_tokens) < 2: + raise Exception( + f"Invalid model name {model_name}. Please provide model name in the format /." + ) + provider = model_name_tokens[0] + model_id = "/".join(model_name_tokens[1:]) + if provider not in SUPPORTED_PROVIDERS: + raise Exception( + f"Unsupported provider {provider} for model {model_name}. Supported providers are: {', '.join(SUPPORTED_PROVIDERS)}" + ) + + llm_provider["provider_interface"] = provider llm_provider_name_set.add(llm_provider.get("name")) provider = None if llm_provider.get("provider") and llm_provider.get("provider_interface"): diff --git a/demos/use_cases/llm_routing/arch_config.yaml b/demos/use_cases/llm_routing/arch_config.yaml index 060eb360..b49cbb8d 100644 --- a/demos/use_cases/llm_routing/arch_config.yaml +++ b/demos/use_cases/llm_routing/arch_config.yaml @@ -10,37 +10,29 @@ listeners: llm_providers: - access_key: $OPENAI_API_KEY - provider_interface: openai - model: gpt-4o-mini + model: openai/gpt-4o-mini - access_key: $OPENAI_API_KEY - provider_interface: openai - model: gpt-4o + model: openai/gpt-4o default: true - access_key: $MISTRAL_API_KEY - provider_interface: mistral - model: ministral-3b-latest + model: mistral/ministral-3b-latest - access_key: $ANTHROPIC_API_KEY - provider_interface: claude - model: claude-3-7-sonnet-latest + model: claude/claude-3-7-sonnet-latest - access_key: $ANTHROPIC_API_KEY - provider_interface: claude - model: claude-sonnet-4-0 + model: claude/claude-sonnet-4-0 - access_key: $DEEPSEEK_API_KEY - provider_interface: deepseek - model: deepseek-reasoner + model: deepseek/deepseek-reasoner - access_key: $GROQ_API_KEY - provider_interface: groq - model: llama-3.1-8b-instant + model: groq/llama-3.1-8b-instant - access_key: $GEMINI_API_KEY - provider_interface: gemini - model: gemini-1.5-pro-latest + model: gemini/gemini-1.5-pro-latest tracing: random_sampling: 100 diff --git a/demos/use_cases/preference_based_routing/arch_config.yaml b/demos/use_cases/preference_based_routing/arch_config.yaml index 1f8098bb..c1047206 100644 --- a/demos/use_cases/preference_based_routing/arch_config.yaml +++ b/demos/use_cases/preference_based_routing/arch_config.yaml @@ -9,25 +9,21 @@ listeners: llm_providers: - - provider_interface: openai - access_key: $OPENAI_API_KEY - model: gpt-4o-mini + - access_key: $OPENAI_API_KEY + model: openai/gpt-4o-mini - - provider_interface: openai - access_key: $OPENAI_API_KEY - model: gpt-4.1 + - access_key: $OPENAI_API_KEY + model: openai/gpt-4.1 default: true - name: code_generation access_key: $OPENAI_API_KEY - provider_interface: openai - model: gpt-4.1 + model: openai/gpt-4.1 usage: generating new code snippets, functions, or boilerplate based on user prompts or requirements - name: code_understanding - provider_interface: openai access_key: $OPENAI_API_KEY - model: gpt-4o-mini + model: openai/gpt-4o-mini usage: understand and explain existing code snippets, functions, or libraries tracing: