Implementation:Liu00222 Open Prompt Injection Application defense preparation
| Knowledge Sources | |
|---|---|
| Domains | Prompt_Injection, Security |
| Last Updated | 2026-02-14 15:00 GMT |
Overview
Concrete defense initialization method that pre-loads defense resources during Application construction, provided by the Application class.
Description
The Application.__defense_preparation method is called internally by `Application.__init__` to load defense-specific resources. For `response-based` defense, it initializes task-specific evaluation functions (eval_sst2, eval_spam, etc.). For `ppl-*` defense, it loads a Vicuna-7B surrogate model via FastChat and creates a PerplexityFilter with specified window size and threshold. For `retokenization` defense, it loads a BPE subword tokenizer table.
Usage
This method is called automatically during Application creation. Not called directly by users.
Code Reference
Source Location
- Repository: Open-Prompt-Injection
- File: OpenPromptInjection/apps/Application.py
- Lines: L59-100
Signature
class Application:
def __defense_preparation(self):
"""
Initialize defense-specific resources based on self.defense string.
Side effects:
- 'response-based': Sets self.response_based_filter (dict of eval functions)
- 'ppl-<window>-<threshold>': Sets self.ppl_filter (PerplexityFilter),
loads Vicuna-7B surrogate model
- 'retokenization': Sets self.retokenizer (BpeOnlineTokenizer)
"""
Import
from OpenPromptInjection.apps import Application
# Called automatically during Application.__init__
# app = Application(task, model, defense='ppl-5-3.0')
I/O Contract
Inputs
| Name | Type | Required | Description |
|---|---|---|---|
| self.defense | str | Yes | Defense strategy string set in `__init__` |
| self.task | TargetTask | Yes | Used by response-based defense to determine dataset type |
Outputs
| Name | Type | Description |
|---|---|---|
| self.response_based_filter | dict | Task-specific eval functions (for response-based defense) |
| self.ppl_filter | PerplexityFilter | Perplexity computation filter (for PPL defense) |
| self.retokenizer | BpeOnlineTokenizer | BPE tokenizer (for retokenization defense) |
Usage Examples
Implicit Initialization via create_app
import OpenPromptInjection as PI
from OpenPromptInjection.utils import open_config
target_task = PI.create_task(open_config("configs/task_configs/sst2_config.json"), 100)
model = PI.create_model(open_config("configs/model_configs/gpt_config.json"))
# PPL defense: __defense_preparation loads Vicuna-7B and creates PerplexityFilter
app = PI.create_app(target_task, model, defense='ppl-5-3.0')
# app.ppl_filter is now initialized
# Retokenization defense: __defense_preparation loads BPE tokenizer
app = PI.create_app(target_task, model, defense='retokenization')
# app.retokenizer is now initialized