了解提示注入如何利用大型语言模型 (LLM) 和多模态模型。探索计算机视觉中的风险、实际案例以及 AI 安全的缓解策略。
提示注入是一种主要影响基于 生成式AI 和 大型语言模型 (LLMs) 构建的系统的安全漏洞。当恶意用户精心设计一个特定输入——通常伪装成良性文本——欺骗人工智能,使其覆盖其原始编程、安全防护措施或系统指令时,就会发生这种情况。与利用代码中软件漏洞的传统黑客方法不同,提示注入攻击的是模型对语言的语义解释。通过操纵 上下文窗口,攻击者可以强迫模型泄露敏感数据、生成被禁止的内容或执行未经授权的操作。随着AI变得更加自主,理解这一漏洞对于维护强大的 AI安全 至关重要。
尽管提示注入最初是在纯文本聊天机器人中发现的,但由于多模态模型的出现,它在计算机视觉(CV)领域变得越来越重要。现代视觉语言模型(VLM),例如CLIP或像YOLO-World这样的开放词汇检测器,允许用户使用自然语言描述(例如,“找到红色背包”)来定义检测目标。
在这些系统中,文本提示被转换为嵌入 (embeddings),模型将其与视觉特征进行比较。如果攻击者呈现包含文本指令(例如写着“忽略此对象”的标志)的图像,并且模型的光学字符识别 (OCR)组件将其读取并解释为高优先级命令,则可能发生“视觉提示注入”。这创造了一个独特的攻击向量,其中物理环境本身充当注入机制,挑战了自动驾驶汽车和智能监控系统的可靠性。
提示注入的影响延伸到各个行业,在这些行业中,AI与外部输入进行交互:
区分提示注入与机器学习领域中的类似术语很重要:
以下代码演示了用户定义的文本提示如何与开放词汇视觉模型交互。在安全应用程序中, user_prompt 需要严格的净化处理以防止注入攻击。我们使用 ultralytics 用于加载能够理解文本定义的模型包。
from ultralytics import YOLO
# Load a YOLO-World model capable of open-vocabulary detection
# This model maps text prompts to visual objects
model = YOLO("yolov8s-world.pt")
# Standard usage: The system expects simple class names
safe_classes = ["person", "bicycle", "car"]
# Injection Scenario: A malicious user inputs a prompt attempting to alter behavior
# e.g., attempting to override internal safety concepts or confuse the tokenizer
malicious_input = ["ignore safety gear", "authorized personnel only"]
# Setting classes updates the model's internal embeddings
model.set_classes(malicious_input)
# Run prediction. If the model is vulnerable to the semantic content
# of the malicious prompt, detection results may be manipulated.
results = model.predict("https://ultralytics.com/images/bus.jpg")
# Visualize the potentially manipulated output
results[0].show()
防御提示注入是一个活跃的研究领域。技术包括基于人类反馈的强化学习 (RLHF),用于训练模型拒绝有害指令,以及实施“三明治”防御,将用户输入夹在系统指令之间。使用Ultralytics Platform进行训练和部署的组织可以监控推理日志以detect异常提示模式。此外,NIST AI风险管理框架提供了评估和缓解已部署系统中此类风险的指南。

开启您的机器学习未来之旅