cgae-backend / cgae_engine /models_config.py
rb125
Deploy CGAE backend to HF Space
696c0f5
"""
CGAE Model Configurations
Maps all 13 available Azure AI Foundry models to their provider, endpoint,
and authentication settings. Uses the same env vars as the CDCT/DDFT/EECT frameworks.
Environment variables required:
AZURE_API_KEY - Azure API key (shared across all providers)
AZURE_OPENAI_API_ENDPOINT - Azure OpenAI endpoint (for gpt-5/5.1/5.2, o3, o4-mini)
DDFT_MODELS_ENDPOINT - Azure AI Foundry endpoint (for DeepSeek, Llama, Phi, Grok, etc.)
Deployment names match the exact Azure portal names provided by the user.
"""
# All 13 available models on Azure AI Foundry
AVAILABLE_MODELS = [
# --- Azure OpenAI (chat completions API) ---
# These use AZURE_OPENAI_API_ENDPOINT
{
"model_name": "gpt-5",
"deployment_name": "gpt-5",
"provider": "azure_openai",
"api_key_env_var": "AZURE_API_KEY",
"endpoint_env_var": "AZURE_OPENAI_API_ENDPOINT",
"api_version": "2025-03-01-preview",
"family": "OpenAI",
"tier_assignment": "contestant",
},
{
"model_name": "gpt-5.1",
"deployment_name": "gpt-5.1",
"provider": "azure_openai",
"api_key_env_var": "AZURE_API_KEY",
"endpoint_env_var": "AZURE_OPENAI_API_ENDPOINT",
"api_version": "2025-03-01-preview",
"family": "OpenAI",
"tier_assignment": "contestant",
},
{
"model_name": "gpt-5.2",
"deployment_name": "gpt-5.2",
"provider": "azure_openai",
"api_key_env_var": "AZURE_API_KEY",
"endpoint_env_var": "AZURE_OPENAI_API_ENDPOINT",
"api_version": "2025-03-01-preview",
"family": "OpenAI",
"tier_assignment": "jury",
},
{
"model_name": "o3",
"deployment_name": "o3",
"provider": "azure_openai",
"api_key_env_var": "AZURE_API_KEY",
"endpoint_env_var": "AZURE_OPENAI_API_ENDPOINT",
"api_version": "2025-01-01-preview",
"family": "OpenAI",
"tier_assignment": "contestant",
},
{
"model_name": "o4-mini",
"deployment_name": "o4-mini",
"provider": "azure_openai",
"api_key_env_var": "AZURE_API_KEY",
"endpoint_env_var": "AZURE_OPENAI_API_ENDPOINT",
"api_version": "2025-03-01-preview",
"family": "OpenAI",
"tier_assignment": "contestant",
},
# --- Azure AI Foundry (OpenAI-compatible /v1 API) ---
# These use DDFT_MODELS_ENDPOINT
{
"model_name": "DeepSeek-v3.1",
"deployment_name": "DeepSeek-v3.1",
"provider": "azure_ai",
"api_key_env_var": "AZURE_API_KEY",
"endpoint_env_var": "DDFT_MODELS_ENDPOINT",
"family": "DeepSeek",
"tier_assignment": "contestant",
},
{
"model_name": "DeepSeek-v3.2",
"deployment_name": "DeepSeek-v3.2",
"provider": "azure_ai",
"api_key_env_var": "AZURE_API_KEY",
"endpoint_env_var": "DDFT_MODELS_ENDPOINT",
"family": "DeepSeek",
"tier_assignment": "jury",
},
{
"model_name": "Llama-4-Maverick-17B-128E-Instruct-FP8",
"deployment_name": "Llama-4-Maverick-17B-128E-Instruct-FP8",
"provider": "azure_ai",
"api_key_env_var": "AZURE_API_KEY",
"endpoint_env_var": "DDFT_MODELS_ENDPOINT",
"family": "Meta",
"tier_assignment": "contestant",
},
{
"model_name": "Phi-4",
"deployment_name": "Phi-4",
"provider": "azure_ai",
"api_key_env_var": "AZURE_API_KEY",
"endpoint_env_var": "DDFT_MODELS_ENDPOINT",
"family": "Microsoft",
"tier_assignment": "contestant",
},
{
"model_name": "grok-4-fast-non-reasoning",
"deployment_name": "grok-4-fast-non-reasoning",
"provider": "azure_ai",
"api_key_env_var": "AZURE_API_KEY",
"endpoint_env_var": "DDFT_MODELS_ENDPOINT",
"family": "xAI",
"tier_assignment": "contestant",
},
{
"model_name": "mistral-medium-2505",
"deployment_name": "mistral-medium-2505",
"provider": "azure_ai",
"api_key_env_var": "AZURE_API_KEY",
"endpoint_env_var": "DDFT_MODELS_ENDPOINT",
"family": "Mistral",
"tier_assignment": "contestant",
},
{
"model_name": "gpt-oss-120b",
"deployment_name": "gpt-oss-120b",
"provider": "azure_ai",
"api_key_env_var": "AZURE_API_KEY",
"endpoint_env_var": "DDFT_MODELS_ENDPOINT",
"family": "OpenSource",
"tier_assignment": "contestant",
},
{
"model_name": "Kimi-K2.5",
"deployment_name": "Kimi-K2.5",
"provider": "azure_ai",
"api_key_env_var": "AZURE_API_KEY",
"endpoint_env_var": "DDFT_MODELS_ENDPOINT",
"family": "Moonshot",
"tier_assignment": "contestant",
},
]
# Models used as jury (for output verification)
JURY_MODELS = [
m for m in AVAILABLE_MODELS if m["tier_assignment"] == "jury"
]
# Models used as contestants (actual agents in the economy)
CONTESTANT_MODELS = [
m for m in AVAILABLE_MODELS if m["tier_assignment"] != "jury"
]
def get_model_config(model_name: str) -> dict:
"""Look up a model config by name."""
for m in AVAILABLE_MODELS:
if m["model_name"] == model_name:
return m
raise KeyError(f"Model '{model_name}' not found in AVAILABLE_MODELS")