import json from pathlib import Path from typing import Any, Dict, List, Optional class ModelConfig: """Класс для работы с конфигурацией моделей AI провайдеров""" def __init__(self, config_path: str = "config/models.json"): self.config_path = Path(config_path) self.config = self._load_config() def _load_config(self) -> Dict[str, Any]: """Загрузить конфигурацию из JSON файла""" if not self.config_path.exists(): raise FileNotFoundError(f"Config file not found: {self.config_path}") with open(self.config_path, "r", encoding="utf-8") as f: return json.load(f) def get_available_models(self, provider: str) -> List[Dict[str, Any]]: """Получить список доступных моделей для провайдера""" if provider not in self.config: raise ValueError(f"Unknown provider: {provider}") return self.config[provider]["available_models"] def get_default_model(self, provider: str) -> str: """Получить модель по умолчанию для провайдера""" if provider not in self.config: raise ValueError(f"Unknown provider: {provider}") return self.config[provider]["default_model"] def get_model_info(self, provider: str, model_id: str) -> Optional[Dict[str, Any]]: """Получить информацию о конкретной модели""" models = self.get_available_models(provider) for model in models: if model["id"] == model_id: return model return None def validate_model(self, provider: str, model_id: str) -> bool: """Проверить, существует ли модель для провайдера""" return self.get_model_info(provider, model_id) is not None # Singleton instance model_config = ModelConfig()