Files
umb/config.py
T
Галингер Р.С. d6c029f708 feat: preload Whisper model at startup with disk space check
- Add WHISPER_MODEL_SIZE and WHISPER_MIN_FREE_SPACE_BYTES config options
- voice.py now preloads/downloads the Whisper model at bot startup
- Detailed logging for model presence, disk space, download progress and readiness
- If model is already present locally, preload is skipped
- If disk space is insufficient, bot fails fast with a clear error
- main.py calls preload_model() after proxy setup and before polling
- Document voice recognition model download behavior in README
2026-07-08 09:44:48 +07:00

49 lines
2.2 KiB
Python

import os
from dotenv import load_dotenv
load_dotenv()
BOT_TOKEN = os.getenv("BOT_TOKEN", "")
PROXY_ENABLED = os.getenv("PROXY_ENABLED", "false").lower() == "true"
PROXY_URL = os.getenv("PROXY_URL", "")
API_WEATHER = os.getenv("API_WEATHER", "")
OPENROUTER_API_KEY = os.getenv("OPENROUTER_API_KEY", "")
ROUTERAI_API_KEY = os.getenv("ROUTERAI_API_KEY", "")
ROUTERAI_BASE_URL = os.getenv("ROUTERAI_BASE_URL", "https://routerai.ru/api/v1")
ROUTERAI_MODEL = "deepseek/deepseek-v4-flash"
MODERATION_LIMIT = 25
MODERATION_WINDOW = 60
MODERATION_BAN_DURATION = 300
AI_CONTEXT_LIMIT = 10
AI_DIALOGUE_LIMIT = 50
AI_PHASE2_LIMIT = 20
AI_COOLDOWN = 3600
AI_BLOCK_DEFAULT_DURATION = 86400
# Health check periodically calls every free model to test availability.
# This consumes API tokens; disabled by default.
AI_HEALTH_CHECK_ENABLED = os.getenv("AI_HEALTH_CHECK_ENABLED", "false").lower() == "true"
AI_HEALTH_CHECK_INTERVAL = int(os.getenv("AI_HEALTH_CHECK_INTERVAL", "600"))
# Whisper model settings.
# The base model requires ~2.5 GB for download; 5 GB free space is recommended.
WHISPER_MODEL_SIZE = os.getenv("WHISPER_MODEL_SIZE", "base")
WHISPER_MIN_FREE_SPACE_BYTES = int(os.getenv("WHISPER_MIN_FREE_SPACE_BYTES", str(5 * 1024 * 1024 * 1024)))
ACCESS_KEY = os.getenv("ACCESS_KEY", "").strip()
SECRET_KEY = os.getenv("SECRET_KEY", "").strip()
BUCKET_NAME = os.getenv("BUCKET_NAME", "").strip()
AI_SYSTEM_PROMPT = (
"Ты — Астра, универсальный справочный AI-помощник в Telegram чате. "
"Твоя задача — помогать искать информацию, объяснять сложные вещи просто. "
"Отвечай кратко, чётко, с основной сутью. Если пользователь не попросил развёрнутый ответ — не расписывай. "
"Если контекст разговора закончился и ты потеряла нить, скажи что-то милое и отвлекающее, "
'например "я потеряла мысль" или "смотри, какая птичка!".'
)
DATABASE_URL = "sqlite+aiosqlite:///./bot/data/umb.db"