import gradio as gr from inference import get_evo_response, get_gpt_response from logger import log_feedback import retrain import pandas as pd import os def advisor_interface(query, context, file, feedback_choice): evo_output, evo_reasoning = get_evo_response(query, context, file) gpt_output = get_gpt_response(query, context) if feedback_choice != "No feedback": label = 1 if feedback_choice == "👍 Helpful" else 0 log_feedback(query, context, evo_output, label) return evo_reasoning, gpt_output, load_history() def retrain_evo(): retrain.fine_tune_on_feedback() return "✅ Evo retrained on feedback.", load_history() def load_history(): if os.path.exists("feedback_log.csv"): df = pd.read_csv("feedback_log.csv") return df.tail(10).to_markdown(index=False) return "No history available yet." with gr.Blocks() as demo: gr.Markdown("## 🧠 EvoRAG – Retrieval-Augmented Adaptive AI (General Purpose)") with gr.Row(): query = gr.Textbox(label="📝 Ask any question", placeholder="e.g. What are the effects of inflation?") context = gr.Textbox(label="📂 Optional background notes or memos", placeholder="Paste policy, notes, or ideas...") with gr.Row(): file = gr.File(label="📎 Upload optional file (.txt or .pdf)", file_types=[".txt", ".pdf"]) with gr.Row(): feedback = gr.Radio(["👍 Helpful", "👎 Not Helpful", "No feedback"], label="Was Evo’s answer useful?", value="No feedback") with gr.Row(): evo_out = gr.Textbox(label="🔬 EvoRAG Suggestion (with reasoning)", lines=6) gpt_out = gr.Textbox(label="🤖 GPT-3.5 Suggestion", lines=6) run_button = gr.Button("Run Advisors") history_output = gr.Textbox(label="📜 Recent History") run_button.click(fn=advisor_interface, inputs=[query, context, file, feedback], outputs=[evo_out, gpt_out, history_output]) gr.Markdown("---") gr.Markdown("### 🔁 Retrain Evo on Feedback") retrain_button = gr.Button("📚 Retrain Evo") retrain_status = gr.Textbox(label="🛠️ Retrain Status") retrain_button.click(fn=retrain_evo, inputs=[], outputs=[retrain_status, history_output]) demo.launch()