PIPS-demo / src /pips /model_registry.py
steinad's picture
Increase max tokens and add gpt-5
1438f9e
"""
Model registry for PIPS - centralized model management.
This module provides a pluggable model registry that makes it easy to add
new models from different providers without modifying the core codebase.
"""
from typing import Dict, Any, Optional
# Internal registry storage
_registry: Dict[str, Dict[str, Any]] = {}
def register_model(name: str, provider: str, display: str = "", **config):
"""
Register a new model in the registry.
Args:
name: Unique model identifier
provider: Provider name (openai, google, anthropic)
display: Human-readable display name
**config: Additional configuration parameters
"""
_registry[name] = {
"provider": provider,
"display": display or name,
**config
}
def list_models() -> Dict[str, Dict[str, Any]]:
"""
Get all registered models.
Returns:
Dictionary mapping model names to their configuration
"""
return _registry.copy()
def get_model_config(name: str) -> Optional[Dict[str, Any]]:
"""
Get configuration for a specific model.
Args:
name: Model identifier
Returns:
Model configuration or None if not found
"""
return _registry.get(name)
def get_available_models() -> Dict[str, str]:
"""
Get available models in the format expected by the UI.
Returns:
Dictionary mapping model IDs to display names
"""
return {name: config["display"] for name, config in _registry.items()}
# Initialize with default models
def _initialize_default_models():
"""Initialize the registry with default models."""
# OpenAI Models
register_model("gpt-5", "openai", "OpenAI GPT-5")
register_model("gpt-5-mini", "openai", "OpenAI GPT-5-mini")
register_model("gpt-4.1-2025-04-14", "openai", "OpenAI GPT-4.1")
register_model("gpt-4o-2024-08-06", "openai", "OpenAI GPT-4o")
register_model("gpt-4.1-mini-2025-04-14", "openai", "OpenAI GPT-4.1 Mini")
register_model("gpt-4o-mini", "openai", "OpenAI GPT-4o Mini")
register_model("o4-mini-2025-04-16", "openai", "OpenAI o4 Mini")
register_model("o3-2025-04-16", "openai", "OpenAI o3")
# Google Models
register_model("gemini-2.0-flash", "google", "Google Gemini 2.0 Flash")
register_model("gemini-2.0-flash-codeinterpreter", "google", "Google Gemini 2.0 Flash (Code Interpreter)")
# Anthropic Models
register_model("claude-sonnet-4-20250514", "anthropic", "Anthropic Claude 4 Sonnet")
register_model("claude-opus-4-20250514", "anthropic", "Anthropic Claude 4 Opus")
register_model("claude-3-5-haiku-latest", "anthropic", "Anthropic Claude 3.5 Haiku")
# Initialize default models when module is imported
_initialize_default_models()