Yermek68 commited on
Commit
31df4bd
·
verified ·
1 Parent(s): 1761368

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +36 -21
app.py CHANGED
@@ -2,6 +2,7 @@ import os
2
  import time
3
  import gradio as gr
4
  import requests
 
5
 
6
  from core.dashboard import ErohaDashboard
7
  from core.intelligence import update_memory, summarize_context
@@ -9,26 +10,29 @@ from core.selfcheck import evaluate_answer, improve_answer
9
  from core.learning import analyze_user_input, adapt_answer
10
  from core.model_selector import choose_model
11
 
12
-
13
  # ==============================
14
- # 🔐 Авторизация через Hugging Face Token
15
  # ==============================
16
  HF_TOKEN = os.getenv("HF_TOKEN")
17
  if not HF_TOKEN:
18
- print("⚠️ Внимание: токен Hugging Face не найден. Добавьте его в Settings → Secrets → New secret (Name=HF_TOKEN)")
19
  HEADERS = {"Authorization": f"Bearer {HF_TOKEN}"} if HF_TOKEN else {}
20
 
 
 
 
21
  dashboard = ErohaDashboard()
22
-
 
23
 
24
  # ==============================
25
- # ⚙️ Основная функция агента
26
  # ==============================
27
  def generate_response(user_input):
28
  try:
29
  start = time.time()
30
 
31
- # 1️⃣ Определяем предпочтения и модель
32
  prefs = analyze_user_input(user_input)
33
  model_id = choose_model(user_input)
34
 
@@ -42,13 +46,11 @@ def generate_response(user_input):
42
 
43
  response = requests.post(api_url, headers=HEADERS, json=payload, timeout=60)
44
 
45
- # 3️⃣ Проверка ответа
46
  if response.status_code != 200:
47
  return f"⚠️ Ошибка API ({response.status_code}): {response.text}"
48
 
49
  result = response.json()
50
 
51
- # Hugging Face Router возвращает разные форматы — обрабатываем оба
52
  if isinstance(result, list):
53
  base_output = result[0].get("generated_text", "")
54
  elif isinstance(result, dict) and "generated_text" in result:
@@ -56,20 +58,36 @@ def generate_response(user_input):
56
  else:
57
  base_output = str(result)
58
 
59
- # 4️⃣ Самоанализ и улучшение
60
  check = evaluate_answer(base_output)
61
  improved = improve_answer(base_output)
62
  personalized = adapt_answer(improved)
63
 
64
- # 5️⃣ Обновляем память и контекст
65
  update_memory(user_input, personalized)
66
  context = summarize_context()
67
 
68
- # 6️⃣ Метрики
69
  response_time = round(time.time() - start, 2)
70
  dashboard.log_request(model_id, prefs["category"], response_time)
71
 
