63 lines
2.4 KiB
Python
63 lines
2.4 KiB
Python
"""
|
|
Загрузка конфигурации из переменных окружения.
|
|
"""
|
|
|
|
import os
|
|
from pathlib import Path
|
|
|
|
from dotenv import load_dotenv
|
|
|
|
# Загружаем .env если есть (в Docker пробрасывается через env_file)
|
|
env_path = Path(__file__).parent / ".env"
|
|
if env_path.exists():
|
|
load_dotenv(env_path)
|
|
|
|
|
|
def get_config() -> dict:
|
|
"""Собрать конфиг из переменных окружения."""
|
|
return {
|
|
"telegram": {
|
|
"api_id": int(os.environ["TG_API_ID"]),
|
|
"api_hash": os.environ["TG_API_HASH"],
|
|
"session_name": os.environ.get("TG_SESSION_NAME", "digest_session"),
|
|
"channels": [
|
|
ch.strip()
|
|
for ch in os.environ.get("TG_CHANNELS", "").split(",")
|
|
if ch.strip()
|
|
],
|
|
"hours_back": int(os.environ.get("TG_HOURS_BACK", "12")),
|
|
"max_messages_per_channel": int(
|
|
os.environ.get("TG_MAX_MESSAGES_PER_CHANNEL", "50")
|
|
),
|
|
"delay_between_channels": float(
|
|
os.environ.get("TG_DELAY_BETWEEN_CHANNELS", "2")
|
|
),
|
|
"min_message_length": int(
|
|
os.environ.get("TG_MIN_MESSAGE_LENGTH", "50")
|
|
),
|
|
},
|
|
"llm": {
|
|
"provider": os.environ.get("LLM_PROVIDER", "ollama"),
|
|
"anthropic_api_key": os.environ.get("ANTHROPIC_API_KEY", ""),
|
|
"anthropic_model": os.environ.get(
|
|
"ANTHROPIC_MODEL", "claude-sonnet-4-20250514"
|
|
),
|
|
"openai_api_key": os.environ.get("OPENAI_API_KEY", ""),
|
|
"openai_model": os.environ.get("OPENAI_MODEL", "gpt-4o-mini"),
|
|
"ollama_url": os.environ.get(
|
|
"OLLAMA_URL", "http://host.docker.internal:11434"
|
|
),
|
|
"ollama_model": os.environ.get("OLLAMA_MODEL", "gemma3:12b"),
|
|
"max_tokens": int(os.environ.get("LLM_MAX_TOKENS", "4096")),
|
|
"language": os.environ.get("LLM_LANGUAGE", "русский"),
|
|
},
|
|
"delivery": {
|
|
"method": os.environ.get("DELIVERY_METHOD", "saved_messages"),
|
|
"bot_token": os.environ.get("BOT_TOKEN", ""),
|
|
"chat_id": os.environ.get("BOT_CHAT_ID", ""),
|
|
"max_message_length": int(
|
|
os.environ.get("DELIVERY_MAX_MESSAGE_LENGTH", "4000")
|
|
),
|
|
},
|
|
}
|