import json import os from collections import Counter from datetime import datetime PREFERENCES_FILE = "core/preferences.json" def load_preferences(): """Загружает личные предпочтения пользователя""" if not os.path.exists(PREFERENCES_FILE): return {"tone": "нейтральный", "depth": "средний", "themes": [], "updated": ""} try: with open(PREFERENCES_FILE, "r", encoding="utf-8") as f: return json.load(f) except Exception: return {"tone": "нейтральный", "depth": "средний", "themes": []} def save_preferences(prefs): """Сохраняет обновлённые предпочтения""" os.makedirs(os.path.dirname(PREFERENCES_FILE), exist_ok=True) prefs["updated"] = datetime.now().strftime("%Y-%m-%d %H:%M:%S") with open(PREFERENCES_FILE, "w", encoding="utf-8") as f: json.dump(prefs, f, ensure_ascii=False, indent=2) def analyze_user_input(user_input): """Анализирует стиль и тему запроса""" prefs = load_preferences() text = user_input.lower() # --- Определяем тональность --- if any(word in text for word in ["объясни", "просто", "понятно"]): prefs["tone"] = "дружелюбный" elif any(word in text for word in ["детально", "подробно", "глубоко"]): prefs["tone"] = "академический" # --- Глубина --- if len(user_input.split()) < 6: prefs["depth"] = "поверхностный" elif len(user_input.split()) > 15: prefs["depth"] = "глубокий" else: prefs["depth"] = "средний" # --- Темы --- keywords = ["нейросеть", "ИИ", "философия", "история", "программирование", "квант", "человек"] found = [k for k in keywords if k in text] prefs["themes"].extend(found) # --- Очищаем дубликаты --- prefs["themes"] = [t for t, _ in Counter(prefs["themes"]).items()] save_preferences(prefs) return prefs def adapt_answer(base_answer): """Модифицирует ответ под стиль пользователя""" prefs = load_preferences() tone = prefs.get("tone", "нейтральный") depth = prefs.get("depth", "средний") themes = ", ".join(prefs.get("themes", [])) or "общие темы" if tone == "дружелюбный": base_answer = "😊 " + base_answer.replace(";", ";\n") + "\n\n(Объяснил максимально просто!)" elif tone == "академический": base_answer += "\n📚 Этот ответ оформлен в научном стиле." if depth == "глубокий": base_answer += "\n💡 Добавил больше деталей, чтобы раскрыть тему основательно." base_answer += f"\n\n🧩 Предпочтения: стиль — {tone}, глубина — {depth}, темы — {themes}" return base_answer