import gradio as gr from inference import evo_rag_response, get_gpt_response from retriever import build_index_from_file from logger import log_feedback def advisor_interface(query, file, feedback_choice): # Build FAISS index from uploaded file if file is not None: build_index_from_file(file.name) # Get Evo + GPT responses evo_output = evo_rag_response(query) gpt_output = get_gpt_response(query, "") # optional context # Log feedback if feedback_choice != "No feedback": log_feedback(query, "[RAG+WEB context]", evo_output, feedback_choice) return evo_output, gpt_output # Manual retrain trigger def retrain_evo(): import retrain retrain.fine_tune_on_feedback() return "✅ Evo retrained on feedback." with gr.Blocks() as demo: gr.Markdown("## 🧠 EvoRAG+ – Retrieval-Augmented Adaptive AI for Finance") with gr.Row(): query = gr.Textbox(label="📝 Ask a financial question", placeholder="e.g. Option 1: Reduce exposure to Fund A. Option 2: Maintain allocation.") file = gr.File(label="📂 Upload memo or policy (.pdf or .txt)", file_types=[".pdf", ".txt"]) 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") gpt_out = gr.Textbox(label="🤖 GPT-3.5 Suggestion") submit_btn = gr.Button("Run Advisors") submit_btn.click(fn=advisor_interface, inputs=[query, file, feedback], outputs=[evo_out, gpt_out]) gr.Markdown("---") retrain_btn = gr.Button("🔁 Retrain Evo from Feedback") retrain_status = gr.Textbox(label="Retraining Status") retrain_btn.click(fn=retrain_evo, outputs=retrain_status) demo.launch()