PII-detection / src /streamlit_app.py
Devesh-mishra13's picture
Update src/streamlit_app.py
48fd8e0 verified
Raw
History Blame Contribute Delete
1.46 kB
import streamlit as st
from transformers import AutoTokenizer, AutoModelForCausalLM
import torch
@st.cache_resource
def load_model():
import os
# Set cache dir to writable path
os.environ["TRANSFORMERS_CACHE"] = "/app/hf-cache"
os.makedirs("/app/hf-cache", exist_ok=True)
model_name = "tiiuae/falcon-rw-1b"
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForCausalLM.from_pretrained(model_name, output_attentions=True, trust_remote_code=True)
model.eval()
return tokenizer, model
def get_attention(prompt, tokenizer, model):
inputs = tokenizer(prompt, return_tensors="pt")
with torch.no_grad():
outputs = model(**inputs)
return outputs.attentions, tokenizer.convert_ids_to_tokens(inputs.input_ids[0])
def main():
st.title("๐Ÿ” Basic PII Attention Auditor")
tokenizer, model = load_model()
prompt = st.text_area("Enter your prompt:", "My name is Alice and my SSN is 123-45-6789.")
pii_keywords = ["ssn", "alice", "123", "email", "contact"]
if st.button("Analyze"):
attentions, tokens = get_attention(prompt, tokenizer, model)
pii_indices = [i for i, t in enumerate(tokens) if any(k in t.lower() for k in pii_keywords)]
st.write("Detected PII tokens:", [tokens[i] for i in pii_indices])
st.success("Base pipeline working. Ready for advanced visualization in future upgrade.")
if __name__ == "__main__":
main()