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, feedback_choice): evo_output, evo_reasoning = get_evo_response(query, context) 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") with gr.Row(): query = gr.Textbox(label="📝 Ask a financial question", placeholder="e.g. Should we reduce exposure to Fund A?") context = gr.Textbox(label="📂 Paste memo, news, or background", placeholder="e.g. Tech Fund A underperformed 3.2%...") 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)") gpt_out = gr.Textbox(label="🤖 GPT-3.5 Suggestion") run_button = gr.Button("Run Advisors") run_button.click(fn=advisor_interface, inputs=[query, context, feedback], outputs=[evo_out, gpt_out, gr.Textbox(label="📜 Recent History")]) gr.Markdown("---") gr.Markdown("### 🔁 Retrain Evo from Feedback") retrain_button = gr.Button("📚 Retrain Evo") retrain_output = gr.Textbox(label="🛠️ Retrain Status") history_output = gr.Textbox(label="📜 Recent History") retrain_button.click(fn=retrain_evo, inputs=[], outputs=[retrain_output, history_output]) demo.launch()