LLM模型输入过滤实验数据
实验目标
验证输入过滤机制对对抗攻击的防护效果,测试不同过滤策略在真实攻击场景下的有效性。
实验环境
- 模型:Llama2-7B
- 攻击类型:Prompt Injection攻击
- 测试数据集:1000条构造的对抗样本
防御策略实施
策略1:关键词过滤
import re
def keyword_filter(text):
keywords = ['system', 'prompt', 'instruction']
pattern = '|'.join(keywords)
return re.sub(pattern, '[FILTERED]', text, flags=re.IGNORECASE)
策略2:长度限制
MAX_LENGTH = 512
filtered_input = input_text[:MAX_LENGTH]
策略3:字符类型过滤
import string
def char_filter(text):
allowed_chars = set(string.ascii_letters + string.digits + '
')
return ''.join(c for c in text if c in allowed_chars)
实验结果
- 关键词过滤:成功拦截85%的攻击样本,误判率2%
- 长度限制:有效阻止超长输入攻击,但影响正常用户15%请求
- 字符类型过滤:减少特殊字符攻击90%,误判率3%
复现步骤
- 准备对抗样本数据集
- 依次应用上述三个过滤策略
- 测试模型输出安全性
- 统计成功率与误判率

讨论