eroha-agentapi / app.py
Yermek68's picture
Update app.py
6539c45 verified
raw
history blame
3.73 kB
import gradio as gr
import requests
import time
from core.dashboard import ErohaDashboard
from core.intelligence import update_memory, summarize_context
from core.selfcheck import evaluate_answer, improve_answer
from core.learning import analyze_user_input, adapt_answer
from core.model_selector import choose_model
# 🔐 Токен Hugging Face (если не нужен — просто удали строку)
HEADERS = {"Authorization": "Bearer hf_your_token"}
dashboard = ErohaDashboard()
def generate_response(user_input):
try:
start = time.time()
# 1️⃣ Определение модели
prefs = analyze_user_input(user_input)
model_id = choose_model(user_input)
api_url = f"https://api-inference.huggingface.co/models/{model_id}"
# 2️⃣ Запрос к модели
payload = {"inputs": user_input, "parameters": {"max_new_tokens": 600, "temperature": 0.7}}
response = requests.post(api_url, headers=HEADERS, json=payload)
if response.status_code != 200:
return f"⚠️ Ошибка API ({response.status_code}): {response.text}"
result = response.json()
base_output = result[0]["generated_text"] if isinstance(result, list) else str(result)
# 3️⃣ Самоанализ и улучшение
check = evaluate_answer(base_output)
improved = improve_answer(base_output)
# 4️⃣ Адаптация под стиль пользователя
personalized = adapt_answer(improved)
# 5️⃣ Память и контекст
update_memory(user_input, personalized)
context = summarize_context()
# 6️⃣ Метрики и дашборд
response_time = round(time.time() - start, 2)
dashboard.log_request(model_id, prefs["category"], response_time)
# 7️⃣ Формирование результата
summary = (
f"🧠 Модель: `{model_id}`\n"
f"🧩 Тип запроса: {prefs['category']}\n"
f"⚡ Время отклика: {response_time} сек\n"
f"🔍 Самоанализ: {check['result']}\n"
f"{'; '.join(check['feedback']) if check['feedback'] else '✅ Всё отлично'}\n\n"
f"{context}"
)
return f"{personalized}\n\n{summary}"
except Exception as e:
return f"❌ Ошибка: {str(e)}"
def show_dashboard():
metrics_text, df = dashboard.dashboard_ui()
return metrics_text, df
# === Интерфейс ===
with gr.Blocks(title="Eroha AgentAPI v5.0 — Auto Model Switch", theme="soft") as app:
gr.Markdown("# 🤖 Eroha AgentAPI v5.0 — Guru Edition")
gr.Markdown("**Автоматический интеллект + самообучение + аналитика 🧠**")
with gr.Tab("💬 Agent Chat"):
user_input = gr.Textbox(
label="Введите запрос",
placeholder="Например: Объясни квантовую запутанность или напиши стих...",
)
output_box = gr.Textbox(label="Ответ", lines=15)
submit_btn = gr.Button("🚀 Отправить")
submit_btn.click(fn=generate_response, inputs=user_input, outputs=output_box)
with gr.Tab("📊 Dashboard"):
metrics = gr.Markdown(label="Общая статистика")
log_table = gr.Dataframe(headers=["time", "model", "type", "response_time"], label="История")
refresh = gr.Button("🔄 Обновить")
refresh.click(show_dashboard, outputs=[metrics, log_table])
app.launch(server_name="0.0.0.0", server_port=7860)