MIT License

技术解读

以下内容由 GitRead 中文社区 编辑团队基于项目 README 与官方资料整理, 结合中文开发者的常见使用场景补充技术选型建议。具体以项目官方文档为准。

PyRIT 深度解析:把 AI 红队从“手工作坊”推进到“工程流水线”

项目背景与痛点

传统红队测试有一套成熟的“靶面”:端口、协议、CVE、payload 库。你打一个 SQL 注入,成不成立是确定的,可以把 PoC 沉淀成规则,下次直接复用。生成式 AI 完全打破了这套范式——攻击面是自然语言的语义空间,同一个越狱提示换个措辞可能就失效,模型的 temperature 一调,结果又变。安全团队最常见的状态是:写一堆 Jupyter Notebook 手工试探,截几张图写进评估报告,然后所有的攻击语料和判据随着 Notebook 一起烂在硬盘里。

这就是 PyRIT(Python Risk Identification Toolkit)要解决的问题。它做的不是“再给一个越狱提示集合”,而是把 AI 红队这件事拆成可组合、可复现、可自动化的工程模块——目标、变形、攻击策略、评分、存储,每一层都能替换,每一轮的交互都落盘。当合规侧开始要求你证明“我们做过上线前的对抗性评估”(NIST AI RMF、欧盟 AI Act、国内大模型备案的安全评估条款都有类似诉求),有没有一套能给出结构化证据的工具链,差别是巨大的。

核心技术揭秘

PyRIT 的架构可以概括为“五件套 + 一个编排层”,全部基于抽象基类构建:

  • PromptTarget:被攻击的目标系统。屏蔽了 Azure OpenAI、OpenAI 兼容端点、HTTP 服务、HuggingFace 本地推理之间的差异,向下统一成“收消息、回消息”。
  • PromptConverter:提示词变形器。Base64、ROT13、字符拆分、翻译、模板注入、图片扰动……可以链式串联,把一句恶意指令变成 N 种“看起来无害”的变体。
  • Scorer:判定器。多数实现走的是“LLM as judge”——由 YAML 定义的判断规则交给一个判别模型作答;也有子串匹配、内容安全过滤器这类确定性评分器。
  • Memory:交互存储。默认落在 DuckDB(列存、本地、可直接用 SQL 分析),每次请求/响应连同转换历史、评分结果一起入库,这是“可复现”的物理基础。
  • Orchestrator:策略层,也是真正拉开差距的地方。单轮的 PromptSendingOrchestrator、多轮的 Crescendo / RedTeaming / TreeOfAttacksWithPruning、多模态的 T2I 编排器,都是在这一层实现不同的攻击剧本。

一条典型数据流如下:

graph TD A[种子提示与场景配置] --> B[Orchestrator 编排器] B --> C[Converter 转换链] C --> D[PromptTarget 目标模型] D --> E[模型响应] E --> F[Scorer 评分器] E --> G[Memory 交互存储 DuckDB] F --> H{"判定攻击是否成功?"} G -->|"回灌上一轮上下文"| B H -->|"否,继续迭代"| B H -->|"是,收敛记录"| I[结构化评估报告]

技术难点集中在两处。第一是多轮上下文管理:Crescendo 这类策略要求每一轮的提示都基于目标模型的上一轮响应动态重写——既要维持对话的“合理性”、不让对方察觉自己在被诱导,又要稳步把话题推向禁区。这本质上是拿一个攻击者 LLM 去对抗目标 LLM,控制好两者之间的状态机才是成败关键。第二是转换器的组合语义:单独一个 Base64 可能被系统提示轻松化解,但“翻译 + 编码 + 长度扰动”叠在一起后,对模型注意力机制的干扰是叠加的——怎么排顺序、叠几层,需要实验而不是拍脑袋。

功能亮点与差异

把 PyRIT 放进竞品坐标系里看:Garak 更像单轮的“漏洞扫描器”,强在探针库和覆盖面;Promptfoo 强在 CI 里的评测回归;LLM Guard 是防御侧。PyRIT 的定位是红队调度框架,差异化体现在三点:

一是多轮自适应攻击的工程化实现。Crescendo 和 TAP(Tree of Attacks with Pruning)从论文落到可调用的编排器,参数化暴露给使用者,这在开源里并不常见。二是场景 YAML 化:攻击剧本、种子数据集、评分规则可以写成配置,红队成员不写 Python 也能拼装一次演练。三是Web UI(Streamlit):把“必须会写代码”的门槛降下来,让偏业务的 AI 红队角色能直接参与。再加上评分器对 Azure AI Content Safety 的原生适配,测试结论可以直接映射到落地的产品护栏上,说服力比抽象打分强。

应用场景与落地建议

