File size: 3,154 Bytes
d86715f
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
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