Spaces:
Running
Running
# 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) | |