ragiant / app.py
chibuzordev's picture
Update app.py
b6b5bac verified
# app.py
import streamlit as st
from rag_pipeline3 import *
from adversarial_framework import *
# Instantiate RAG and pipeline
rag = RAGPipeline()
pipeline = AdversarialAttackPipeline(answer_generator=rag.generate_answer)
# Streamlit UI
st.set_page_config(page_title="βš”οΈ Adversarial Attack Viewer", layout="wide")
st.title("βš”οΈ Adversarial Attack Viewer")
st.markdown("Compare original and perturbed inputs/outputs without metrics. Focus on behavior change.")
# Inputs
query = st.text_input("Enter Original Query")
perturb_method = st.selectbox("Perturbation Method", ["synonym", "delete", "contextual"])
k = st.slider("Top-K Retrieved Chunks", min_value=1, max_value=5, value=3)
# Run attack
if st.button("Run Attack"):
with st.spinner("Running adversarial pipeline..."):
result = pipeline.run(query=query, top_k=k, perturb_method=perturb_method)
st.text_area("πŸ”΅ Original Query", result['normal_query'], height=100)
st.text_area("🟠 Perturbed Query", result['perturbed_query'], height=100)
st.text_area("🟒 Normal Response", result['normal_response'], height=150)
st.text_area("🟑 Perturbed Response", result['perturbed_response'], height=150)
st.text_area("πŸ”΄ Adversarial Response (Perturbed Normal Response)", result['adversarial_response'], height=150)