72
- # 7️⃣ Формируем итоговый ответ
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
73
  summary = (
74
  f"🧠 **Модель:** `{model_id}`\n"
75
  f"🧩 **Тип запроса:** {prefs['category']}\n"
@@ -86,7 +104,7 @@ def generate_response(user_input):
86
 
87
 
88
  # ==============================
89
- # 📊 Панель аналитики
90
  # ==============================
91
  def show_dashboard():
92
  metrics_text, df = dashboard.dashboard_ui()
@@ -94,17 +112,14 @@ def show_dashboard():
94
 
95
 
96
  # ==============================
97
- # 🧠 Интерфейс Gradio
98
  # ==============================
99
- with gr.Blocks(title="Eroha AgentAPI v5.0 — Guru Edition", theme="soft") as app:
100
- gr.Markdown("# 🤖 Eroha AgentAPI v5.0 — Guru Edition")
101
- gr.Markdown("**Автоматический интеллект + самообучение + аналитика** 🧩")
102
 
103
  with gr.Tab("💬 Agent Chat"):
104
- user_input = gr.Textbox(
105
- label="Введите запрос",
106
- placeholder="Например: объясни, как работает квантовая запутанность, или напиши стих...",
107
- )
108
  output_box = gr.Textbox(label="Ответ", lines=15)
109
  submit_btn = gr.Button("🚀 Отправить")
110
  submit_btn.click(fn=generate_response, inputs=user_input, outputs=output_box)
 
2
  import time
3
  import gradio as gr
4
  import requests
5
+ import pandas as pd
6
 
7
  from core.dashboard import ErohaDashboard
8
  from core.intelligence import update_memory, summarize_context
 
10
  from core.learning import analyze_user_input, adapt_answer
11
  from core.model_selector import choose_model
12
 
 
13
  # ==============================
14
+ # 🔐 Токен авторизации Hugging Face
15
  # ==============================
16
  HF_TOKEN = os.getenv("HF_TOKEN")
17
  if not HF_TOKEN:
18
+ print("⚠️ Внимание: токен Hugging Face не найден. Добавьте его в Settings → Secrets → HF_TOKEN")
19
  HEADERS = {"Authorization": f"Bearer {HF_TOKEN}"} if HF_TOKEN else {}
20
 
21
+ # ==============================
22
+ # 📊 Инициализация панели и логов
23
+ # ==============================
24
  dashboard = ErohaDashboard()
25
+ LOG_FILE = "logs/history.csv"
26
+ os.makedirs("logs", exist_ok=True)
27
 
28
  # ==============================
29
+ # ⚙️ Основная логика агента
30
  # ==============================
31
  def generate_response(user_input):
32
  try:
33
  start = time.time()
34
 
35
+ # 1️⃣ Анализируем запрос
36
  prefs = analyze_user_input(user_input)
37
  model_id = choose_model(user_input)
38
 
 
46
 
47
  response = requests.post(api_url, headers=HEADERS, json=payload, timeout=60)
48
 
 
49
  if response.status_code != 200:
50
  return f"⚠️ Ошибка API ({response.status_code}): {response.text}"
51
 
52
  result = response.json()
53
 
 
54
  if isinstance(result, list):
55
  base_output = result[0].get("generated_text", "")
56
  elif isinstance(result, dict) and "generated_text" in result:
 
58
  else:
59
  base_output = str(result)
60
 
61
+ # 3️⃣ Самоанализ и улучшение
62
  check = evaluate_answer(base_output)
63
  improved = improve_answer(base_output)
64
  personalized = adapt_answer(improved)
65
 
66
+ # 4️⃣ Обновляем память и контекст
67
  update_memory(user_input, personalized)
68
  context = summarize_context()
69
 
70
+ # 5️⃣ Логируем метрики
71
  response_time = round(time.time() - start, 2)
72
  dashboard.log_request(model_id, prefs["category"], response_time)
73
 
74
+ # 6️⃣ Сохраняем историю в CSV
75
+ log_entry = {
76
+ "time": time.strftime("%Y-%m-%d %H:%M:%S"),
77
+ "model": model_id,
78
+ "category": prefs["category"],
79
+ "response_time": response_time,
80
+ "prompt": user_input,
81
+ "response": personalized[:2000] # обрезаем для читаемости
82
+ }
83
+
84
+ df = pd.DataFrame([log_entry])
85
+ if os.path.exists(LOG_FILE):
86
+ df.to_csv(LOG_FILE, mode="a", index=False, header=False)
87
+ else:
88
+ df.to_csv(LOG_FILE, index=False)
89
+
90
+ # 7️⃣ Формируем финальный ответ
91
  summary = (
92
  f"🧠 **Модель:** `{model_id}`\n"
93
  f"🧩 **Тип запроса:** {prefs['category']}\n"
 
104
 
105
 
106
  # ==============================
107
+ # 📈 Отображение Dashboard
108
  # ==============================
109
  def show_dashboard():
110
  metrics_text, df = dashboard.dashboard_ui()
 
112
 
113
 
114
  # ==============================
115
+ # 🎨 Интерфейс Gradio
116
  # ==============================
117
+ with gr.Blocks(title="Eroha AgentAPI v5.1 — Guru Edition", theme="soft") as app:
118
+ gr.Markdown("# 🤖 Eroha AgentAPI v5.1 — Guru Edition")
119
+ gr.Markdown("**Автоматический интеллект + самообучение + аналитика + кэширование истории** 🧩")
120
 
121
  with gr.Tab("💬 Agent Chat"):
122
+ user_input = gr.Textbox(label="Введите запрос", placeholder="Например: Напиши сказку о будущем...")
 
 
 
123
  output_box = gr.Textbox(label="Ответ", lines=15)
124
  submit_btn = gr.Button("🚀 Отправить")
125
  submit_btn.click(fn=generate_response, inputs=user_input, outputs=output_box)