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 = "https://router.huggingface.co" payload = { "model": model_id, # теперь модель указывается здесь! "inputs": user_input, "parameters": {"max_new_tokens": 600, "temperature": 0.7} } response = requests.post(api_url, headers=HEADERS, json=payload) # 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)