akif07's picture
Clean initial commit without database or cache files
a7cba55
Raw
History Blame Contribute Delete
2.16 kB
"""
Streamlit Eval App — the "Interface layer / Streamlit Eval App / Evaluation UI" box.
Displays RAGAS results (faithfulness, answer relevancy, context precision/recall)
from evaluation/results.json, and lets you trigger a fresh evaluation run.
Run: streamlit run frontend/eval_app.py
"""
from __future__ import annotations
import json
import subprocess
import sys
from pathlib import Path
import plotly.graph_objects as go
import streamlit as st
RESULTS_PATH = Path(__file__).resolve().parent.parent / "evaluation" / "results.json"
GOLDEN_DATASET_PATH = Path(__file__).resolve().parent.parent / "evaluation" / "golden_dataset.json"
st.set_page_config(page_title="RAG Evaluation Dashboard", page_icon="📊", layout="centered")
st.title("📊 RAGAS Evaluation Dashboard")
st.caption("Faithfulness · Answer Relevancy · Context Precision · Context Recall")
golden = json.loads(GOLDEN_DATASET_PATH.read_text()) if GOLDEN_DATASET_PATH.exists() else []
st.metric("Golden dataset size", len(golden))
if st.button("Run evaluation now (this calls the live LLM gateway)"):
with st.spinner("Running pipeline + RAGAS metrics across the golden dataset…"):
proc = subprocess.run(
[sys.executable, "-m", "evaluation.ragas_eval"],
cwd=str(Path(__file__).resolve().parent.parent),
capture_output=True,
text=True,
)
if proc.returncode != 0:
st.error(proc.stderr[-3000:])
else:
st.success("Evaluation complete.")
st.rerun()
if RESULTS_PATH.exists():
scores = json.loads(RESULTS_PATH.read_text())
labels = list(scores.keys())
values = [round(v, 3) for v in scores.values()]
fig = go.Figure(data=[go.Bar(x=labels, y=values, marker_color="#4F46E5")])
fig.update_layout(yaxis_range=[0, 1], title="RAGAS metric scores (0–1)")
st.plotly_chart(fig, use_container_width=True)
cols = st.columns(len(labels))
for col, label, value in zip(cols, labels, values):
col.metric(label, value)
else:
st.info("No evaluation results yet — click the button above or run `python -m evaluation.ragas_eval`.")