49 lines
1.7 KiB
Python
49 lines
1.7 KiB
Python
import os
|
|
from pathlib import Path
|
|
|
|
from dotenv import load_dotenv
|
|
|
|
# Загружаем переменные окружения из .env файла
|
|
load_dotenv()
|
|
|
|
|
|
class Settings:
|
|
# API ключи
|
|
OPENROUTER_API_KEY: str = os.getenv("OPENROUTER_API_KEY", "")
|
|
OPENROUTER_BASE_URL: str = os.getenv(
|
|
"OPENROUTER_BASE_URL", "https://openrouter.ai/api/v1"
|
|
)
|
|
|
|
# Ollama — в Docker это будет не localhost, а имя контейнера или IP хоста
|
|
OLLAMA_BASE_URL: str = os.getenv("OLLAMA_BASE_URL", "http://localhost:11434")
|
|
|
|
# Путь к данным — по умолчанию локальная папка, в Docker будет монтироваться volume
|
|
DATA_DIR: str = os.getenv("DATA_DIR", "data")
|
|
|
|
# Окружение
|
|
ENVIRONMENT: str = os.getenv("ENVIRONMENT", "development")
|
|
|
|
# CORS — разрешённые источники (в production это будет домен)
|
|
CORS_ORIGINS: list = os.getenv("CORS_ORIGINS", "http://localhost:3000").split(",")
|
|
|
|
# JWT секрет — в production обязательно переопределить через .env
|
|
JWT_SECRET_KEY: str = os.getenv(
|
|
"JWT_SECRET_KEY", "your-super-secret-key-change-in-production"
|
|
)
|
|
|
|
def validate(self) -> dict:
|
|
"""Проверить, какие провайдеры настроены"""
|
|
return {
|
|
"ollama": True, # Ollama всегда доступна локально
|
|
"openrouter": bool(
|
|
self.OPENROUTER_API_KEY
|
|
and self.OPENROUTER_API_KEY != "your_api_key_here"
|
|
),
|
|
"data_dir": self.DATA_DIR,
|
|
"cors_origins": self.CORS_ORIGINS,
|
|
}
|
|
|
|
|
|
# Singleton instance
|
|
settings = Settings()
|