| import torch | |
| import gradio as gr | |
| from transformers import AutoTokenizer, AutoModelForSequenceClassification, pipeline | |
| tokenizer = AutoTokenizer.from_pretrained("ProtectAI/deberta-v3-base-prompt-injection") | |
| model = AutoModelForSequenceClassification.from_pretrained("ProtectAI/deberta-v3-base-prompt-injection") | |
| classifier = pipeline( | |
| "text-classification", | |
| model=model, | |
| tokenizer=tokenizer, | |
| truncation=True, | |
| max_length=512, | |
| device=torch.device("cuda" if torch.cuda.is_available() else "cpu"), | |
| ) | |
| def predict(user_input: str): | |
| return classifier(user_input) | |
| textbox = gr.Textbox(placeholder="Enter user input presented for injection attack classification", lines=12) | |
| interface = gr.Interface( | |
| inputs=textbox, fn=predict, outputs="text", | |
| title="Injection Attack Classifier", | |
| description="This web API flags if the text presented as input to an LLM qualifies to be an injection attack", | |
| allow_flagging="manual", flagging_options=["Useful", "Not Useful"] | |
| ) | |
| with gr.Blocks() as demo: | |
| interface.launch() | |
| demo.queue(concurrency_count=4) | |
| demo.launch() |