88 lines
4.0 KiB
Python
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", "") # ⚠️ Без ключа — только через env!
|
|
|
|
# =============================================================================
|
|
# 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")
|