Files
say/config.py
T

88 lines
4.0 KiB
Python

"""
Централизованная конфигурация приложения Say.
Все настройки читаются из переменных окружения с разумными значениями по умолчанию.
"""
import os
# =============================================================================
# API — единый эндпоинт (aillm.ru)
# =============================================================================
API_BASE = os.environ.get("API_BASE", "https://api.aillm.ru")
API_KEY = os.environ.get("API_KEY", "sk-ucI5YvOticoOQ9Kuj5K9mQ")
# =============================================================================
# Whisper (распознавание речи)
# =============================================================================
WHISPER_URL = os.environ.get(
"WHISPER_URL",
f"{API_BASE}/v1/audio/transcriptions",
)
WHISPER_KEY = os.environ.get("WHISPER_KEY", API_KEY)
WHISPER_MODEL = os.environ.get("WHISPER_MODEL", "whisper-large-v3")
# =============================================================================
# Три LLM-профиля — каждый со своим именем, моделью и системным промптом
# =============================================================================
LLM_PROFILES = [
{
"id": "ddm",
"name": "DDM-120",
"description": "Быстрая модель, общие вопросы",
"url": os.environ.get("LLM_URL_DDM", f"{API_BASE}/v1/chat/completions"),
"key": os.environ.get("LLM_KEY_DDM", API_KEY),
"model": os.environ.get("LLM_MODEL_DDM", "ddm-120"),
"system_prompt": os.environ.get(
"LLM_SYSTEM_DDM",
"Ты — полезный ассистент. Отвечай кратко и по делу на том же языке, что и запрос.",
),
"temperature": float(os.environ.get("LLM_TEMP_DDM", "0.7")),
"max_tokens": int(os.environ.get("LLM_TOKENS_DDM", "1024")),
},
{
"id": "qwen",
"name": "Qwen",
"description": "Мощная модель, сложные задачи",
"url": os.environ.get("LLM_URL_QWEN", f"{API_BASE}/v1/chat/completions"),
"key": os.environ.get("LLM_KEY_QWEN", API_KEY),
"model": os.environ.get("LLM_MODEL_QWEN", "qwen-plus"),
"system_prompt": os.environ.get(
"LLM_SYSTEM_QWEN",
"Ты — эксперт-аналитик. Отвечай развернуто, структурированно, на языке запроса.",
),
"temperature": float(os.environ.get("LLM_TEMP_QWEN", "0.7")),
"max_tokens": int(os.environ.get("LLM_TOKENS_QWEN", "2048")),
},
{
"id": "deepseek",
"name": "DeepSeek",
"description": "Глубокая аналитика, код, рассуждения",
"url": os.environ.get("LLM_URL_DEEPSEEK", f"{API_BASE}/v1/chat/completions"),
"key": os.environ.get("LLM_KEY_DEEPSEEK", API_KEY),
"model": os.environ.get("LLM_MODEL_DEEPSEEK", "deepseek-chat"),
"system_prompt": os.environ.get(
"LLM_SYSTEM_DEEPSEEK",
"Ты — глубокий аналитик и программист. Думай step-by-step, отвечай на языке запроса.",
),
"temperature": float(os.environ.get("LLM_TEMP_DEEPSEEK", "0.7")),
"max_tokens": int(os.environ.get("LLM_TOKENS_DEEPSEEK", "4096")),
},
]
# =============================================================================
# Flask
# =============================================================================
FLASK_HOST = os.environ.get("HOST", "0.0.0.0")
FLASK_PORT = int(os.environ.get("PORT", "5000"))
# =============================================================================
# Логирование
# =============================================================================
LOG_LEVEL = os.environ.get("LOG_LEVEL", "INFO")