用途:使用微软开源的 PyRIT(Python Risk Identification Tool for generative AI)对对话式 LLM 目标进行多轮对抗攻击测试。适用于单轮扫描无法发现问题的场景,评估对话式智能体在状态累积下的防护表现,并以评分器驱动的自动化流程替代人工逐条红队测试。仅限对自有或已获明确授权的模型与端点使用;多轮编排会大量消耗目标与攻击/评分模型 token,需考虑成本与服务条款。
主要能力:Targets(pyrit.prompt_target)封装被测系统与辅助模型,如 OpenAIChatTarget、AzureMLChatTarget、HTTPTarget。Orchestrators(pyrit.orchestrator)实现攻击策略,多轮策略继承 MultiTurnOrchestrator,包括 RedTeamingOrchestrator(通用对抗对话循环)、CrescendoOrchestrator(渐进升级,逐轮看似合理)、TreeOfAttacksWithPruningOrchestrator(TAP,并行分支、评分引导扩展与剪枝)。Scorers(pyrit.score)如 SelfAskTrueFalseScorer 判定目标是否达成并反馈循环。Converters 可改写提示(如 Base64Converter、ROT13Converter)以规避过滤;memory 保存每轮对话供分析。映射 MITRE ATLAS AML.T0051(LLM 提示注入)与 AML.T0054(LLM 越狱),支持 NIST AI RMF MEASURE-2.7。
使用方式:需 Python 3.11+ 与独立虚拟环境,安装:python -m venv .venv && source .venv/bin/activate ;python -m pip install -U pyrit ;验证:python -c "import pyrit; print(pyrit.version)"。配置目标、攻击与评分模型的凭据/端点(OpenAI/Azure 可设 OPENAI_API_KEY 或用 .env)。初始化内存:from pyrit.common import initialize_pyrit, IN_MEMORY;initialize_pyrit(memory_db_type=IN_MEMORY)(持久化用 DUCK_DB)。随后依次:配置 Targets;用 RedTeamingOrchestrator 搭配 SelfAskTrueFalseScorer 与 max_turns 运行通用对抗循环;用 CrescendoOrchestrator 设 max_turns、max_backtracks 做渐进升级;用 TAP 设 width、depth、branching_factor 做自适应分支;为编排器传入 prompt_converters 规避输入过滤;最后通过 CentralMemory.get_memory_instance() 与 get_prompt_request_pieces() 导出完整对话作为证据,并标注编排器、轮数与评分结论。
适用场景:单轮扫描(如 garak)显示模型稳健、需测试多轮升级或自适应分支时;评估对话式助手;构建可复现、带持久对话记忆的红队活动与回归测试;检验护栏在渐进式升级下是否仍有效。
限制:文件要求必须有针对目标的书面授权;未授权使用被禁止。Python 版本、依赖模型端点与 token 成本等条件须自行满足。资料未提供定价、性能指标或与其它工具的具体对比数据。