Spaces:
Sleeping
Sleeping
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 | |
# π Advisor core logic | |
def advisor_interface(query, context, feedback_choice): | |
evo_output, evo_reasoning = get_evo_response(query, context, enable_search=True) | |
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() | |
# π Retrain logic | |
def retrain_evo(): | |
retrain.fine_tune_on_feedback() | |
return "β Evo retrained on feedback.", load_history() | |
# π Feedback log viewer | |
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." | |
# π§ UI | |
with gr.Blocks() as demo: | |
gr.Markdown("## π§ EvoRAG β Retrieval-Augmented Adaptive AI for Finance") | |
with gr.Accordion("π Ask a Financial Question", open=True): | |
with gr.Row(): | |
query = gr.Textbox(label="π Question", placeholder="e.g. Should we reduce exposure to Fund A?") | |
with gr.Row(): | |
context = gr.Textbox(label="π Memo, Policy, or News Context", placeholder="e.g. Tech Fund A underperformed by 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)", lines=4) | |
gpt_out = gr.Textbox(label="π€ GPT-3.5 Suggestion", lines=4) | |
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 Feedback Log")]) | |
gr.Markdown("---") | |
with gr.Accordion("π Evo Live Retraining", open=False): | |
retrain_button = gr.Button("π Retrain Evo Now from Feedback") | |
retrain_output = gr.Textbox(label="π οΈ Retrain Status", interactive=False) | |
history_output = gr.Textbox(label="π Recent Feedback Log", interactive=False) | |
retrain_button.click(fn=retrain_evo, inputs=[], outputs=[retrain_output, history_output]) | |
demo.launch() | |