适合的场景:新模型上线前的上线前安全评估、模型卡/系统卡取证、把限定子集接入 CI 做回归门禁、多模态出图安全测试、以及对接监管要求的红队演练留档。

生产落地要盯住几件事:

  • 成本会爆炸。多轮攻击 + 树搜索的分支数×深度,token 消耗是指数级增长的。max_depth、分支数、并发必须在上线前压测过,否则一次全量扫描能把预算烧穿。
  • 版本必须锁死。项目迭代极快,接口破坏性变更频繁,pip install pyrit 不写死版本等于给自己埋雷。
  • 结论要统计化。温度、判官模型的偏见都会让单次判定失真,关键用例应当固定参数、多次运行取通过率,重要的高危样本必须人工抽检复核。
  • 数据本身是敏感资产。攻击日志里全是越狱提示与有害响应,存储、导出、权限都要管住;不要把真实用户对话直接塞进种子集。
  • 合规底线。只对自有资产或明确授权的第三方系统做测试,凭据走环境变量或密钥托管,别在 Notebook 里硬编码 API Key。

综合评价

优点:编排层与五件套的抽象设计是这个项目真正有长期价值的部分——它把红队经验从个人 Notebook 变成可继承的组织资产;多轮攻击策略的开箱即用程度在同类项目里领先;DuckDB 落盘 + YAML 场景让复现和审计成为可能;微软背书意味着它能跟 Azure AI 安全栈顺畅对接。

缺点:迭代太猛,文档时常落后于代码,接口稳定性欠佳;严重依赖 judge 模型,既是成本项也是波动源;Web UI 是 Streamlit,适合演示不适合当生产面板;默认链路对 Azure 生态更友好,其他厂商的适配需要自己补。

一句话总结:它不是一个“越狱提示合集”,而是一套给 AI 红队用的攻击编排框架。如果你只想要几条现成 payload,它偏重;如果你要把安全评估做成能上 CI、能出报告、能被审计的流程,它是目前开源选项里设计得最完整的一个。

关于

GitHub 原始描述(英文)

Open-source AI red teaming toolkit from Microsoft. Test generative AI systems with automated scans, adaptive multi-turn attacks, and a web UI.

描述取自 GitHub 官方 API,保持仓库作者书写的原文。

语言占比

Bicep
CSS
Dockerfile
HTML
JavaScript
Makefile
Mako
Python
Shell
TypeScript

Release

README

PyRIT: AI red teaming for models and applications

Code contributors PRs merged Issues closed

PyRIT (Python Risk Identification Tool for generative AI) is an open-source toolkit for finding security and safety weaknesses in generative AI systems through automated scans, adaptive multi-turn attacks, and human-led testing.

Built by the Microsoft AI Red Team and an open-source community of contributors, PyRIT brings a command-line scanner, a graphical interface, and an extensible Python framework together in one toolkit.

You do not need to be a Microsoft employee or an experienced red teamer to get involved. Join our Discord community to ask questions, exchange techniques, share what you are building, and connect with maintainers and other users.

Contributions include code, documentation, examples, bug reports, testing, and feedback from real-world use. Read the contributor guide and explore issues labeled “help wanted”.

Get started | Join Discord | Read the whitepaper

Explore PyRIT

  • Scanner: Run repeatable assessments from the command line.
  • CoPyRIT GUI: Explore AI systems interactively and review results in your browser.
  • Python framework: Compose and extend components to build custom red teaming workflows.

Visit our website for installation, configuration, demos, and documentation. Use the version picker to match the docs to your installation; the guides above follow the latest development version.

Models and systems

Connect to OpenAI, Anthropic, Azure OpenAI, Microsoft Foundry, Azure Machine Learning, Google Gemini, Google Vertex AI, AWS Bedrock, Hugging Face, Ollama, Groq, OpenRouter, Cohere, and GitHub Copilot.

Use OpenAI-compatible APIs or built-in targets, or install the optional LiteLLM adapter for additional provider integrations. See the provider configuration guide and LiteLLM provider directory for setup and more providers. Available features depend on the target and model.

Test complete applications and other endpoints through HTTP, WebSockets, browser automation with Playwright, or custom targets.

Research and citation

Read PyRIT: Democratizing AI Red Teaming Through Open-Source Tooling for the design principles and real-world experience behind the toolkit. If you use PyRIT in your research, please cite the paper using CITATION.cff.

Security

To report vulnerabilities in PyRIT privately through the Microsoft Security Response Center, follow our security policy.

Trademarks

This project may contain trademarks or logos for projects, products, or services. Authorized use of Microsoft trademarks or logos is subject to and must follow Microsoft’s Trademark & Brand Guidelines. Use of Microsoft trademarks or logos in modified versions of this project must not cause confusion or imply Microsoft sponsorship. Any use of third-party trademarks or logos are subject to those third-party’s policies.

评论

暂无评论