/
Soldier327
/
LLM_AI
Обзор
Документация
Войти
/
Soldier327
/
LLM_AI
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
main
config/settings.py
64 строки
2 KB
Soldier-327
Initial commit
24 май 2026, 17:24
24 май 2026, 17:24
dae6bc3
Код
Авторство
О чём код?
import os from pathlib import Path from typing import Optional import yaml from pydantic_settings import BaseSettings class Settings(BaseSettings): """Конфигурация приложения""" # LLM настройки llm_provider: str = "openai" llm_model: str = "gpt-3.5-turbo" llm_temperature: float = 0.7 llm_max_tokens: int = 500 llm_timeout_seconds: int = 30 llm_retry_attempts: int = 3 llm_retry_min_wait: float = 1.0 llm_retry_max_wait: float = 10.0 # API настройки api_max_message_length: int = 1000 # Cache настройки cache_default_ttl_seconds: int = 3600 cache_max_size: int = 1000 # OpenAI API ключ openai_api_key: Optional[str] = None @classmethod def load_from_yaml(cls, yaml_path: str = "config/config.yaml") -> "Settings": """Загрузка конфигурации из YAML файла""" config_path = Path(yaml_path) if not config_path.exists(): return cls() with open(config_path, 'r') as f: config_data = yaml.safe_load(f) # Преобразуем YAML в плоский словарь для Pydantic flat_config = {} if 'llm' in config_data: flat_config.update({ f'llm_{k}': v for k, v in config_data['llm'].items() }) if 'api' in config_data: flat_config.update({ f'api_{k}': v for k, v in config_data['api'].items() }) if 'cache' in config_data: flat_config.update({ f'cache_{k}': v for k, v in config_data['cache'].items() }) return cls(**flat_config) settings = Settings.load_from_yaml() # Загрузка API ключа из переменных окружения if settings.llm_provider == "openai": settings.openai_api_key = os.getenv("OPENAI_API_KEY")