Yermek68 commited on
Commit
1761368
·
verified ·
1 Parent(s): 8057dd0

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +53 -36
app.py CHANGED
@@ -1,66 +1,80 @@
 
 
1
  import gradio as gr
2
  import requests
3
- import time
4
  from core.dashboard import ErohaDashboard
5
  from core.intelligence import update_memory, summarize_context
6
  from core.selfcheck import evaluate_answer, improve_answer
7
  from core.learning import analyze_user_input, adapt_answer
8
  from core.model_selector import choose_model
9
 
10
- # 🔐 Токен Hugging Face (если не нужен — просто удали строку)
11
- HEADERS = {"Authorization": "Bearer hf_your_token"}
 
 
 
 
 
 
12
 
13
  dashboard = ErohaDashboard()
14
 
 
 
 
 
15
  def generate_response(user_input):
16
  try:
17
  start = time.time()
18
 
19
- # 1️⃣ Определение модели
20
  prefs = analyze_user_input(user_input)
21
  model_id = choose_model(user_input)
22
- api_url = "https://router.huggingface.co"
23
-
24
- payload = {
25
- "model": model_id, # теперь модель указывается здесь!
26
- "inputs": user_input,
27
- "parameters": {"max_new_tokens": 600, "temperature": 0.7}
28
- }
29
 
30
- response = requests.post(api_url, headers=HEADERS, json=payload)
 
 
 
 
 
 
31
 
 
32
 
33
- # 2️⃣ Запрос к модели
34
- payload = {"inputs": user_input, "parameters": {"max_new_tokens": 600, "temperature": 0.7}}
35
- response = requests.post(api_url, headers=HEADERS, json=payload)
36
-
37
  if response.status_code != 200:
38
  return f"⚠️ Ошибка API ({response.status_code}): {response.text}"
39
 
40
  result = response.json()
41
- base_output = result[0]["generated_text"] if isinstance(result, list) else str(result)
42
 
43
- # 3️⃣ Самоанализ и улучшение
 
 
 
 
 
 
 
 
44
  check = evaluate_answer(base_output)
45
  improved = improve_answer(base_output)
46
-
47
- # 4️⃣ Адаптация под стиль пользователя
48
  personalized = adapt_answer(improved)
49
 
50
- # 5️⃣ Память и контекст
51
  update_memory(user_input, personalized)
52
  context = summarize_context()
53
 
54
- # 6️⃣ Метрики и дашборд
55
  response_time = round(time.time() - start, 2)
56
  dashboard.log_request(model_id, prefs["category"], response_time)
57
 
58
- # 7️⃣ Формирование результата
59
  summary = (
60
- f"🧠 Модель: `{model_id}`\n"
61
- f"🧩 Тип запроса: {prefs['category']}\n"
62
- f"⚡ Время отклика: {response_time} сек\n"
63
- f"🔍 Самоанализ: {check['result']}\n"
64
  f"{'; '.join(check['feedback']) if check['feedback'] else '✅ Всё отлично'}\n\n"
65
  f"{context}"
66
  )
@@ -68,23 +82,28 @@ response = requests.post(api_url, headers=HEADERS, json=payload)
68
  return f"{personalized}\n\n{summary}"
69
 
70
  except Exception as e:
71
- return f"❌ Ошибка: {str(e)}"
72
 
73
 
 
 
 
74
  def show_dashboard():
75
  metrics_text, df = dashboard.dashboard_ui()
76
  return metrics_text, df
77
 
78
 
79
- # === Интерфейс ===
80
- with gr.Blocks(title="Eroha AgentAPI v5.0 — Auto Model Switch", theme="soft") as app:
 
 
81
  gr.Markdown("# 🤖 Eroha AgentAPI v5.0 — Guru Edition")
82
- gr.Markdown("**Автоматический интеллект + самообучение + аналитика 🧠**")
83
 
84
  with gr.Tab("💬 Agent Chat"):
85
  user_input = gr.Textbox(
86
  label="Введите запрос",
87
- placeholder="Например: Объясни квантовую запутанность или напиши стих...",
88
  )
89
  output_box = gr.Textbox(label="Ответ", lines=15)
90
  submit_btn = gr.Button("🚀 Отправить")
@@ -92,10 +111,8 @@ with gr.Blocks(title="Eroha AgentAPI v5.0 — Auto Model Switch", theme="soft")
92
 
93
  with gr.Tab("📊 Dashboard"):
94
  metrics = gr.Markdown(label="Общая статистика")
95
- log_table = gr.Dataframe(headers=["time", "model", "type", "response_time"], label="История")
96
- refresh = gr.Button("🔄 Обновить")
97
  refresh.click(show_dashboard, outputs=[metrics, log_table])
98
 
99
  app.launch(server_name="0.0.0.0", server_port=7860)
100
-
101
-
 
1
+ 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
8
  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
 
35
+ # 2️⃣ Отправляем запрос на новый Router API
36
+ api_url = "https://router.huggingface.co"
37
+ payload = {
38
+ "model": model_id,
39
+ "inputs": user_input,
40
+ "parameters": {"max_new_tokens": 600, "temperature": 0.7}
41
+ }
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:
55
+ base_output = result["generated_text"]
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"
76
+ f"⚡ **Время отклика:** {response_time} сек\n"
77
+ f"🔍 **Самоанализ:** {check['result']}\n"
78
  f"{'; '.join(check['feedback']) if check['feedback'] else '✅ Всё отлично'}\n\n"
79
  f"{context}"
80
  )
 
82
  return f"{personalized}\n\n{summary}"
83
 
84
  except Exception as e:
85
+ return f"❌ Ошибка выполнения: {str(e)}"
86
 
87
 
88
+ # ==============================
89
+ # 📊 Панель аналитики
90
+ # ==============================
91
  def show_dashboard():
92
  metrics_text, df = dashboard.dashboard_ui()
93
  return metrics_text, df
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("🚀 Отправить")
 
111
 
112
  with gr.Tab("📊 Dashboard"):
113
  metrics = gr.Markdown(label="Общая статистика")
114
+ log_table = gr.Dataframe(headers=["time", "model", "type", "response_time"], label="История запросов")
115
+ refresh = gr.Button("🔄 Обновить данные")
116
  refresh.click(show_dashboard, outputs=[metrics, log_table])
117
 
118
  app.launch(server_name="0.0.0.0", server_port=7860)