import json import os from pathlib import Path from typing import Dict, Any, Optional def load_model_configs() -> Dict[str, Any]: """Load all model configurations from JSON file""" config_path = Path(__file__).parent.parent / "multimodel_configs" / "models.json" with open(config_path, 'r') as f: return json.load(f) def get_image_to_image_models() -> Dict[str, Any]: """Get only models that support image input""" models = load_model_configs() return {k: v for k, v in models.items() if v.get('supports_image_input', False)} def get_ui_parameters(model_name: str) -> Dict[str, Any]: """Get only parameters that should be shown in UI""" models = load_model_configs() if model_name not in models: return {} ui_params = {} for param_name, param_config in models[model_name].get('parameters', {}).items(): if param_config.get('show_in_ui', True): ui_params[param_name] = param_config return ui_params def get_all_parameters(model_name: str, ui_params: Optional[Dict] = None) -> Dict[str, Any]: """Get all parameters with defaults for API call""" models = load_model_configs() if model_name not in models: return {} all_params = {} for param_name, param_config in models[model_name].get('parameters', {}).items(): if ui_params and param_name in ui_params: # Use user-selected value all_params[param_name] = ui_params[param_name] else: # Use default value all_params[param_name] = param_config.get('default') return all_params def get_model_display_name(model_name: str) -> str: """Get display name for model""" models = load_model_configs() return models.get(model_name, {}).get('display_name', model_name) def is_gpt_model(model_name: str) -> bool: """Check if model is GPT default""" return model_name == "gpt_default"