Fix: Прокси, локальные модели, исправления совместимости

This commit is contained in:
mirivlad 2026-03-17 03:58:11 +08:00
parent 66fd5a2ca8
commit 1f1e65bcdf
5 changed files with 27 additions and 12 deletions

1
.gitignore vendored
View File

@ -26,6 +26,7 @@ venv/
ENV/
chroma_db/
models/
*.db
*.db-journal

View File

@ -11,8 +11,8 @@ class Settings(BaseSettings):
allowed_usernames: str = ""
bot_name: str = "Валера"
default_tool: str = "opencode"
qwen_command: str = "qwen-code"
default_tool: str = "qwen"
qwen_command: str = "qwen"
opencode_command: str = "opencode"
tool_timeout: int = 120

View File

@ -5,7 +5,7 @@ import tempfile
from telegram import Update
from telegram.ext import (
Application, CommandHandler, MessageHandler, filters,
ContextTypes, CallbackQueryHandler, VoiceHandler
ContextTypes, CallbackQueryHandler
)
from telegram import InlineKeyboardButton, InlineKeyboardMarkup
from config.config import get_settings
@ -338,9 +338,9 @@ async def remind_command(update: Update, context: ContextTypes.DEFAULT_TYPE):
run_at = datetime.now() + timedelta(minutes=minutes)
scheduler_manager.add_reminder(chat_id, text, run_at)
# scheduler_manager.add_reminder(chat_id, text, run_at)
await update.message.reply_text(
f"Напоминание установлено на {run_at.strftime('%H:%M %d.%m.%Y')}"
f"Напоминание установлено на {run_at.strftime('%H:%M %d.%m.%Y')} (временно недоступно)"
)
@ -406,13 +406,15 @@ def main():
builder.token(settings.telegram_bot_token)
if settings.telegram_proxy_url:
builder.proxy_url(settings.telegram_proxy_url)
builder.proxy_type(settings.telegram_proxy_type)
from telegram.request import HTTPXRequest
request = HTTPXRequest(proxy=settings.telegram_proxy_url)
builder.request(request)
application = builder.build()
scheduler_manager = SchedulerManager(application.bot, orchestrator)
scheduler_manager.start()
# Scheduler temporarily disabled
# scheduler_manager = SchedulerManager(application.bot, orchestrator)
# scheduler_manager.start()
application.add_handler(CommandHandler("start", start))
application.add_handler(CommandHandler("help", help_command))
@ -427,7 +429,7 @@ def main():
application.add_handler(CommandHandler("forget", forget_command))
application.add_handler(CommandHandler("remind", remind_command))
application.add_handler(CallbackQueryHandler(confirm_callback))
application.add_handler(VoiceHandler(handle_voice))
application.add_handler(MessageHandler(filters.VOICE, handle_voice))
application.add_handler(MessageHandler(filters.TEXT & ~filters.COMMAND, handle_message))
logger.info("Бот запущен")

View File

@ -1,4 +1,5 @@
import logging
import os
from typing import List, Dict, Optional
import chromadb
from chromadb.config import Settings as ChromaSettings
@ -8,6 +9,9 @@ from config.config import get_settings
logger = logging.getLogger(__name__)
settings = get_settings()
MODEL_PATH = "./models/sentence-transformers/all-MiniLM-L6-v2"
MODEL_NAME = "all-MiniLM-L6-v2"
class Memory:
def __init__(self):
@ -20,7 +24,15 @@ class Memory:
metadata={"hnsw:space": "cosine"}
)
try:
self.embedding_model = SentenceTransformer('all-MiniLM-L6-v2')
if os.path.exists(MODEL_PATH):
logger.info(f"Загрузка модели из локальной папки: {MODEL_PATH}")
self.embedding_model = SentenceTransformer(MODEL_PATH)
else:
logger.info("Загрузка модели с HuggingFace (локальная версия не найдена)")
os.makedirs(os.path.dirname(MODEL_PATH), exist_ok=True)
self.embedding_model = SentenceTransformer(MODEL_NAME)
self.embedding_model.save(MODEL_PATH)
logger.info(f"Модель сохранена в: {MODEL_PATH}")
except Exception as e:
logger.warning(f"Не удалось загрузить модель эмбеддингов: {e}")
self.embedding_model = None

View File

@ -47,7 +47,7 @@ class SchedulerManager:
except Exception as e:
logger.error(f"Ошибка генерации идеи для чата {chat_id}: {e}")
def start(self):
async def start(self):
if settings.scheduler_enabled:
self.scheduler.add_job(
self.generate_idea,