Spaces:
Running
Running
| 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) | |