Yermek68 commited on
Commit
fd459d5
·
verified ·
1 Parent(s): bd0e9f8

Create core/learning.py

Browse files
Files changed (1) hide show
  1. core/learning.py +13 -71
core/learning.py CHANGED
@@ -1,75 +1,17 @@
1
- import json
2
- import os
3
- from collections import Counter
4
- from datetime import datetime
5
-
6
- PREFERENCES_FILE = "core/preferences.json"
7
-
8
-
9
- def load_preferences():
10
- """Загружает личные предпочтения пользователя"""
11
- if not os.path.exists(PREFERENCES_FILE):
12
- return {"tone": "нейтральный", "depth": "средний", "themes": [], "updated": ""}
13
- try:
14
- with open(PREFERENCES_FILE, "r", encoding="utf-8") as f:
15
- return json.load(f)
16
- except Exception:
17
- return {"tone": "нейтральный", "depth": "средний", "themes": []}
18
-
19
-
20
- def save_preferences(prefs):
21
- """Сохраняет обновлённые предпочтения"""
22
- os.makedirs(os.path.dirname(PREFERENCES_FILE), exist_ok=True)
23
- prefs["updated"] = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
24
- with open(PREFERENCES_FILE, "w", encoding="utf-8") as f:
25
- json.dump(prefs, f, ensure_ascii=False, indent=2)
26
-
27
-
28
  def analyze_user_input(user_input):
29
- """Анализирует стиль и тему запроса"""
30
- prefs = load_preferences()
31
  text = user_input.lower()
32
-
33
- # --- Определяем тональность ---
34
- if any(word in text for word in ["объясни", "просто", "понятно"]):
35
- prefs["tone"] = "дружелюбный"
36
- elif any(word in text for word in ["детально", "подробно", "глубоко"]):
37
- prefs["tone"] = "академический"
38
-
39
- # --- Глубина ---
40
- if len(user_input.split()) < 6:
41
- prefs["depth"] = "поверхностный"
42
- elif len(user_input.split()) > 15:
43
- prefs["depth"] = "глубокий"
44
  else:
45
- prefs["depth"] = "средний"
46
-
47
- # --- Темы ---
48
- keywords = ["нейросеть", "ИИ", "философия", "история", "программирование", "квант", "человек"]
49
- found = [k for k in keywords if k in text]
50
- prefs["themes"].extend(found)
51
-
52
- # --- Очищаем дубликаты ---
53
- prefs["themes"] = [t for t, _ in Counter(prefs["themes"]).items()]
54
-
55
- save_preferences(prefs)
56
- return prefs
57
-
58
-
59
- def adapt_answer(base_answer):
60
- """Модифицирует ответ под стиль пользователя"""
61
- prefs = load_preferences()
62
- tone = prefs.get("tone", "нейтральный")
63
- depth = prefs.get("depth", "средний")
64
- themes = ", ".join(prefs.get("themes", [])) or "общие темы"
65
-
66
- if tone == "дружелюбный":
67
- base_answer = "😊 " + base_answer.replace(";", ";\n") + "\n\n(Объяснил максимально просто!)"
68
- elif tone == "академический":
69
- base_answer += "\n📚 Этот ответ оформлен в научном стиле."
70
-
71
- if depth == "глубокий":
72
- base_answer += "\n💡 Добавил больше деталей, чтобы раскрыть тему основательно."
73
 
74
- base_answer += f"\n\n🧩 Предпочтения: стиль — {tone}, глубина — {depth}, темы — {themes}"
75
- return base_answer
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
  def analyze_user_input(user_input):
2
+ """Определяет тип запроса пользователя (код, текст, объяснение)"""
 
3
  text = user_input.lower()
4
+ if any(x in text for x in ["код", "python", "js", "html", "function"]):
5
+ return {"category": "coding"}
6
+ elif any(x in text for x in ["объясни", "как работает", "почему"]):
7
+ return {"category": "science"}
8
+ elif any(x in text for x in ["напиши", "создай", "расскажи"]):
9
+ return {"category": "creative"}
 
 
 
 
 
 
10
  else:
11
+ return {"category": "general"}
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
12
 
13
+ def adapt_answer(answer):
14
+ """Делает стиль ответа дружелюбным"""
15
+ if not answer.endswith("😊"):
16
+ answer += " 😊"
17
+ return answer