File size: 1,334 Bytes
d9e0463
 
 
b6b5bac
 
d9e0463
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
# 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)