<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>护栏 on WYF 的技术博客</title><link>https://saflyer.cn/tags/%E6%8A%A4%E6%A0%8F/</link><description>Recent content in 护栏 on WYF 的技术博客</description><generator>Hugo -- gohugo.io</generator><language>zh-cn</language><lastBuildDate>Mon, 14 Sep 2026 10:03:15 +0800</lastBuildDate><atom:link href="https://saflyer.cn/tags/%E6%8A%A4%E6%A0%8F/index.xml" rel="self" type="application/rss+xml"/><item><title>模型安全检测 13：同类安全护栏方案横评（开源框架 + 商用护栏）</title><link>https://saflyer.cn/posts/joysafety-guardrails-compare/</link><pubDate>Mon, 14 Sep 2026 10:03:15 +0800</pubDate><guid>https://saflyer.cn/posts/joysafety-guardrails-compare/</guid><description>&lt;img src="https://saflyer.cn/posts/joysafety-guardrails-compare/cover.webp" alt="Featured image of post 模型安全检测 13：同类安全护栏方案横评（开源框架 + 商用护栏）" /&gt;&#10; &lt;blockquote&gt;&#10; &lt;p&gt;&lt;strong&gt;状态&lt;/strong&gt;：✅ 已完成&#10;&lt;strong&gt;前置阅读&lt;/strong&gt;：&lt;a href="https://saflyer.cn/posts/joysafety-arch-analysis/"&gt;03-技术架构与业务模块分析&lt;/a&gt;——分层架构、请求链路、四大 skill 实现&#10;&lt;strong&gt;日期&lt;/strong&gt;：2026-09-14&#10;&lt;strong&gt;素材来源&lt;/strong&gt;：提纲参考链接全文研读 + WebSearch/FetchURL 补充（2025~2026 最新动态，含 GitHub API 核实仓库状态）+ JoySafety 源码逐条核实&#10;&lt;strong&gt;读者定位&lt;/strong&gt;：已读懂 03 篇架构、现在想回答&amp;quot;为什么是 JoySafety、它的差异化和短板在哪&amp;quot;的读者&#10;&lt;strong&gt;写作约定&lt;/strong&gt;：JoySafety 侧结论全部落到源码坐标（&lt;code&gt;path:line&lt;/code&gt;，均经 Read/Grep 亲自核实）；外部事实全部附来源链接，汇总见第五章&lt;/p&gt;&#10;&#10; &lt;/blockquote&gt;&#10;&lt;hr&gt;&#10;&lt;h2 id="先建立全局认识"&gt;&lt;a href="#%e5%85%88%e5%bb%ba%e7%ab%8b%e5%85%a8%e5%b1%80%e8%ae%a4%e8%af%86" class="header-anchor"&gt;&lt;/a&gt;〇、先建立全局认识&#10;&lt;/h2&gt;&lt;h3 id="01-joysafety-一分钟回顾配置流--请求流"&gt;&lt;a href="#01-joysafety-%e4%b8%80%e5%88%86%e9%92%9f%e5%9b%9e%e9%a1%be%e9%85%8d%e7%bd%ae%e6%b5%81--%e8%af%b7%e6%b1%82%e6%b5%81" class="header-anchor"&gt;&lt;/a&gt;0.1 JoySafety 一分钟回顾（配置流 + 请求流）&#10;&lt;/h3&gt;&lt;p&gt;横评之前先把&amp;quot;被评对象&amp;quot;的两条链路钉死，后面所有对比维度都挂在它上面（细节见 03 篇，此处只给坐标）：&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;&#10;&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt" id="hl-0-1"&gt;&lt;a class="lnlinks" href="#hl-0-1"&gt; 1&lt;/a&gt;&#10;&lt;/span&gt;&lt;span class="lnt" id="hl-0-2"&gt;&lt;a class="lnlinks" href="#hl-0-2"&gt; 2&lt;/a&gt;&#10;&lt;/span&gt;&lt;span class="lnt" id="hl-0-3"&gt;&lt;a class="lnlinks" href="#hl-0-3"&gt; 3&lt;/a&gt;&#10;&lt;/span&gt;&lt;span class="lnt" id="hl-0-4"&gt;&lt;a class="lnlinks" href="#hl-0-4"&gt; 4&lt;/a&gt;&#10;&lt;/span&gt;&lt;span class="lnt" id="hl-0-5"&gt;&lt;a class="lnlinks" href="#hl-0-5"&gt; 5&lt;/a&gt;&#10;&lt;/span&gt;&lt;span class="lnt" id="hl-0-6"&gt;&lt;a class="lnlinks" href="#hl-0-6"&gt; 6&lt;/a&gt;&#10;&lt;/span&gt;&lt;span class="lnt" id="hl-0-7"&gt;&lt;a class="lnlinks" href="#hl-0-7"&gt; 7&lt;/a&gt;&#10;&lt;/span&gt;&lt;span class="lnt" id="hl-0-8"&gt;&lt;a class="lnlinks" href="#hl-0-8"&gt; 8&lt;/a&gt;&#10;&lt;/span&gt;&lt;span class="lnt" id="hl-0-9"&gt;&lt;a class="lnlinks" href="#hl-0-9"&gt; 9&lt;/a&gt;&#10;&lt;/span&gt;&lt;span class="lnt" id="hl-0-10"&gt;&lt;a class="lnlinks" href="#hl-0-10"&gt;10&lt;/a&gt;&#10;&lt;/span&gt;&lt;span class="lnt" id="hl-0-11"&gt;&lt;a class="lnlinks" href="#hl-0-11"&gt;11&lt;/a&gt;&#10;&lt;/span&gt;&lt;span class="lnt" id="hl-0-12"&gt;&lt;a class="lnlinks" href="#hl-0-12"&gt;12&lt;/a&gt;&#10;&lt;/span&gt;&lt;span class="lnt" id="hl-0-13"&gt;&lt;a class="lnlinks" href="#hl-0-13"&gt;13&lt;/a&gt;&#10;&lt;/span&gt;&lt;span class="lnt" id="hl-0-14"&gt;&lt;a class="lnlinks" href="#hl-0-14"&gt;14&lt;/a&gt;&#10;&lt;/span&gt;&lt;span class="lnt" id="hl-0-15"&gt;&lt;a class="lnlinks" href="#hl-0-15"&gt;15&lt;/a&gt;&#10;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&#10;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;配置流（配置期）：admin 写库 → api 轮询 → 内存缓存 → DAG 重建&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; safety-admin(8006) 配置 CRUD + 版本化状态机（online 禁改、upgrade 原子切换）&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; → 写入 MySQL&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; → safety-api(8007) 每 60s HTTP 轮询 /config/defense/api/conf&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; （DynamicConfigService.java:65 `@Scheduled(fixedRate = 60000)`）&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; → 按 lastChangeTimestamp 判断变更 → 全量替换 volatile 配置 Map → 回调重建各业务 DAG&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;请求流（执行期）：业务方 → 鉴权 → DAG → skill → 响应&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; POST /llmsec/api/defense/v2/{accessKey}&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; （DefenseApiV2Controller.java:33，注意目录名是 contoller，原仓库笔误）&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; → checkParams → Guava 内存级限流 → HMAC-SHA1 验签（accessKey 以 test 开头特赦，:74）&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; → 按 responseMode 分派（ResponseMode.java:7-26：sync / free_taxi / mq / http）&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; → DAG 从 root 逐跳执行（FunctionExecutorImpl.java:289 的 while 循环）&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; → 节点 HTTP 调用 skill 服务（keywords / bert / knowledge）&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; → 汇总风险结果响应&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&lt;p&gt;一句话定位：&lt;strong&gt;JoySafety 不是检测模型，而是&amp;quot;管理和调度一堆检测能力的编排框架&amp;quot;&lt;/strong&gt;。记住这句话，它是本章分类坐标系的锚点。&lt;/p&gt;&#10;&lt;h3 id="02-四类玩家坐标系不要混在一起比"&gt;&lt;a href="#02-%e5%9b%9b%e7%b1%bb%e7%8e%a9%e5%ae%b6%e5%9d%90%e6%a0%87%e7%b3%bb%e4%b8%8d%e8%a6%81%e6%b7%b7%e5%9c%a8%e4%b8%80%e8%b5%b7%e6%af%94" class="header-anchor"&gt;&lt;/a&gt;0.2 四类玩家坐标系：不要混在一起比&#10;&lt;/h3&gt;&lt;p&gt;市面上&amp;quot;大模型安全护栏&amp;quot;相关方案看似几十款，实则分属四个完全不同的层，&lt;strong&gt;跨层比较没有意义&lt;/strong&gt;——就像不能拿&amp;quot;安检流程调度中心&amp;quot;和&amp;quot;X 光机&amp;quot;比谁更好：&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;&#10;&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt" id="hl-1-1"&gt;&lt;a class="lnlinks" href="#hl-1-1"&gt; 1&lt;/a&gt;&#10;&lt;/span&gt;&lt;span class="lnt" id="hl-1-2"&gt;&lt;a class="lnlinks" href="#hl-1-2"&gt; 2&lt;/a&gt;&#10;&lt;/span&gt;&lt;span class="lnt" id="hl-1-3"&gt;&lt;a class="lnlinks" href="#hl-1-3"&gt; 3&lt;/a&gt;&#10;&lt;/span&gt;&lt;span class="lnt" id="hl-1-4"&gt;&lt;a class="lnlinks" href="#hl-1-4"&gt; 4&lt;/a&gt;&#10;&lt;/span&gt;&lt;span class="lnt" id="hl-1-5"&gt;&lt;a class="lnlinks" href="#hl-1-5"&gt; 5&lt;/a&gt;&#10;&lt;/span&gt;&lt;span class="lnt" id="hl-1-6"&gt;&lt;a class="lnlinks" href="#hl-1-6"&gt; 6&lt;/a&gt;&#10;&lt;/span&gt;&lt;span class="lnt" id="hl-1-7"&gt;&lt;a class="lnlinks" href="#hl-1-7"&gt; 7&lt;/a&gt;&#10;&lt;/span&gt;&lt;span class="lnt" id="hl-1-8"&gt;&lt;a class="lnlinks" href="#hl-1-8"&gt; 8&lt;/a&gt;&#10;&lt;/span&gt;&lt;span class="lnt" id="hl-1-9"&gt;&lt;a class="lnlinks" href="#hl-1-9"&gt; 9&lt;/a&gt;&#10;&lt;/span&gt;&lt;span class="lnt" id="hl-1-10"&gt;&lt;a class="lnlinks" href="#hl-1-10"&gt;10&lt;/a&gt;&#10;&lt;/span&gt;&lt;span class="lnt" id="hl-1-11"&gt;&lt;a class="lnlinks" href="#hl-1-11"&gt;11&lt;/a&gt;&#10;&lt;/span&gt;&lt;span class="lnt" id="hl-1-12"&gt;&lt;a class="lnlinks" href="#hl-1-12"&gt;12&lt;/a&gt;&#10;&lt;/span&gt;&lt;span class="lnt" id="hl-1-13"&gt;&lt;a class="lnlinks" href="#hl-1-13"&gt;13&lt;/a&gt;&#10;&lt;/span&gt;&lt;span class="lnt" id="hl-1-14"&gt;&lt;a class="lnlinks" href="#hl-1-14"&gt;14&lt;/a&gt;&#10;&lt;/span&gt;&lt;span class="lnt" id="hl-1-15"&gt;&lt;a class="lnlinks" href="#hl-1-15"&gt;15&lt;/a&gt;&#10;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&#10;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 「大模型安全护栏」市场全景（四类玩家）&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ┌──────────────────┬──────────────────┬──────────────────┬──────────────────┐&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; │ ① 编排框架 │ ② 检测模型 │ ③ 商用护栏 API │ ④ 红队评测工具 │&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; │ （调度中心） │ （检测仪器） │ （外包安检公司） │ （演习部队） │&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ├──────────────────┼──────────────────┼──────────────────┼──────────────────┤&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; │ JoySafety │ Llama Guard 4 │ 阿里云AI安全护栏 │ garak │&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; │ NeMo Guardrails │ Prompt Guard 2 │ 网易易盾 │ PyRIT │&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; │ Guardrails AI │ ShieldGemma 2 │ 腾讯云天御 │ Promptfoo │&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; │ LLM Guard │ Granite Guardian │ 百度/华为云 │ │&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; │ Rebuff │ WildGuard │ Azure/AWS/Lakera │ │&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ├──────────────────┼──────────────────┼──────────────────┼──────────────────┤&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; │ 决定&amp;#34;检测能力怎么 │ 决定&amp;#34;单点判得准不 │ 买服务，按量付费 │ 决定&amp;#34;防线漏不漏&amp;#34; │&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; │ 组合、怎么流转&amp;#34; │ 准&amp;#34;，是被编排的料 │ 省心但数据出域 │ 离线评测，不在线 │&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; │ │ （→ 见 14 篇） │ │ 拦截（→ 见 15 篇）│&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; └──────────────────┴──────────────────┴──────────────────┴──────────────────┘&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&lt;p&gt;三条认知结论：&lt;/p&gt;&#10;&lt;ol&gt;&#10;&lt;li&gt;&lt;strong&gt;模型是被编排的&amp;quot;料&amp;quot;，框架是&amp;quot;厨子&amp;quot;&lt;/strong&gt;。Llama Guard 4、Prompt Guard 2 这类检测模型的正确用法是包装成原子能力接进编排框架——14 篇就做这个实验，本篇不比模型。&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;红队工具不在请求链路上&lt;/strong&gt;。garak/PyRIT 是离线&amp;quot;演习部队&amp;quot;，负责量化拦截率、反哺策略，本篇同样不展开（15 篇专讲）。&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;本篇的对比范围&lt;/strong&gt;：①编排框架（开源，与 JoySafety 同层，逐源码级对比）+ ③商用护栏 API（采购视角对比）。&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&#10; &lt;blockquote&gt;&#10; &lt;p&gt;业界同样强调&amp;quot;分层不要混比&amp;quot;：NeMo 管对话流、Guardrails AI 管输出契约、Llama Guard 管内容分类，&amp;ldquo;生产答案很少是单一工具，而是分层组合&amp;rdquo;（&lt;a href="https://particula.tech/blog/ai-guardrails-compared-nemo-guardrails-ai-llama-guard" target="_blank" rel="noopener noreferrer" class="external-link"&gt;particula.tech&lt;span class="external-icon"&gt;↗&lt;/span&gt;&lt;/a&gt;）；&amp;ldquo;约 80% 的企业级护栏本质是 regex + 几个分类器的封装，关键在于你把栅栏放在哪一层&amp;rdquo;（&lt;a href="https://cloudthrill.ca/llm-guardrail-solutions" target="_blank" rel="noopener noreferrer" class="external-link"&gt;cloudthrill.ca&lt;span class="external-icon"&gt;↗&lt;/span&gt;&lt;/a&gt;）。&lt;/p&gt;&#10;&#10; &lt;/blockquote&gt;&#10;&lt;h3 id="03-2025-并购潮选型前先看项目还活着吗"&gt;&lt;a href="#03-2025-%e5%b9%b6%e8%b4%ad%e6%bd%ae%e9%80%89%e5%9e%8b%e5%89%8d%e5%85%88%e7%9c%8b%e9%a1%b9%e7%9b%ae%e8%bf%98%e6%b4%bb%e7%9d%80%e5%90%97" class="header-anchor"&gt;&lt;/a&gt;0.3 2025 并购潮：选型前先看&amp;quot;项目还活着吗&amp;quot;&#10;&lt;/h3&gt;&lt;p&gt;2025 年 AI 安全赛道被传统安全厂商密集收购，直接影响开源项目的存续性，这是 2026 年选型必须先看的一栏：&lt;/p&gt;&#10;&lt;table&gt;&#10;&#9;&lt;thead&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;时间&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;事件&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;对开源项目的影响&lt;/th&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/thead&gt;&#10;&#9;&lt;tbody&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;2025-06&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Snyk 收购 Invariant Labs（MCP/Agent 安全研究方）&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;研究力量被收编（&lt;a href="https://datapace.ai/blog/alice-activefence-agent-security-consolidation" target="_blank" rel="noopener noreferrer" class="external-link"&gt;datapace&lt;span class="external-icon"&gt;↗&lt;/span&gt;&lt;/a&gt;）&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;2025-07&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Palo Alto Networks 完成收购 Protect AI（据报道超 5 亿美元，另有口径称近 7 亿）并入 Prisma AIRS&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;LLM Guard 仓库已归档&lt;/strong&gt;（最后提交 2026-07-08，GitHub API 实测 &lt;code&gt;archived: true&lt;/code&gt;）；Rebuff 更早归档（最后提交 2024-08-07）（&lt;a href="https://senthex.com/en/llm-guard-alternatives/" target="_blank" rel="noopener noreferrer" class="external-link"&gt;senthex&lt;span class="external-icon"&gt;↗&lt;/span&gt;&lt;/a&gt;、&lt;a href="https://www.deepinspect.ai/blog/robust-intelligence-alternatives" target="_blank" rel="noopener noreferrer" class="external-link"&gt;deepinspect&lt;span class="external-icon"&gt;↗&lt;/span&gt;&lt;/a&gt;）&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;2025-09/10&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Check Point 收购 Lakera（据报道约 3 亿美元，9 月宣布、10 月完成）&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Lakera Guard 并入 Check Point Infinity（&lt;a href="https://senthex.com/en/lakera-alternatives/" target="_blank" rel="noopener noreferrer" class="external-link"&gt;senthex&lt;span class="external-icon"&gt;↗&lt;/span&gt;&lt;/a&gt;）&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;2025-08/09&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;SentinelOne 收购 Prompt Security（据报道约 2.5 亿美元）&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;独立厂商再少一家（&lt;a href="https://agentswarms.fyi/blog/top-ai-agent-firewalls-comparison" target="_blank" rel="noopener noreferrer" class="external-link"&gt;agentswarms&lt;span class="external-icon"&gt;↗&lt;/span&gt;&lt;/a&gt;）&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;p&gt;&lt;strong&gt;批注&lt;/strong&gt;：并购潮给选型两条启示——①商用 SaaS 护栏的独立 roadmap 基本都并入了大厂平台，买它就是买生态；②&lt;strong&gt;开源核心里&amp;quot;真正属于你&amp;quot;的部分，以仓库是否活跃为准&lt;/strong&gt;。本文对比表中专门设了&amp;quot;维护状态&amp;quot;一行：NeMo Guardrails（7112 stars，2026-09-11 仍有提交）与 Guardrails AI（7405 stars，2026-09-13 仍有提交）活跃；LLM Guard、Rebuff 已归档，只能当&amp;quot;机制标本&amp;quot;读，不宜作新项目的生产依赖（GitHub API 逐一核实，2026-09-14）。&lt;/p&gt;&#10;&lt;hr&gt;&#10;&lt;h2 id="一开源编排框架逐个分析"&gt;&lt;a href="#%e4%b8%80%e5%bc%80%e6%ba%90%e7%bc%96%e6%8e%92%e6%a1%86%e6%9e%b6%e9%80%90%e4%b8%aa%e5%88%86%e6%9e%90" class="header-anchor"&gt;&lt;/a&gt;一、开源编排框架逐个分析&#10;&lt;/h2&gt;&lt;h3 id="11-nemo-guardrailscolang-对话流五种-railsnvidiaapache-20"&gt;&lt;a href="#11-nemo-guardrailscolang-%e5%af%b9%e8%af%9d%e6%b5%81%e4%ba%94%e7%a7%8d-railsnvidiaapache-20" class="header-anchor"&gt;&lt;/a&gt;1.1 NeMo Guardrails：Colang 对话流，五种 rails（NVIDIA，Apache 2.0）&#10;&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;机制&lt;/strong&gt;：用专用 DSL（Colang）定义&amp;quot;对话流&amp;quot;，护栏挂在五个流水阶段上（&lt;a href="https://github.com/NVIDIA-NeMo/Guardrails" target="_blank" rel="noopener noreferrer" class="external-link"&gt;docs/仓库&lt;span class="external-icon"&gt;↗&lt;/span&gt;&lt;/a&gt;）：&lt;/p&gt;&#10;&lt;table&gt;&#10;&#9;&lt;thead&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Rail&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;触发时机&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;类比到 JoySafety&lt;/th&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/thead&gt;&#10;&#9;&lt;tbody&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;input rails&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;用户消息进 LLM 之前&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;用户输入侧 DAG 链（keyword→bert）&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;dialog rails&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;匹配意图、控制对话走向&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;无对应物&lt;/strong&gt;（JoySafety 不做对话管理）&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;retrieval rails&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;RAG 检索块进上下文之前&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;kb_search 节点有部分重叠&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;execution rails&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;工具调用（tool call）之前&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;无对应物&lt;/strong&gt;（见 4.2 短板 5）&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;output rails&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;模型输出到达用户之前&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;机器人输出侧 DAG 链&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;p&gt;&lt;strong&gt;关键事实&lt;/strong&gt;：最新版 0.24.0；Colang 1.0 仍是默认、2.0 并行支持（2.0 起支持多模态交互逻辑）（&lt;a href="https://github.com/NVIDIA-NeMo/Guardrails" target="_blank" rel="noopener noreferrer" class="external-link"&gt;GitHub 仓库说明&lt;span class="external-icon"&gt;↗&lt;/span&gt;&lt;/a&gt;）；GPU 下单次检查 &amp;lt;50ms，CPU 上要为 embedding/意图匹配留预算（&lt;a href="https://particula.tech/blog/ai-guardrails-compared-nemo-guardrails-ai-llama-guard" target="_blank" rel="noopener noreferrer" class="external-link"&gt;particula.tech&lt;span class="external-icon"&gt;↗&lt;/span&gt;&lt;/a&gt;）。&lt;/p&gt;&#10;&lt;p&gt;&lt;strong&gt;与 JoySafety 的本质差异在抽象层级&lt;/strong&gt;：&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;NeMo 的 rail 是&lt;strong&gt;对话语义级&lt;/strong&gt;编排（intent、flow、bot 该说什么不该说什么），groovy router 是&lt;strong&gt;检测结果级&lt;/strong&gt;编排（按 riskCode/概率阈值决定走哪个节点，&lt;code&gt;GroovyRouter.java:27&lt;/code&gt;）。一个是&amp;quot;对话该怎么进行&amp;quot;，一个是&amp;quot;检测结果该怎么处置&amp;quot;。&lt;/li&gt;&#10;&lt;li&gt;NeMo 的 execution rails 管工具调用，这是 Agent 时代的护城河；JoySafety 的 Function 注册表里没有这个维度——&lt;code&gt;FunctionRegistry.java:20-30&lt;/code&gt; 注册的 9 种 Function（dummy/keyword/single_label_pred/multi_label_pred/kb_search/rag_answer/multi_turn_detect/parallel/async）全部是&amp;quot;内容检测&amp;quot;语义，无一面向工具调用。&lt;/li&gt;&#10;&lt;li&gt;Colang 学习曲线陡、部署重；JoySafety 的 YAML + groovy 更&amp;quot;土&amp;quot;但贴近检测工程。&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h3 id="12-guardrails-ai输出结构--validator-生态apache-20-核心"&gt;&lt;a href="#12-guardrails-ai%e8%be%93%e5%87%ba%e7%bb%93%e6%9e%84--validator-%e7%94%9f%e6%80%81apache-20-%e6%a0%b8%e5%bf%83" class="header-anchor"&gt;&lt;/a&gt;1.2 Guardrails AI：输出结构 + validator 生态（Apache 2.0 核心）&#10;&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;机制&lt;/strong&gt;：把校验器（validator）挂在模型调用的输入/输出上，校验失败可选 raise / 过滤 / &lt;strong&gt;re-ask&lt;/strong&gt;（让模型自我修正重答）。Hub 上约 65 个社区 validator（PII、毒性、竞品提及、JSON schema、SQL 安全……），质量参差；RAIL spec 用 XML 描述输出契约；0.5+ 起提供 server mode（&lt;a href="https://cloudthrill.ca/llm-guardrail-solutions" target="_blank" rel="noopener noreferrer" class="external-link"&gt;cloudthrill.ca&lt;span class="external-icon"&gt;↗&lt;/span&gt;&lt;/a&gt;、&lt;a href="https://myengineeringpath.dev/genai-engineer/ai-guardrails/" target="_blank" rel="noopener noreferrer" class="external-link"&gt;myengineerpath&lt;span class="external-icon"&gt;↗&lt;/span&gt;&lt;/a&gt;）。&lt;/p&gt;&#10;&lt;p&gt;&lt;strong&gt;值得注意的两个细节&lt;/strong&gt;：&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;它的 PII validator 底层调的是微软 Presidio——&lt;strong&gt;这个生态是互相套娃的&lt;/strong&gt;，PII 检测大家都复用同一个轮子（&lt;a href="https://cloudthrill.ca/llm-guardrail-solutions" target="_blank" rel="noopener noreferrer" class="external-link"&gt;cloudthrill.ca&lt;span class="external-icon"&gt;↗&lt;/span&gt;&lt;/a&gt;）。&lt;/li&gt;&#10;&lt;li&gt;单次校验 50~200ms（regex 类便宜、模型类贵），多个 validator 串联时延迟叠加，实践上要&amp;quot;便宜的先跑、命中即短路&amp;quot;（&lt;a href="https://particula.tech/blog/ai-guardrails-compared-nemo-guardrails-ai-llama-guard" target="_blank" rel="noopener noreferrer" class="external-link"&gt;particula.tech&lt;span class="external-icon"&gt;↗&lt;/span&gt;&lt;/a&gt;）——这与 JoySafety 演示策略&amp;quot;keyword 粗筛先行、bert 精检殿后&amp;quot;（&lt;code&gt;docs/strategy_example.yml&lt;/code&gt;）是同一个工程直觉。&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;&lt;strong&gt;与 JoySafety 的差异&lt;/strong&gt;：Guardrails AI 的核心价值是&lt;strong&gt;输出结构校验&lt;/strong&gt;（合法 JSON、字段约束、grounding），这个维度 JoySafety 完全没有——&lt;code&gt;RiskCheckType.java:14-63&lt;/code&gt; 的 10 种检测类型里没有&amp;quot;结构/schema 校验&amp;quot;类目。反过来 Guardrails AI 不管对话流、不管异步审核、不管中文内容合规。&lt;/p&gt;&#10;&lt;h3 id="13-llm-guardscanner-矩阵protect-aimit-已归档"&gt;&lt;a href="#13-llm-guardscanner-%e7%9f%a9%e9%98%b5protect-aimit-%e5%b7%b2%e5%bd%92%e6%a1%a3" class="header-anchor"&gt;&lt;/a&gt;1.3 LLM Guard：scanner 矩阵（Protect AI，MIT，⚠️ 已归档）&#10;&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;机制&lt;/strong&gt;：LLM 专用 WAF，固定清单的 scanner 矩阵——15 个输入 scanner + 20 个输出 scanner，全部跑本地 HuggingFace 小模型，毫秒级（&lt;a href="https://cloudthrill.ca/llm-guardrail-solutions" target="_blank" rel="noopener noreferrer" class="external-link"&gt;cloudthrill.ca&lt;span class="external-icon"&gt;↗&lt;/span&gt;&lt;/a&gt;）：&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;&#10;&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt" id="hl-2-1"&gt;&lt;a class="lnlinks" href="#hl-2-1"&gt;1&lt;/a&gt;&#10;&lt;/span&gt;&lt;span class="lnt" id="hl-2-2"&gt;&lt;a class="lnlinks" href="#hl-2-2"&gt;2&lt;/a&gt;&#10;&lt;/span&gt;&lt;span class="lnt" id="hl-2-3"&gt;&lt;a class="lnlinks" href="#hl-2-3"&gt;3&lt;/a&gt;&#10;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&#10;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;输入侧：PromptInjection / Jailbreak / Secrets / InvisibleText / BanTopics ...&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;输出侧：Toxicity / MaliciousURLs / NoRefusal / FactualConsistency ...&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;特色：Anonymize/Deanonymize —— PII 检测+脱敏+还原（底层同样是 Presidio 系）&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;与 JoySafety 对照出的能力空洞&lt;/strong&gt;：scanner 矩阵里 &lt;strong&gt;注入 / PII / secrets / 匿名化&lt;/strong&gt; 四块，JoySafety 只有注入（bert_prompt_injection 模型）。全仓 grep &lt;code&gt;PII|脱敏|身份证|手机号&lt;/code&gt;，命中的只有 bge tokenizer 词表文件，没有任何业务代码——&lt;strong&gt;PII 和 secrets 防泄露是 JoySafety 完全缺席的两个专项&lt;/strong&gt;（4.2 短板 2）。&lt;/p&gt;&#10;&lt;p&gt;&lt;strong&gt;存续警告&lt;/strong&gt;：Protect AI 被 Palo Alto 收购后，&lt;a href="https://github.com/protectai/llm-guard" target="_blank" rel="noopener noreferrer" class="external-link"&gt;LLM Guard 仓库已归档&lt;span class="external-icon"&gt;↗&lt;/span&gt;&lt;/a&gt;（GitHub API 实测 &lt;code&gt;archived: true&lt;/code&gt;，最后提交 2026-07-08），社区出现&amp;quot;&lt;a href="https://senthex.com/en/llm-guard-alternatives/" target="_blank" rel="noopener noreferrer" class="external-link"&gt;用什么替代已归档的 LLM Guard&lt;span class="external-icon"&gt;↗&lt;/span&gt;&lt;/a&gt;&amp;ldquo;一类文章。代码仍可自托管（MIT），但检测能力已停止进化——&lt;strong&gt;当机制标本读，别当新项目依赖用&lt;/strong&gt;。&lt;/p&gt;&#10;&lt;h3 id="14-rebuff注入检测四层-已归档的-prototype"&gt;&lt;a href="#14-rebuff%e6%b3%a8%e5%85%a5%e6%a3%80%e6%b5%8b%e5%9b%9b%e5%b1%82-%e5%b7%b2%e5%bd%92%e6%a1%a3%e7%9a%84-prototype" class="header-anchor"&gt;&lt;/a&gt;1.4 Rebuff：注入检测四层（⚠️ 已归档的 prototype）&#10;&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;机制&lt;/strong&gt;：单点做深&amp;quot;提示词注入&amp;quot;一件事，四层防御（&lt;a href="https://github.com/protectai/rebuff" target="_blank" rel="noopener noreferrer" class="external-link"&gt;Rebuff 仓库&lt;span class="external-icon"&gt;↗&lt;/span&gt;&lt;/a&gt;）：&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;&#10;&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt" id="hl-3-1"&gt;&lt;a class="lnlinks" href="#hl-3-1"&gt;1&lt;/a&gt;&#10;&lt;/span&gt;&lt;span class="lnt" id="hl-3-2"&gt;&lt;a class="lnlinks" href="#hl-3-2"&gt;2&lt;/a&gt;&#10;&lt;/span&gt;&lt;span class="lnt" id="hl-3-3"&gt;&lt;a class="lnlinks" href="#hl-3-3"&gt;3&lt;/a&gt;&#10;&lt;/span&gt;&lt;span class="lnt" id="hl-3-4"&gt;&lt;a class="lnlinks" href="#hl-3-4"&gt;4&lt;/a&gt;&#10;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&#10;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;1. Heuristics 启发式：恶意特征快速过滤，挡在 LLM 之前&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;2. LLM-based detection：专用 LLM 分析输入是否攻击&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;3. VectorDB：历史攻击样本的 embedding 入库，相似攻击直接识别（自强化）&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;4. Canary tokens：给 prompt 埋金丝雀词，输出里检出即说明系统提示词已泄露&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;架构启示&lt;/strong&gt;（即便项目死了，思想值得吸收）：&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;第 3 层&amp;quot;攻击样本向量化、以史鉴今&amp;quot;与 JoySafety 的&amp;quot;红线知识库 + kb_search&amp;rdquo;（07 篇）是同构思路——都是&lt;strong&gt;用向量检索把历史风险资产化&lt;/strong&gt;；&lt;/li&gt;&#10;&lt;li&gt;第 4 层 canary token 是独有的&amp;quot;泄露探针&amp;quot;机制，JoySafety 与主流框架都没有对应物。&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;&lt;strong&gt;存续警告&lt;/strong&gt;：仓库&lt;a href="https://github.com/protectai/rebuff" target="_blank" rel="noopener noreferrer" class="external-link"&gt;已归档&lt;span class="external-icon"&gt;↗&lt;/span&gt;&lt;/a&gt;（最后提交 2024-08-07，1522 stars），README 自述&amp;quot;still a prototype, cannot provide 100% protection&amp;quot;；自托管还依赖 Pinecone + Supabase + OpenAI 三件套。典型教训：&lt;strong&gt;prototype 级项目不能进生产&lt;/strong&gt;。&lt;/p&gt;&#10;&lt;h3 id="15-五方对比表同层横评"&gt;&lt;a href="#15-%e4%ba%94%e6%96%b9%e5%af%b9%e6%af%94%e8%a1%a8%e5%90%8c%e5%b1%82%e6%a8%aa%e8%af%84" class="header-anchor"&gt;&lt;/a&gt;1.5 五方对比表（同层横评）&#10;&lt;/h3&gt;&lt;table&gt;&#10;&#9;&lt;thead&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;维度&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;&lt;strong&gt;JoySafety&lt;/strong&gt;&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;NeMo Guardrails&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Guardrails AI&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;LLM Guard&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Rebuff&lt;/th&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/thead&gt;&#10;&#9;&lt;tbody&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;抽象层级&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;检测流水线编排（DAG）&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;对话流编排（5 rails）&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;输出契约校验（validators）&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;扫描器矩阵（固定清单）&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;注入检测四层（固定）&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;策略表达&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;YAML 节点 + groovy router&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Colang DSL&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Python 组合 / RAIL&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;配置开关&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;无（写死）&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;编排灵活度&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;高（分支/并行/归约，但&amp;quot;DAG&amp;quot;实为链式逐跳，&lt;code&gt;FunctionExecutorImpl.java:289&lt;/code&gt;）&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;高（对话语义级）&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;中（链式组合）&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;低&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;低&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;异步/流式支持&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;✅ &lt;strong&gt;free_taxi 独有&lt;/strong&gt;（&lt;code&gt;ResponseMode.java:16&lt;/code&gt;）&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;同步为主&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;同步&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;同步&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;同步&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;中文能力&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;✅ 原生（中文语料训练的 bert + 中文敏感词体系）&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;依赖底层 LLM，英文为主&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;依赖 validator 模型，英文为主&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;英文为主&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;英文为主&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;私有化&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;✅ 全组件自托管（含向量库/embedding 全本地）&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;✅&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;✅（另有付费 Pro 托管层）&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;✅（MIT）&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;△ 依赖 Pinecone/Supabase/OpenAI&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;生产验证证据&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;京东日均亿级调用、95%+ 攻击拦截率（README.md:23）&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;NVIDIA 生态、Fortune 500 采用（&lt;a href="https://cloudthrill.ca/llm-guardrail-solutions" target="_blank" rel="noopener noreferrer" class="external-link"&gt;cloudthrill&lt;span class="external-icon"&gt;↗&lt;/span&gt;&lt;/a&gt;）&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Hub 社区规模&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;已并入 Prisma AIRS&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;无，自述 prototype&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;维护状态（2026-09 实测）&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;活跃&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;活跃（0.24.0）&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;活跃&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;❌ 已归档&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;❌ 已归档&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;输出结构校验&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;❌&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;△&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;✅ 核心能力&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;❌&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;❌&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;PII/secrets 专项&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;❌（grep 无业务代码）&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;△（依赖集成）&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;✅（Presidio 系）&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;✅ 专项 scanner&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;❌&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Agent/工具调用防护&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;❌&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;✅ execution rails&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;△&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;❌&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;❌&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;p&gt;&lt;strong&gt;读表结论&lt;/strong&gt;：五个框架不全是&amp;quot;竞品&amp;quot;——NeMo 强在对话流与 Agent 闸门、Guardrails AI 强在输出契约、LLM Guard/Rebuff 是固定能力的扫描器。JoySafety 在&lt;strong&gt;异步流式、中文、私有化、生产证据&lt;/strong&gt;四行独占优势；在&lt;strong&gt;输出结构、PII、Agent 防护&lt;/strong&gt;三行明显空白——这就是第四章短板清单的来源。&lt;/p&gt;&#10;&lt;hr&gt;&#10;&lt;h2 id="二商用护栏-api-对比"&gt;&lt;a href="#%e4%ba%8c%e5%95%86%e7%94%a8%e6%8a%a4%e6%a0%8f-api-%e5%af%b9%e6%af%94" class="header-anchor"&gt;&lt;/a&gt;二、商用护栏 API 对比&#10;&lt;/h2&gt;&lt;p&gt;商用 API 与开源框架不是&amp;quot;谁替代谁&amp;quot;的关系：&lt;strong&gt;商用卖的是&amp;quot;检测能力即服务&amp;quot;（含合规背书与审计链路），开源框架卖的是&amp;quot;编排自主权&amp;quot;&lt;/strong&gt;。数据能不能出域，是第一道分水岭。&lt;/p&gt;&#10;&lt;h3 id="21-国内跟着云生态和内容治理走"&gt;&lt;a href="#21-%e5%9b%bd%e5%86%85%e8%b7%9f%e7%9d%80%e4%ba%91%e7%94%9f%e6%80%81%e5%92%8c%e5%86%85%e5%ae%b9%e6%b2%bb%e7%90%86%e8%b5%b0" class="header-anchor"&gt;&lt;/a&gt;2.1 国内：跟着云生态和内容治理走&#10;&lt;/h3&gt;&lt;table&gt;&#10;&#9;&lt;thead&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;产品&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;定位与特色&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;来源&lt;/th&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/thead&gt;&#10;&#9;&lt;tbody&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;阿里云 AI 安全护栏&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;2025-09 云栖大会发布，五项能力：&lt;strong&gt;内容合规、敏感数据、提示词攻击、恶意文件/URL、数字水印标识&lt;/strong&gt;；与百炼、WAF（LLM-WAF）一键集成；覆盖图文音视文档多模态&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;a href="https://www.admin5.com/article/20250925/1052208.shtml" target="_blank" rel="noopener noreferrer" class="external-link"&gt;admin5&lt;span class="external-icon"&gt;↗&lt;/span&gt;&lt;/a&gt;、&lt;a href="https://www.aliyun.com/product/content-moderation/guardrail" target="_blank" rel="noopener noreferrer" class="external-link"&gt;产品页&lt;span class="external-icon"&gt;↗&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;网易易盾&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&amp;ldquo;AI 生成内容识别 + 大模型输入输出安全 + 多模态审核 + 风险处置&amp;quot;全链路治理；&lt;strong&gt;GB/T 45654-2025《网络安全技术 生成式人工智能服务安全基本要求》核心起草单位&lt;/strong&gt;；公开客户含招商银行、人民网等；显式标识（OCR/ASR/元数据/水印解析）+ 隐式生成痕迹双路识别&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;a href="https://www.sohu.com/a/1065483405_122066452" target="_blank" rel="noopener noreferrer" class="external-link"&gt;sohu 六款对比&lt;span class="external-icon"&gt;↗&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;腾讯云天御&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;UGC+AIGC 混合业务的多模态审核（文本/图/音/视频/直播）+ AI 生成鉴别；另有腾讯云 WAF 大模型安全走&amp;quot;流量层+应用层&amp;quot;边界视角&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;a href="https://www.sohu.com/a/1065483405_122066452" target="_blank" rel="noopener noreferrer" class="external-link"&gt;sohu&lt;span class="external-icon"&gt;↗&lt;/span&gt;&lt;/a&gt;、&lt;a href="https://www.cnblogs.com/AI-DATA-SEC/p/19188283" target="_blank" rel="noopener noreferrer" class="external-link"&gt;cnblogs&lt;span class="external-icon"&gt;↗&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;百度智能云 AI 安全护栏&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;特色是把安全范围延伸到 &lt;strong&gt;Agent 运行链路&lt;/strong&gt;（工具调用、任务执行），传统审核能力（司南）继续覆盖图文音视频&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;a href="https://www.sohu.com/a/1065483405_122066452" target="_blank" rel="noopener noreferrer" class="external-link"&gt;sohu&lt;span class="external-icon"&gt;↗&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;华为云 ModelArts Guard&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;围绕 ModelArts/盘古的&amp;quot;训练-部署-运行&amp;quot;闭环治理，平台内一致性&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;a href="https://www.cnblogs.com/AI-DATA-SEC/p/19188283" target="_blank" rel="noopener noreferrer" class="external-link"&gt;cnblogs&lt;span class="external-icon"&gt;↗&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;p&gt;&lt;strong&gt;背景政策锚点&lt;/strong&gt;：《人工智能生成合成内容标识办法》自 &lt;strong&gt;2025-09-01&lt;/strong&gt; 起施行，要求 AI 生成的图片/音频/视频等添加显式标识及隐式标识（元数据/数字水印）——国内商用护栏集体上线&amp;quot;内容标识/水印&amp;quot;能力就是应此规，而 JoySafety 在该维度为零（4.2 短板 6）（&lt;a href="https://help.aliyun.com/zh/document_detail/2872706.html" target="_blank" rel="noopener noreferrer" class="external-link"&gt;阿里云文档&lt;span class="external-icon"&gt;↗&lt;/span&gt;&lt;/a&gt;）。&lt;/p&gt;&#10;&lt;h3 id="22-海外注入检测与幻觉校验是卖点"&gt;&lt;a href="#22-%e6%b5%b7%e5%a4%96%e6%b3%a8%e5%85%a5%e6%a3%80%e6%b5%8b%e4%b8%8e%e5%b9%bb%e8%a7%89%e6%a0%a1%e9%aa%8c%e6%98%af%e5%8d%96%e7%82%b9" class="header-anchor"&gt;&lt;/a&gt;2.2 海外：注入检测与幻觉校验是卖点&#10;&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;Azure AI Content Safety&lt;/strong&gt;：招牌能力 &lt;strong&gt;Prompt Shields 把两类注入分开检&lt;/strong&gt;——&lt;code&gt;Prompt Shields for User Prompts&lt;/code&gt; 检直接注入/越狱（用户输入侧），&lt;code&gt;Prompt Shields for Documents&lt;/code&gt; 检间接注入（RAG 文档、第三方内容里埋的攻击载荷，覆盖篡改内容、信息探测、编码绕过、角色扮演等类别）（&lt;a href="https://learn.microsoft.com/en-us/azure/ai-services/content-safety/concepts/jailbreak-detection" target="_blank" rel="noopener noreferrer" class="external-link"&gt;Microsoft Learn&lt;span class="external-icon"&gt;↗&lt;/span&gt;&lt;/a&gt;、&lt;a href="https://azure.microsoft.com/en-us/blog/enhance-ai-security-with-azure-prompt-shields-and-azure-ai-content-safety/" target="_blank" rel="noopener noreferrer" class="external-link"&gt;Azure Blog&lt;span class="external-icon"&gt;↗&lt;/span&gt;&lt;/a&gt;）。另有 Groundedness Detection（回答是否能在参考资料中找到依据，治幻觉）与受保护材料检测。&lt;/p&gt;&#10;&#10; &lt;blockquote&gt;&#10; &lt;p&gt;对照 JoySafety：&lt;code&gt;bert_prompt_injection&lt;/code&gt; 模型不区分直接/间接注入（事实上框架拿不到&amp;quot;哪段文本来自外部文档&amp;quot;的结构化输入，入参就是一段 plain text）。Azure 的拆法提示：&lt;strong&gt;间接注入检测的前提是编排层知道数据来源&lt;/strong&gt;——这是 JoySafety 若要做深注入防护需要补的上下文设计。&lt;/p&gt;&#10;&#10; &lt;/blockquote&gt;&#10;&lt;p&gt;&lt;strong&gt;AWS Bedrock Guardrails&lt;/strong&gt;：模块化策略包，六大策略类型——Content Filters（有害内容分类）、Denied Topics（禁止话题）、Word Filters（词表）、Sensitive Information Filters（PII 检测/遮蔽）、Prompt Attack（注入/越狱）、Contextual Grounding Checks（回答与参考资料一致性）；2024 起陆续叠加 &lt;strong&gt;Automated Reasoning&lt;/strong&gt; 策略（宣称在策略定义域内 99% 校验准确率，2025-11 新增从策略文档自动生成测试问答对）（&lt;a href="https://kodekloud.com/blog/securing-amazon-bedrock-and-sagemaker-endpoints-a-practitioners-guide/" target="_blank" rel="noopener noreferrer" class="external-link"&gt;KodeKloud&lt;span class="external-icon"&gt;↗&lt;/span&gt;&lt;/a&gt;、&lt;a href="https://techjacksolutions.com/ai-tools/aws/what-is-bedrock-guardrails/" target="_blank" rel="noopener noreferrer" class="external-link"&gt;techjacksolutions&lt;span class="external-icon"&gt;↗&lt;/span&gt;&lt;/a&gt;）。最大卖点是&lt;strong&gt;跨模型统一策略&lt;/strong&gt;：一套 guardrail 套在 Bedrock 上所有基础模型外面。&lt;/p&gt;&#10;&lt;p&gt;&lt;strong&gt;Lakera Guard&lt;/strong&gt;：注入检测专项冠军——背靠 Gandalf 游戏的对抗数据集（Check Point 公告口径超 8000 万条对抗样本），公开基准 PINT，约 50ms 延迟、100+ 语言；2025-10 起归 Check Point（&lt;a href="https://senthex.com/en/lakera-alternatives/" target="_blank" rel="noopener noreferrer" class="external-link"&gt;senthex&lt;span class="external-icon"&gt;↗&lt;/span&gt;&lt;/a&gt;、&lt;a href="https://cloudthrill.ca/llm-guardrail-solutions" target="_blank" rel="noopener noreferrer" class="external-link"&gt;cloudthrill&lt;span class="external-icon"&gt;↗&lt;/span&gt;&lt;/a&gt;）。代价：SaaS 形态下 prompt 要出域。&lt;/p&gt;&#10;&lt;h3 id="23-商用对比表--具备不具备未公开"&gt;&lt;a href="#23-%e5%95%86%e7%94%a8%e5%af%b9%e6%af%94%e8%a1%a8--%e5%85%b7%e5%a4%87%e4%b8%8d%e5%85%b7%e5%a4%87%e6%9c%aa%e5%85%ac%e5%bc%80" class="header-anchor"&gt;&lt;/a&gt;2.3 商用对比表（√/×/— = 具备/不具备/未公开）&#10;&lt;/h3&gt;&lt;table&gt;&#10;&#9;&lt;thead&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;产品&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;多模态&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;敏感数据防泄露&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;合规审计&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;内容标识/水印&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;私有化&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;计费&lt;/th&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/thead&gt;&#10;&#9;&lt;tbody&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;阿里云 AI 安全护栏&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;✅ 图文音视文档&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;✅ 敏感数据检测&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;云内日志归档&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;✅ 数字水印标识（五项能力之一）&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;公有云/专有云&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;按量付费 + 资源包 + QPS 扩容包（&lt;a href="https://help.aliyun.com/zh/document_detail/2573826.html" target="_blank" rel="noopener noreferrer" class="external-link"&gt;计费文档&lt;span class="external-icon"&gt;↗&lt;/span&gt;&lt;/a&gt;）&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;网易易盾&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;✅ + AI 生成鉴别&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;✅&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;✅ 投诉/审计/人工复核链路，国标起草背书&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;✅ 显式+隐式标识检测&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;—&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;商用报价&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;腾讯云天御&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;✅ 图文音视直播&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;✅&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;云内&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;✅ AI 生成鉴别&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;—&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;按量&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;百度智能云&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;✅ + Agent 链路&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;✅&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;云内&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;—&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;—&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;按量&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;华为云 ModelArts Guard&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;✅ 多场景&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;✅&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;平台流水&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;—&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;公有/专有&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;平台计费&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Azure AI Content Safety&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;文本/图片&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;✅&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Azure 生态&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;△（受保护材料检测，非 AIGC 标识）&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;公有云&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;按量&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;AWS Bedrock Guardrails&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;文本/图片&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;✅ PII 过滤器&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;CloudTrail&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;❌&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;公有云&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;内容过滤 $0.15/千文本单元（2024-12 降价 80% 后）（&lt;a href="https://techjacksolutions.com/ai-tools/aws/what-is-bedrock-guardrails/" target="_blank" rel="noopener noreferrer" class="external-link"&gt;techjacksolutions&lt;span class="external-icon"&gt;↗&lt;/span&gt;&lt;/a&gt;）&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Lakera Guard&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;文本为主&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;△&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;企业版&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;❌&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;SaaS 为主（企业版可自托管，&lt;a href="https://senthex.com/en/lakera-alternatives/" target="_blank" rel="noopener noreferrer" class="external-link"&gt;senthex&lt;span class="external-icon"&gt;↗&lt;/span&gt;&lt;/a&gt;）&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;按调用/报价&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;p&gt;&lt;strong&gt;读表结论&lt;/strong&gt;：①&amp;quot;内容标识/水印&amp;quot;是&lt;strong&gt;国内特色需求&lt;/strong&gt;（监管驱动），海外产品基本不做；②国内云护栏的优势是生态集成与合规审计，海外（Azure/AWS/Lakera）的优势是注入检测与幻觉校验的技术纵深；③&lt;strong&gt;商用 API 的共同软肋是数据出域&lt;/strong&gt;——金融/政企场景这一条就是否决项，恰是 JoySafety 这类私有化框架的存在理由。&lt;/p&gt;&#10;&lt;hr&gt;&#10;&lt;h2 id="三选型决策矩阵"&gt;&lt;a href="#%e4%b8%89%e9%80%89%e5%9e%8b%e5%86%b3%e7%ad%96%e7%9f%a9%e9%98%b5" class="header-anchor"&gt;&lt;/a&gt;三、选型决策矩阵&#10;&lt;/h2&gt;&lt;p&gt;选型不是&amp;quot;选最好的&amp;rdquo;，是&amp;quot;按场景选组合&amp;quot;。下表给场景 × 需求 → 推荐组合：&lt;/p&gt;&#10;&lt;table&gt;&#10;&#9;&lt;thead&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;场景&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;核心需求&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;推荐组合&lt;/th&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/thead&gt;&#10;&#9;&lt;tbody&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;国内大模型客服/导购/办公助手&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;中文、纯文本、数据不出域、合规处置&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;JoySafety 自研编排&lt;/strong&gt; + 自带 bert/敏感词/知识库纵深防御；PII 需求用 09 篇方法自接 Presidio 类能力&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;英文对话产品，话题边界与工具调用管控&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;对话流 + Agent 闸门&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;NeMo Guardrails&lt;/strong&gt;（前置可叠加扫描器层）&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;结构化输出场景（JSON/表单/代码生成）&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;输出契约&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;Guardrails AI&lt;/strong&gt; validators&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;用户可能粘贴敏感数据进共享模型端点&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;PII 检测与脱敏&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Presidio（或 LLM Guard 思路自研，注意其已归档）&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;UGC+AIGC 内容平台&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;多模态审核 + AI 生成标识&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;网易易盾 / 腾讯云天御&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;已深度绑定某朵云&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;集成成本最低&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;对应云原生护栏（阿里云/AWS Bedrock/Azure）&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;全球化英文 SaaS，注入是头号风险且接受数据出域&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;注入检出率&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;Lakera Guard&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;金融/政务/医疗高合规&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;审计留痕 + 私有化 + 国标对齐&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;JoySafety 私有化&lt;/strong&gt;为底座 + 商用私有化能力补强（标识/审计）&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;任何上生产的方案&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;持续量化拦截率&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;叠加红队评测（garak/PyRIT/Promptfoo，15 篇）——&lt;strong&gt;护栏决定&amp;quot;防不防&amp;quot;，红队决定&amp;quot;知不知道漏没漏&amp;quot;&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;p&gt;&lt;strong&gt;组合而非单选&lt;/strong&gt;是业界共识：particula.tech 给出的生产栈是&amp;quot;LLM Guard 前置粗扫 → NeMo 对话轨 → Llama Guard 分类 → Guardrails AI 输出校验&amp;quot;四层串行（&lt;a href="https://particula.tech/blog/ai-guardrails-compared-nemo-guardrails-ai-llama-guard" target="_blank" rel="noopener noreferrer" class="external-link"&gt;来源&lt;span class="external-icon"&gt;↗&lt;/span&gt;&lt;/a&gt;）；国内选型文同样强调&amp;quot;流式检测 + 细粒度权限 + 全链路审计&amp;quot;的基本盘与&amp;quot;拦截率/延迟/误杀率&amp;quot;三元指标（&lt;a href="https://www.cnblogs.com/AI-DATA-SEC/p/19188283" target="_blank" rel="noopener noreferrer" class="external-link"&gt;cnblogs&lt;span class="external-icon"&gt;↗&lt;/span&gt;&lt;/a&gt;）。映射到 JoySafety：它的 DAG + groovy router 天然就是&amp;quot;组合器&amp;quot;，缺的不是组合能力，而是可组合的&lt;strong&gt;能力件&lt;/strong&gt;（PII、结构校验、审核大模型）。&lt;/p&gt;&#10;&lt;hr&gt;&#10;&lt;h2 id="四结论joysafety-的差异化与短板清单"&gt;&lt;a href="#%e5%9b%9b%e7%bb%93%e8%ae%bajoysafety-%e7%9a%84%e5%b7%ae%e5%bc%82%e5%8c%96%e4%b8%8e%e7%9f%ad%e6%9d%bf%e6%b8%85%e5%8d%95" class="header-anchor"&gt;&lt;/a&gt;四、结论：JoySafety 的差异化与短板清单&#10;&lt;/h2&gt;&lt;h3 id="41-差异化每条都有源码或官方证据"&gt;&lt;a href="#41-%e5%b7%ae%e5%bc%82%e5%8c%96%e6%af%8f%e6%9d%a1%e9%83%bd%e6%9c%89%e6%ba%90%e7%a0%81%e6%88%96%e5%ae%98%e6%96%b9%e8%af%81%e6%8d%ae" class="header-anchor"&gt;&lt;/a&gt;4.1 差异化（每条都有源码或官方证据）&#10;&lt;/h3&gt;&lt;ol&gt;&#10;&lt;li&gt;&lt;strong&gt;DAG 编排 + groovy 策略&lt;/strong&gt;：检测能力抽象为 Function，策略即 YAML + groovy router（&lt;code&gt;FunctionRegistry.java:20&lt;/code&gt;、&lt;code&gt;GroovyRouter.java:27&lt;/code&gt;），策略逻辑免发版可改；编排灵活度对标 NeMo，但面向&amp;quot;检测流水线&amp;quot;而非&amp;quot;对话流&amp;quot;，更贴近内容审核工程。&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;free_taxi 异步模式（业界独有）&lt;/strong&gt;：把检测从流式输出的同步路径上摘掉，下一次请求顺带带回上一次的检测结果（&lt;code&gt;ResponseMode.java:16&lt;/code&gt;，机制走读见 03 篇 3.5 节）。五家开源框架全部为同步模型——流式输出场景这是 JoySafety 的独占解法。&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;纵深防御策略样板&lt;/strong&gt;：敏感词粗筛 → BERT 精检 → 知识库双证（&lt;code&gt;docs/strategy_example.yml&lt;/code&gt; + &lt;code&gt;docs/ABOUT_DAG.md&lt;/code&gt;），每层有成本/准确率权衡，与业界&amp;quot;便宜的先跑&amp;quot;原则一致且落地为可运行配置。&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;中文原生 + 彻底私有化&lt;/strong&gt;：中文语料训练的注入/风险分类模型、中文敏感词体系；向量库（Vearch）、embedding（bge ONNX 本地推理）全部自托管，无任何外部 SaaS 依赖。&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;生产背书&lt;/strong&gt;：京东内部覆盖 AI 导购、物流客服、医疗问诊等场景，&lt;strong&gt;日均亿级调用、95%+ 攻击拦截率&lt;/strong&gt;（README.md:23）——开源编排框架里唯一给出生产规模证据的。&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;h3 id="42-短板清单源码证据--反哺-11-篇生产化"&gt;&lt;a href="#42-%e7%9f%ad%e6%9d%bf%e6%b8%85%e5%8d%95%e6%ba%90%e7%a0%81%e8%af%81%e6%8d%ae--%e5%8f%8d%e5%93%ba-11-%e7%af%87%e7%94%9f%e4%ba%a7%e5%8c%96" class="header-anchor"&gt;&lt;/a&gt;4.2 短板清单（源码证据 → 反哺 11 篇生产化）&#10;&lt;/h3&gt;&lt;table&gt;&#10;&#9;&lt;thead&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;#&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;短板&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;源码证据&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;对标对象&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;反哺改造方向&lt;/th&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/thead&gt;&#10;&#9;&lt;tbody&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;1&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;纯文本&lt;/strong&gt;：枚举预留了多模态但实际只跑文本&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;ContentType.java:8-28&lt;/code&gt; 有 text/picture/audio/video 四种，但 &lt;code&gt;DefenseApiRequest.java:22&lt;/code&gt; 默认 text、&lt;code&gt;safety-api/docs/api.md:40&lt;/code&gt; 明示&amp;quot;当前仅运行 text&amp;quot;，且全仓无任何 Function 按 contentType 分支&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;国内商用护栏全员多模态&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;11 篇加&amp;quot;多模态能力接入&amp;quot;项：以 09 篇自定义能力机制接入图文模型（14 篇给出候选）&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;2&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;无 PII/secrets 专项&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;RiskCheckType.java:14-63&lt;/code&gt; 十种类型无 PII 类目；全仓 grep &lt;code&gt;PII/脱敏/身份证/手机号&lt;/code&gt; 只命中 tokenizer 词表&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;LLM Guard scanner、Guardrails AI（Presidio）、AWS Sensitive Information Filters&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;11 篇加&amp;quot;PII 能力&amp;quot;项：regex+NER 自研或包装 Presidio&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;3&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;无输出结构校验&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;FunctionRegistry.java:20-30&lt;/code&gt; 九种 Function 无 schema/格式校验类&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Guardrails AI 核心能力&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;新增 &lt;code&gt;json_schema&lt;/code&gt; 类 Function（Function 接口本身就是开放扩展点）&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;4&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;审核大模型未集成进框架&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;README.md:349：审核大模型 &lt;code&gt;JSL-joysafety-v1&lt;/code&gt; 已在 HuggingFace 开源（API 实测存在，2025-09-24 更新，safetensors/gpt_oss 架构），&amp;ldquo;后续 Joysafety 集成此系列模型&amp;rdquo;——即&lt;strong&gt;模型已出、集成未做&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Llama Guard 4、商用护栏的审核大模型&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;14 篇可直接做接入实验：按 single_label_pred 协议包装为原子能力&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;5&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;无 Agent 安全维度&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;九种 Function 全为内容检测语义，无 tool-call/执行闸门；入参也无工具调用上下文字段&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;NeMo execution rails、百度 Agent 链路护栏&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;中长期项：DAG 节点需扩展&amp;quot;工具调用审核&amp;quot;语义&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;6&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;无内容标识/水印&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;全仓无相关代码&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;阿里云五项能力之一、《人工智能生成合成内容标识办法》（2025-09-01 施行）&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;监管强相关业务需外购或自研标识检测能力&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;7&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;mq responseMode 是空 stub&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;MessageQueueServiceImpl.java:30-33&lt;/code&gt; 两个方法体为空、&lt;code&gt;// todo 增加输出到mq&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;—（工程完整性）&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;已在 11 篇提纲中，不再重复&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&#10; &lt;blockquote&gt;&#10; &lt;p&gt;&lt;strong&gt;对提纲的一处如实修正&lt;/strong&gt;：提纲写&amp;quot;无审核大模型（官方 roadmap 待出）&amp;quot;，与实际不符——README.md:349 已明确开源了 &lt;code&gt;JSL-joysafety-v1&lt;/code&gt; 并预告集成计划，经 HuggingFace API 核实该模型仓库真实存在（最后更新 2025-09-24）。准确的表述是**&amp;ldquo;审核大模型已开源、但尚未集成进 JoySafety 编排框架&amp;rdquo;**。这也让它从&amp;quot;纯短板&amp;quot;变成&amp;quot;14 篇可立即动手的接入实验对象&amp;quot;。&lt;/p&gt;&#10;&#10; &lt;/blockquote&gt;&#10;&lt;h3 id="43-一句话总结"&gt;&lt;a href="#43-%e4%b8%80%e5%8f%a5%e8%af%9d%e6%80%bb%e7%bb%93" class="header-anchor"&gt;&lt;/a&gt;4.3 一句话总结&#10;&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;JoySafety 的护城河是&amp;quot;编排自主权 + 中文 + 私有化 + 生产实证&amp;quot;，护城河上的缺口是&amp;quot;能力件不够全&amp;quot;。&lt;/strong&gt; 横评的真正产出不是&amp;quot;它比谁强&amp;quot;，而是那张短板清单——每一项短板都对应一条明确的、框架架构已经预留好扩展点的改造路径（Function 接口 + admin 注册 + DAG 引用），这正是 09/11/14 三篇要动手填的坑。&lt;/p&gt;&#10;&lt;hr&gt;&#10;&lt;h2 id="五参考来源汇总"&gt;&lt;a href="#%e4%ba%94%e5%8f%82%e8%80%83%e6%9d%a5%e6%ba%90%e6%b1%87%e6%80%bb" class="header-anchor"&gt;&lt;/a&gt;五、参考来源汇总&#10;&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;开源框架对比&lt;/strong&gt;&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;a href="https://particula.tech/blog/ai-guardrails-compared-nemo-guardrails-ai-llama-guard" target="_blank" rel="noopener noreferrer" class="external-link"&gt;NeMo vs Llama Guard vs Guardrails AI 分层对比（particula.tech）&lt;span class="external-icon"&gt;↗&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://cloudthrill.ca/llm-guardrail-solutions" target="_blank" rel="noopener noreferrer" class="external-link"&gt;开源 vs 商用 12 款护栏方案（cloudthrill.ca）&lt;span class="external-icon"&gt;↗&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://github.com/NVIDIA-NeMo/Guardrails" target="_blank" rel="noopener noreferrer" class="external-link"&gt;NeMo Guardrails 仓库（版本/Colang 状态）&lt;span class="external-icon"&gt;↗&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://myengineeringpath.dev/genai-engineer/ai-guardrails/" target="_blank" rel="noopener noreferrer" class="external-link"&gt;Guardrails AI 能力综述（myengineerpath）&lt;span class="external-icon"&gt;↗&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://github.com/protectai/llm-guard" target="_blank" rel="noopener noreferrer" class="external-link"&gt;LLM Guard 仓库（已归档）&lt;span class="external-icon"&gt;↗&lt;/span&gt;&lt;/a&gt;、&lt;a href="https://senthex.com/en/llm-guard-alternatives/" target="_blank" rel="noopener noreferrer" class="external-link"&gt;LLM Guard 替代方案讨论（senthex）&lt;span class="external-icon"&gt;↗&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://github.com/protectai/rebuff" target="_blank" rel="noopener noreferrer" class="external-link"&gt;Rebuff 仓库（已归档，四层机制与 prototype 声明）&lt;span class="external-icon"&gt;↗&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;&lt;strong&gt;商用护栏&lt;/strong&gt;&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;a href="https://www.sohu.com/a/1065483405_122066452" target="_blank" rel="noopener noreferrer" class="external-link"&gt;企业 AI 内容安全 6 款对比（搜狐）&lt;span class="external-icon"&gt;↗&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://www.cnblogs.com/AI-DATA-SEC/p/19188283" target="_blank" rel="noopener noreferrer" class="external-link"&gt;AI 安全围栏选型四维度（cnblogs）&lt;span class="external-icon"&gt;↗&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://www.admin5.com/article/20250925/1052208.shtml" target="_blank" rel="noopener noreferrer" class="external-link"&gt;阿里云 AI 安全护栏发布（2025 云栖大会）&lt;span class="external-icon"&gt;↗&lt;/span&gt;&lt;/a&gt;、&lt;a href="https://www.aliyun.com/product/content-moderation/guardrail" target="_blank" rel="noopener noreferrer" class="external-link"&gt;产品页&lt;span class="external-icon"&gt;↗&lt;/span&gt;&lt;/a&gt;、&lt;a href="https://help.aliyun.com/zh/document_detail/2573826.html" target="_blank" rel="noopener noreferrer" class="external-link"&gt;计费文档&lt;span class="external-icon"&gt;↗&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://learn.microsoft.com/en-us/azure/ai-services/content-safety/concepts/jailbreak-detection" target="_blank" rel="noopener noreferrer" class="external-link"&gt;Azure Prompt Shields 概念文档（直接/间接注入分开检）&lt;span class="external-icon"&gt;↗&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://kodekloud.com/blog/securing-amazon-bedrock-and-sagemaker-endpoints-a-practitioners-guide/" target="_blank" rel="noopener noreferrer" class="external-link"&gt;AWS Bedrock Guardrails 策略类型&lt;span class="external-icon"&gt;↗&lt;/span&gt;&lt;/a&gt;、&lt;a href="https://techjacksolutions.com/ai-tools/aws/what-is-bedrock-guardrails/" target="_blank" rel="noopener noreferrer" class="external-link"&gt;定价与 Automated Reasoning&lt;span class="external-icon"&gt;↗&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://senthex.com/en/lakera-alternatives/" target="_blank" rel="noopener noreferrer" class="external-link"&gt;Lakera 被 Check Point 收购与 Gandalf 数据集（senthex）&lt;span class="external-icon"&gt;↗&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;&lt;strong&gt;并购潮&lt;/strong&gt;&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;a href="https://datapace.ai/blog/alice-activefence-agent-security-consolidation" target="_blank" rel="noopener noreferrer" class="external-link"&gt;AI Agent 安全并购时间线（datapace）&lt;span class="external-icon"&gt;↗&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://www.deepinspect.ai/blog/robust-intelligence-alternatives" target="_blank" rel="noopener noreferrer" class="external-link"&gt;Protect AI 并入 Prisma AIRS（deepinspect）&lt;span class="external-icon"&gt;↗&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://agentswarms.fyi/blog/top-ai-agent-firewalls-comparison" target="_blank" rel="noopener noreferrer" class="external-link"&gt;Agent 防火墙格局与 SentinelOne 收购（agentswarms）&lt;span class="external-icon"&gt;↗&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;&lt;strong&gt;仓库维护状态&lt;/strong&gt;：NeMo Guardrails / Guardrails AI / LLM Guard / Rebuff 四个 GitHub 仓库的 &lt;code&gt;archived&lt;/code&gt; 标志、最后提交时间与 star 数，均为 2026-09-14 通过 GitHub REST API 逐一实测。&lt;/p&gt;&#10;&lt;p&gt;&lt;strong&gt;JoySafety 侧&lt;/strong&gt;：所有源码坐标出自本仓库 &lt;code&gt;/Users/wyf/work/maas-safe/JoySafety&lt;/code&gt;（safety/ 目录），引用前均经 Read/Grep 核实；审核大模型存在性经 HuggingFace API 核实：&lt;a href="https://huggingface.co/jd-opensource/JSL-joysafety-v1" target="_blank" rel="noopener noreferrer" class="external-link"&gt;jd-opensource/JSL-joysafety-v1&lt;span class="external-icon"&gt;↗&lt;/span&gt;&lt;/a&gt;。&lt;/p&gt;&#10;</description></item><item><title>模型安全检测 14：安全检测模型横评与接入实验</title><link>https://saflyer.cn/posts/joysafety-safety-models-compare/</link><pubDate>Mon, 14 Sep 2026 10:03:15 +0800</pubDate><guid>https://saflyer.cn/posts/joysafety-safety-models-compare/</guid><description>&lt;img src="https://saflyer.cn/posts/joysafety-safety-models-compare/cover.webp" alt="Featured image of post 模型安全检测 14：安全检测模型横评与接入实验" /&gt;&#10; &lt;blockquote&gt;&#10; &lt;p&gt;&lt;strong&gt;状态&lt;/strong&gt;：✅ 已完成&#10;&lt;strong&gt;前置阅读&lt;/strong&gt;：03-技术架构与业务模块分析、04-DAG编排引擎深入、09-自定义原子能力&#10;&lt;strong&gt;调研日期&lt;/strong&gt;：2026-09-14&#10;&lt;strong&gt;素材来源&lt;/strong&gt;：① 公开资料调研（各家模型卡/论文，链接随文给出）② 本仓库源码核实 ③ &lt;code&gt;maas-safe-doc/安全护栏/poc/&lt;/code&gt; 下的已有测试集与测试记录&#10;&lt;strong&gt;读者定位&lt;/strong&gt;：想搞清楚&amp;quot;开源安全检测模型哪家强、怎么接进 JoySafety、接完怎么比&amp;quot;的读者&lt;/p&gt;&#10;&#10; &lt;/blockquote&gt;&#10;&lt;p&gt;&lt;strong&gt;结论标记约定&lt;/strong&gt;（本篇是调研+实验设计，严格区分三种信息）：&lt;/p&gt;&#10;&lt;table&gt;&#10;&#9;&lt;thead&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;标记&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;含义&lt;/th&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/thead&gt;&#10;&#9;&lt;tbody&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;【调研】&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;来自公开资料（模型卡/论文/官方文档），附来源链接&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;【源码】&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;本仓库代码核实，附 &lt;code&gt;path:line&lt;/code&gt; 坐标&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;【实测记录】&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;maas-safe-doc&lt;/code&gt; 里已有的跑分结果（内部服务器，2026-08 批次）&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;【待实测】&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;本篇设计好方案、尚未跑出数字的部分&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;hr&gt;&#10;&lt;h2 id="先建立全局认识"&gt;&lt;a href="#%e5%85%88%e5%bb%ba%e7%ab%8b%e5%85%a8%e5%b1%80%e8%ae%a4%e8%af%86" class="header-anchor"&gt;&lt;/a&gt;〇、先建立全局认识&#10;&lt;/h2&gt;&lt;h3 id="01-框架与模型的分工"&gt;&lt;a href="#01-%e6%a1%86%e6%9e%b6%e4%b8%8e%e6%a8%a1%e5%9e%8b%e7%9a%84%e5%88%86%e5%b7%a5" class="header-anchor"&gt;&lt;/a&gt;0.1 框架与模型的分工&#10;&lt;/h3&gt;&lt;p&gt;JoySafety &lt;strong&gt;自身不是检测模型&lt;/strong&gt;，它是&amp;quot;检测能力的编排框架&amp;quot;（03 篇核心结论）。检测模型在它里面是&lt;strong&gt;可插拔的原子能力&lt;/strong&gt;：框架只认 &lt;code&gt;single_label_pred&lt;/code&gt; 统一协议（HTTP POST 进、风险标签出），后端挂的是自家 bert 还是 Llama Guard，对 DAG 引擎完全透明。&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;&#10;&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt" id="hl-0-1"&gt;&lt;a class="lnlinks" href="#hl-0-1"&gt;1&lt;/a&gt;&#10;&lt;/span&gt;&lt;span class="lnt" id="hl-0-2"&gt;&lt;a class="lnlinks" href="#hl-0-2"&gt;2&lt;/a&gt;&#10;&lt;/span&gt;&lt;span class="lnt" id="hl-0-3"&gt;&lt;a class="lnlinks" href="#hl-0-3"&gt;3&lt;/a&gt;&#10;&lt;/span&gt;&lt;span class="lnt" id="hl-0-4"&gt;&lt;a class="lnlinks" href="#hl-0-4"&gt;4&lt;/a&gt;&#10;&lt;/span&gt;&lt;span class="lnt" id="hl-0-5"&gt;&lt;a class="lnlinks" href="#hl-0-5"&gt;5&lt;/a&gt;&#10;&lt;/span&gt;&lt;span class="lnt" id="hl-0-6"&gt;&lt;a class="lnlinks" href="#hl-0-6"&gt;6&lt;/a&gt;&#10;&lt;/span&gt;&lt;span class="lnt" id="hl-0-7"&gt;&lt;a class="lnlinks" href="#hl-0-7"&gt;7&lt;/a&gt;&#10;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&#10;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;检测模型供给格局（2025-2026）：&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 编码器小模型（22M~400M） Prompt Guard 2、JoySafety bert ← 毫秒级，CPU 可跑&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 生成式护栏大模型（0.6B~20B） Llama Guard 4、Qwen3Guard、Granite Guardian ← 要 GPU&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 多模态护栏 Llama Guard 4、ShieldGemma 2 ← 图文混合场景&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; │ 统一包装成 single_label_pred 协议（本文第四章）&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ▼&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; JoySafety DAG：keyword → 小模型粗筛 → 大模型精检 → 知识库双证（第六章）&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&lt;h3 id="02-本篇回答的四个问题"&gt;&lt;a href="#02-%e6%9c%ac%e7%af%87%e5%9b%9e%e7%ad%94%e7%9a%84%e5%9b%9b%e4%b8%aa%e9%97%ae%e9%a2%98" class="header-anchor"&gt;&lt;/a&gt;0.2 本篇回答的四个问题&#10;&lt;/h3&gt;&lt;ol&gt;&#10;&lt;li&gt;主流开源安全检测模型的能力边界（第一章，【调研】）&lt;/li&gt;&#10;&lt;li&gt;JoySafety 自带三个 bert 的真实底细与统一协议（第二章，【源码】）&lt;/li&gt;&#10;&lt;li&gt;怎么公平地比：统一评测集建设（第三章）+ 怎么接进来比：接入实验全流程（第四章）&lt;/li&gt;&#10;&lt;li&gt;比完之后怎么用：对比表格模板（第五章）+ 快慢分层组合策略（第六章）&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;hr&gt;&#10;&lt;h2 id="一主流开源安全检测模型清单调研"&gt;&lt;a href="#%e4%b8%80%e4%b8%bb%e6%b5%81%e5%bc%80%e6%ba%90%e5%ae%89%e5%85%a8%e6%a3%80%e6%b5%8b%e6%a8%a1%e5%9e%8b%e6%b8%85%e5%8d%95%e8%b0%83%e7%a0%94" class="header-anchor"&gt;&lt;/a&gt;一、主流开源安全检测模型清单【调研】&#10;&lt;/h2&gt;&lt;h3 id="11-逐家要点"&gt;&lt;a href="#11-%e9%80%90%e5%ae%b6%e8%a6%81%e7%82%b9" class="header-anchor"&gt;&lt;/a&gt;1.1 逐家要点&#10;&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;Llama Guard 4（Meta，2025-04 LlamaCon 发布）&lt;/strong&gt;：12B 稠密模型，从 Llama 4 Scout 剪枝而来，&lt;strong&gt;原生多模态&lt;/strong&gt;（文本+单图/多图/多轮对话）。分类体系对齐 MLCommons 危害分类 13 类（S1 暴力犯罪…S13），另加 S14 代码解释器滥用，共 &lt;strong&gt;S1-S14&lt;/strong&gt;。输出是&lt;strong&gt;生成的文本&lt;/strong&gt;：&lt;code&gt;safe&lt;/code&gt; 或 &lt;code&gt;unsafe\nS9&lt;/code&gt;（续输出命中的类别编号）。许可：Llama 4 Community License（商用受限，月活 7 亿红线）。12B 自托管约需 24GB 显存。来源：&lt;a href="https://build.nvidia.com/meta/llama-guard-4-12b/modelcard" target="_blank" rel="noopener noreferrer" class="external-link"&gt;NVIDIA build 模型卡&lt;span class="external-icon"&gt;↗&lt;/span&gt;&lt;/a&gt;、&lt;a href="https://hugging-face.cn/blog/llama-guard-4" target="_blank" rel="noopener noreferrer" class="external-link"&gt;HF 官方博客&lt;span class="external-icon"&gt;↗&lt;/span&gt;&lt;/a&gt;、&lt;a href="https://github.com/meta-llama/PurpleLlama/blob/main/Llama-Guard4/12B/MODEL_CARD.md" target="_blank" rel="noopener noreferrer" class="external-link"&gt;PurpleLlama MODEL_CARD&lt;span class="external-icon"&gt;↗&lt;/span&gt;&lt;/a&gt;。&lt;/p&gt;&#10;&lt;p&gt;&lt;strong&gt;Llama Prompt Guard 2（Meta，2025-04）&lt;/strong&gt;：&lt;strong&gt;编码器分类器&lt;/strong&gt;，86M（mDeBERTa-base 基座）和 22M（DeBERTa-xsmall 基座）两档，上下文仅 512 token。v2 把 v1 拆开的&amp;quot;注入/越狱&amp;quot;两个标签&lt;strong&gt;合并成单一 &lt;code&gt;MALICIOUS&lt;/code&gt; 二分类&lt;/strong&gt;（&lt;code&gt;BENIGN&lt;/code&gt;/&lt;code&gt;MALICIOUS&lt;/code&gt;），同时覆盖直接越狱与间接注入（第三方数据里埋的恶意指令）。只审输入、不审输出。许可：Llama 许可。来源：&lt;a href="https://arxiv.org/html/2505.03574v1" target="_blank" rel="noopener noreferrer" class="external-link"&gt;LlamaFirewall 论文附录 B&lt;span class="external-icon"&gt;↗&lt;/span&gt;&lt;/a&gt;、&lt;a href="https://www.modelscope.cn/models/LLM-Research/Llama-Prompt-Guard-2-86M" target="_blank" rel="noopener noreferrer" class="external-link"&gt;ModelScope 模型卡&lt;span class="external-icon"&gt;↗&lt;/span&gt;&lt;/a&gt;。&lt;/p&gt;&#10;&lt;p&gt;&lt;strong&gt;ShieldGemma 2（Google，2025-03）&lt;/strong&gt;：基于 &lt;strong&gt;Gemma 3 4B&lt;/strong&gt; 的&lt;strong&gt;图像&lt;/strong&gt;内容审核模型，&amp;ldquo;策略感知&amp;quot;设计——输入是用户自定义的安全策略 + 图片，输出 Yes/No 违规判定，内置危险内容/色情/暴力血腥三类图像策略。注意区分：&lt;strong&gt;ShieldGemma v1 才是文本模型&lt;/strong&gt;（Gemma 2 的 2B/9B/27B，四类危害，LLM-as-a-judge 的 Yes/No 输出）。许可：Gemma Terms of Use（可商用但非 OSI 开源协议）。来源：&lt;a href="https://arxiv.org/html/2504.01081v1" target="_blank" rel="noopener noreferrer" class="external-link"&gt;ShieldGemma 2 论文&lt;span class="external-icon"&gt;↗&lt;/span&gt;&lt;/a&gt;、&lt;a href="https://deepmind.google/models/gemma/shieldgemma-2/" target="_blank" rel="noopener noreferrer" class="external-link"&gt;Google DeepMind 页面&lt;span class="external-icon"&gt;↗&lt;/span&gt;&lt;/a&gt;。&lt;/p&gt;&#10;&lt;p&gt;&lt;strong&gt;Granite Guardian（IBM）&lt;/strong&gt;：谱系 3.0（2B/8B）→ 3.2（5B）→ 3.3（8B，支持 thinking 推理模式）→ 4.1（8B，2026 年新版）。风险覆盖最全的一家：harm/越狱/亵渎/偏见/暴力/色情 + &lt;strong&gt;RAG 三件套&lt;/strong&gt;（上下文相关性/ groundedness/答案相关性幻觉）+ &lt;strong&gt;工具调用幻觉&lt;/strong&gt;。输出 Yes/No + 置信度。&lt;strong&gt;Apache 2.0&lt;/strong&gt;，许可最干净。来源：&lt;a href="https://github.com/ibm-granite/granite-guardian" target="_blank" rel="noopener noreferrer" class="external-link"&gt;granite-guardian GitHub&lt;span class="external-icon"&gt;↗&lt;/span&gt;&lt;/a&gt;、&lt;a href="https://ollama.com/library/granite4.1-guardian" target="_blank" rel="noopener noreferrer" class="external-link"&gt;Ollama 4.1 模型卡&lt;span class="external-icon"&gt;↗&lt;/span&gt;&lt;/a&gt;。&lt;/p&gt;&#10;&lt;p&gt;&lt;strong&gt;WildGuard（Allen AI，NeurIPS 2024 D&amp;amp;B）&lt;/strong&gt;：基于 Mistral-7B-v0.3 的 7B 模型，一个模型干三件事：用户 prompt 有害性、模型回复有害性、&lt;strong&gt;拒答识别&lt;/strong&gt;。配套 WildGuardMix 92K 训练集 + WildGuardTest 5K 人工标注测试集，论文报告把越狱攻击成功率从 79.8% 压到 2.4%。许可：代码 Apache 2.0，数据集 ODC-BY。来源：&lt;a href="https://arxiv.org/html/2406.18495v1" target="_blank" rel="noopener noreferrer" class="external-link"&gt;WildGuard 论文&lt;span class="external-icon"&gt;↗&lt;/span&gt;&lt;/a&gt;、&lt;a href="https://proceedings.neurips.cc/paper_files/paper/2024/hash/0f69b4b96a46f284b726fbd70f74fb3b-Abstract-Datasets_and_Benchmarks_Track.html" target="_blank" rel="noopener noreferrer" class="external-link"&gt;NeurIPS 页面&lt;span class="external-icon"&gt;↗&lt;/span&gt;&lt;/a&gt;。&lt;/p&gt;&#10;&lt;p&gt;&lt;strong&gt;NVIDIA Aegis 系列&lt;/strong&gt;：基于 LlamaGuard/Llama 3.1 微调的内容安全模型家族，&lt;strong&gt;13 类关键风险&lt;/strong&gt;，最大卖点是训练数据（Aegis 2.0 数据集，NeurIPS 2024）&lt;strong&gt;商用可用&lt;/strong&gt;；后继形态为 Llama 3.1 NemoGuard 8B Content Safety。来源：&lt;a href="https://docs.nvidia.com/nemo-framework/user-guide/24.07/datacuration/distributeddataclassification.html" target="_blank" rel="noopener noreferrer" class="external-link"&gt;NVIDIA NeMo 文档&lt;span class="external-icon"&gt;↗&lt;/span&gt;&lt;/a&gt;、&lt;a href="https://neurips.cc/media/neurips-2024/Slides/106339.pdf" target="_blank" rel="noopener noreferrer" class="external-link"&gt;Aegis 2.0 slides&lt;span class="external-icon"&gt;↗&lt;/span&gt;&lt;/a&gt;。&lt;/p&gt;&#10;&lt;p&gt;&lt;strong&gt;补充：Qwen3Guard（阿里，2025-10）&lt;/strong&gt;：提纲外但必须纳入——中文场景绕不开。0.6B/4B/8B 三档，Gen（生成式指令判定）+ Stream（&lt;strong&gt;token 级分类头&lt;/strong&gt;，流式生成中实时打分）两个变体，&lt;strong&gt;119 种语言&lt;/strong&gt;，三级严重度（safe/controversial/unsafe），119 万条训练样本，&lt;strong&gt;Apache 2.0&lt;/strong&gt;。来源：&lt;a href="https://arxiv.org/html/2510.14276v1" target="_blank" rel="noopener noreferrer" class="external-link"&gt;Qwen3Guard 技术报告&lt;span class="external-icon"&gt;↗&lt;/span&gt;&lt;/a&gt;。&lt;/p&gt;&#10;&lt;h3 id="12-横评大表"&gt;&lt;a href="#12-%e6%a8%aa%e8%af%84%e5%a4%a7%e8%a1%a8" class="header-anchor"&gt;&lt;/a&gt;1.2 横评大表&#10;&lt;/h3&gt;&lt;table&gt;&#10;&#9;&lt;thead&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;模型&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;参数量&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;时延量级【实测记录见五章】&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;中文支持&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;风险分类体系&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;输出协议&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;许可&lt;/th&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/thead&gt;&#10;&#9;&lt;tbody&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Llama Guard 4&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;12B（多模态）&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;GPU 百 ms 级&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;弱（Llama 4 官方语言表不含中文，靠零样本泛化）&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;MLCommons S1-S14&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;生成文本 &lt;code&gt;unsafe\nS#&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Llama 4 社区许可&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Prompt Guard 2&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;22M / 86M&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;CPU 个位数 ms&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;弱（mDeBERTa 多语基座，训练语料英文为主）&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;二分类（越狱+注入合并）&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;张量概率 + 标签&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Llama 许可&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;ShieldGemma 2&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;4B&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;GPU 数十~百 ms&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;弱&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;图像三类策略（可自定义策略文本）&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;生成 Yes/No&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Gemma ToU&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Granite Guardian&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;2B~8B&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;GPU 数十~百 ms&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;弱-中&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;harm/越狱/RAG 幻觉/工具幻觉等 13+&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;生成 Yes/No + 置信度&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;Apache 2.0&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;WildGuard&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;7B&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;GPU 百 ms 级&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;弱&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;三任务：prompt 害/回复害/拒答&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;生成结构化文本&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;代码 Apache 2.0 / 数据 ODC-BY&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;NVIDIA Aegis&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;7B~8B&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;GPU 百 ms 级&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;弱&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;13 类风险&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;生成文本&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;数据集 CC 系 / 模型 NVIDIA 许可&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Qwen3Guard&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;0.6B/4B/8B&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;0.6B 可 CPU&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;强（119 语言）&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;三级严重度 × 多类目&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Gen 生成 / Stream token 头&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;Apache 2.0&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;JoySafety bert_20250916&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;~102M（MacBERT）&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;CPU 百 ms 级【源码见 2.1】&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;强（中文专训）&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;14 类中文业务风险&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;张量概率 + 标签&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Apache 2.0&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&#10; &lt;blockquote&gt;&#10; &lt;p&gt;&lt;strong&gt;批注&lt;/strong&gt;：一个反直觉的调研结论——模型大小与安全检测能力不相关。&lt;a href="https://arxiv.org/abs/2605.28830" target="_blank" rel="noopener noreferrer" class="external-link"&gt;arXiv 2605.28830&lt;span class="external-icon"&gt;↗&lt;/span&gt;&lt;/a&gt; 在 79,331 样本上横评 14 款护栏模型，发现安全场景的核心指标是 &lt;strong&gt;recall（漏检代价远高于误报）&lt;/strong&gt;；Qwen Guard 4B 拿到最高 recall（83.97%），而 Llama Guard 12B、GPT-OSS Safeguard 20B 这类大模型行为保守，最多漏掉 75% 的违规内容。&lt;strong&gt;选型别看参数量，看同分布评测集上的 recall。&lt;/strong&gt;&lt;/p&gt;&#10;&#10; &lt;/blockquote&gt;&#10;&lt;hr&gt;&#10;&lt;h2 id="二joysafety-自带模型与统一协议源码"&gt;&lt;a href="#%e4%ba%8cjoysafety-%e8%87%aa%e5%b8%a6%e6%a8%a1%e5%9e%8b%e4%b8%8e%e7%bb%9f%e4%b8%80%e5%8d%8f%e8%ae%ae%e6%ba%90%e7%a0%81" class="header-anchor"&gt;&lt;/a&gt;二、JoySafety 自带模型与统一协议【源码】&#10;&lt;/h2&gt;&lt;h3 id="21-三个自带模型的真实底细datamodels"&gt;&lt;a href="#21-%e4%b8%89%e4%b8%aa%e8%87%aa%e5%b8%a6%e6%a8%a1%e5%9e%8b%e7%9a%84%e7%9c%9f%e5%ae%9e%e5%ba%95%e7%bb%86datamodels" class="header-anchor"&gt;&lt;/a&gt;2.1 三个自带模型的真实底细（&lt;code&gt;data/models/&lt;/code&gt;）&#10;&lt;/h3&gt;&lt;table&gt;&#10;&#9;&lt;thead&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;模型&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;基座（config.json 实锤）&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;类别数&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;权重体积&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;演示环境是否注册&lt;/th&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/thead&gt;&#10;&#9;&lt;tbody&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;bert_20250916&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;chinese-macbert-base（&lt;code&gt;data/models/bert_20250916/model/config.json&lt;/code&gt; 的 &lt;code&gt;_name_or_path&lt;/code&gt;）&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;14 类&lt;/strong&gt;（0 正常 + 1001 涉政/1002 暴恐/1003 涉黄/1004 涉赌/1005 涉毒/1006 辱骂/2001 歧视/3002 商业违规/4002 侵权/5001 违禁/5002 虚假信息/1007 两性健康/1008 政治非拒答）&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;390MB&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;✅&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;bert_prompt_injection_20250828&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;chinese-roberta-wwm-ext（同上看 &lt;code&gt;_name_or_path&lt;/code&gt;）&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;二分类（0 正常 / &lt;strong&gt;201 提示词注入&lt;/strong&gt;）&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;390MB&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;✅&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;bert_prompt_injection_20251118&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;chinese-roberta-wwm-ext&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;三分类&lt;/strong&gt;（正常/明确攻击/疑似风险，见 &lt;code&gt;README.md:19&lt;/code&gt; 发布说明；红蓝军对抗训练）&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;390MB&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;❌ &lt;strong&gt;未注册&lt;/strong&gt;（&lt;code&gt;example/safety-skills/safety-knowledge/skills_init.py&lt;/code&gt; 只注册了前两个）&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;14 类的 riskCode↔文案映射声明在 &lt;code&gt;example/safety-skills/safety-bert/conf/conf_example.json&lt;/code&gt;；类别总表也见 &lt;code&gt;safety/safety-skills/model_overview.md:50-74&lt;/code&gt;。&lt;/li&gt;&#10;&lt;li&gt;三个模型都是 BERT 系 12 层 768 隐层（&lt;code&gt;hidden_size: 768, num_hidden_layers: 12&lt;/code&gt;），词表 21128（中文词表），&lt;code&gt;max_position_embeddings: 512&lt;/code&gt;——&lt;strong&gt;输入超过 512 token 会被截断&lt;/strong&gt;（&lt;code&gt;safety/safety-skills/safety-bert/app/model/bert_infer.py:36&lt;/code&gt;）。&lt;/li&gt;&#10;&lt;li&gt;官方还有一个生成式审核模型 &lt;strong&gt;JSL-joysafety-v1&lt;/strong&gt;（基于 gpt-oss-20b 指令微调，见 &lt;code&gt;model_overview.md:12-13&lt;/code&gt;），需单独从 HuggingFace 下载，不在 &lt;code&gt;data/models/&lt;/code&gt; 里。&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h3 id="22-模型推理服务safety-bert8003"&gt;&lt;a href="#22-%e6%a8%a1%e5%9e%8b%e6%8e%a8%e7%90%86%e6%9c%8d%e5%8a%a1safety-bert8003" class="header-anchor"&gt;&lt;/a&gt;2.2 模型推理服务（safety-bert，8003）&#10;&lt;/h3&gt;&lt;p&gt;&lt;code&gt;POST /v1/bert/{model_name}&lt;/code&gt;，body 带 &lt;code&gt;text_list&lt;/code&gt;，逐条返回风险标签。推理核心（&lt;code&gt;safety/safety-skills/safety-bert/app/model/bert_infer.py:48-63&lt;/code&gt;）：&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;&#10;&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt" id="hl-1-1"&gt;&lt;a class="lnlinks" href="#hl-1-1"&gt; 1&lt;/a&gt;&#10;&lt;/span&gt;&lt;span class="lnt" id="hl-1-2"&gt;&lt;a class="lnlinks" href="#hl-1-2"&gt; 2&lt;/a&gt;&#10;&lt;/span&gt;&lt;span class="lnt" id="hl-1-3"&gt;&lt;a class="lnlinks" href="#hl-1-3"&gt; 3&lt;/a&gt;&#10;&lt;/span&gt;&lt;span class="lnt" id="hl-1-4"&gt;&lt;a class="lnlinks" href="#hl-1-4"&gt; 4&lt;/a&gt;&#10;&lt;/span&gt;&lt;span class="lnt" id="hl-1-5"&gt;&lt;a class="lnlinks" href="#hl-1-5"&gt; 5&lt;/a&gt;&#10;&lt;/span&gt;&lt;span class="lnt" id="hl-1-6"&gt;&lt;a class="lnlinks" href="#hl-1-6"&gt; 6&lt;/a&gt;&#10;&lt;/span&gt;&lt;span class="lnt" id="hl-1-7"&gt;&lt;a class="lnlinks" href="#hl-1-7"&gt; 7&lt;/a&gt;&#10;&lt;/span&gt;&lt;span class="lnt" id="hl-1-8"&gt;&lt;a class="lnlinks" href="#hl-1-8"&gt; 8&lt;/a&gt;&#10;&lt;/span&gt;&lt;span class="lnt" id="hl-1-9"&gt;&lt;a class="lnlinks" href="#hl-1-9"&gt; 9&lt;/a&gt;&#10;&lt;/span&gt;&lt;span class="lnt" id="hl-1-10"&gt;&lt;a class="lnlinks" href="#hl-1-10"&gt;10&lt;/a&gt;&#10;&lt;/span&gt;&lt;span class="lnt" id="hl-1-11"&gt;&lt;a class="lnlinks" href="#hl-1-11"&gt;11&lt;/a&gt;&#10;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&#10;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;infer&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;query&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;List&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nb"&gt;str&lt;/span&gt;&lt;span class="p"&gt;]):&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;softmaxed&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;predict&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;model&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;query&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;tokenizer&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;device&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="c1"&gt;# ① 整批 softmax&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;resp&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[]&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="nb"&gt;range&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;len&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;softmaxed&lt;/span&gt;&lt;span class="p"&gt;)):&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;max_idx&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;np&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;argmax&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;item&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="c1"&gt;# ② argmax 取 Top1 标签&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;max_label&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;labels&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;max_idx&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="c1"&gt;# ③ labels 来自服务自己的 conf（riskCode 映射表）&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;temp&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;BertResponseData&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;riskCode&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;max_label&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;riskCode&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;riskMessage&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;max_label&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;riskMessage&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;probability&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;item&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;max_idx&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="n"&gt;text&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;query&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;detail&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="o"&gt;...&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt; &lt;span class="c1"&gt;# ④ detail = 全标签概率分布，策略层调阈值要用&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;resp&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;append&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;temp&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;resp&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10; &lt;blockquote&gt;&#10; &lt;p&gt;&lt;strong&gt;批注&lt;/strong&gt;：riskCode 映射表（哪个 label 序号对应 1001 还是 201）&lt;strong&gt;不在模型权重里，而在 safety-bert 服务的 JSON 配置里&lt;/strong&gt;（&lt;code&gt;conf_example.json&lt;/code&gt; 的 &lt;code&gt;labels&lt;/code&gt; 数组）。这就是&amp;quot;模型即配置&amp;quot;的含义——同一套代码换一套 labels 就能服务另一个分类模型。服务响应壳是 &lt;code&gt;{code, message, cost, data}&lt;/code&gt;（&lt;code&gt;safety-bert/app/base/__init__.py:21-33&lt;/code&gt;，code=0 成功）。&lt;/p&gt;&#10;&#10; &lt;/blockquote&gt;&#10;&lt;h3 id="23-统一协议singlelabelpredfunction-逐段批注"&gt;&lt;a href="#23-%e7%bb%9f%e4%b8%80%e5%8d%8f%e8%ae%aesinglelabelpredfunction-%e9%80%90%e6%ae%b5%e6%89%b9%e6%b3%a8" class="header-anchor"&gt;&lt;/a&gt;2.3 统一协议：SingleLabelPredFunction 逐段批注&#10;&lt;/h3&gt;&lt;p&gt;框架与模型服务之间的唯一契约是 &lt;code&gt;single_label_pred&lt;/code&gt; 类型。注册表映射：&lt;code&gt;safety/safety-api/src/main/java/com/jd/security/llmsec/service/execute/FunctionRegistry.java:23&lt;/code&gt;（&lt;code&gt;single_label_pred → SingleLabelPredFunction&lt;/code&gt;）。&lt;/p&gt;&#10;&lt;p&gt;&lt;strong&gt;初始化&lt;/strong&gt;（&lt;code&gt;safety/safety-api/src/main/java/com/jd/security/llmsec/service/execute/functions/SingleLabelPredFunction.java:49-96&lt;/code&gt;）：&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;&#10;&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt" id="hl-2-1"&gt;&lt;a class="lnlinks" href="#hl-2-1"&gt; 1&lt;/a&gt;&#10;&lt;/span&gt;&lt;span class="lnt" id="hl-2-2"&gt;&lt;a class="lnlinks" href="#hl-2-2"&gt; 2&lt;/a&gt;&#10;&lt;/span&gt;&lt;span class="lnt" id="hl-2-3"&gt;&lt;a class="lnlinks" href="#hl-2-3"&gt; 3&lt;/a&gt;&#10;&lt;/span&gt;&lt;span class="lnt" id="hl-2-4"&gt;&lt;a class="lnlinks" href="#hl-2-4"&gt; 4&lt;/a&gt;&#10;&lt;/span&gt;&lt;span class="lnt" id="hl-2-5"&gt;&lt;a class="lnlinks" href="#hl-2-5"&gt; 5&lt;/a&gt;&#10;&lt;/span&gt;&lt;span class="lnt" id="hl-2-6"&gt;&lt;a class="lnlinks" href="#hl-2-6"&gt; 6&lt;/a&gt;&#10;&lt;/span&gt;&lt;span class="lnt" id="hl-2-7"&gt;&lt;a class="lnlinks" href="#hl-2-7"&gt; 7&lt;/a&gt;&#10;&lt;/span&gt;&lt;span class="lnt" id="hl-2-8"&gt;&lt;a class="lnlinks" href="#hl-2-8"&gt; 8&lt;/a&gt;&#10;&lt;/span&gt;&lt;span class="lnt" id="hl-2-9"&gt;&lt;a class="lnlinks" href="#hl-2-9"&gt; 9&lt;/a&gt;&#10;&lt;/span&gt;&lt;span class="lnt" id="hl-2-10"&gt;&lt;a class="lnlinks" href="#hl-2-10"&gt;10&lt;/a&gt;&#10;&lt;/span&gt;&lt;span class="lnt" id="hl-2-11"&gt;&lt;a class="lnlinks" href="#hl-2-11"&gt;11&lt;/a&gt;&#10;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&#10;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-java" data-lang="java"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kt"&gt;long&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;timeout&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;150&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c1"&gt;// ① 默认超时只有 150ms！&lt;/span&gt;&lt;span class="w"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;if&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="na"&gt;conf&lt;/span&gt;&lt;span class="p"&gt;().&lt;/span&gt;&lt;span class="na"&gt;getTimeoutMilliseconds&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;!=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;null&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;timeout&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="na"&gt;conf&lt;/span&gt;&lt;span class="p"&gt;().&lt;/span&gt;&lt;span class="na"&gt;getTimeoutMilliseconds&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c1"&gt;// ② 用注册时的 timeoutMilliseconds 覆盖&lt;/span&gt;&lt;span class="w"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;switch&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="na"&gt;conf&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="na"&gt;getModelType&lt;/span&gt;&lt;span class="p"&gt;())&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;case&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;textcnn&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;case&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;llm&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;case&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;bert&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;case&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;fasttext&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c1"&gt;// ③ 四种 modelType 走同一个 HTTP 协议&lt;/span&gt;&lt;span class="w"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;FasttextConf&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;fasttextConf&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;...(&lt;/span&gt;&lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="na"&gt;conf&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="na"&gt;getExtra&lt;/span&gt;&lt;span class="p"&gt;());&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c1"&gt;// ④ 只需 extra.url 一个字段&lt;/span&gt;&lt;span class="w"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;Object&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;resource&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;FunctionResourcePool&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="na"&gt;getFunc&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;type&lt;/span&gt;&lt;span class="p"&gt;(),&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;url&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;&lt;span class="w"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;if&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;resource&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;!=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;null&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="na"&gt;fasttextClient&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;OkHttpClient&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;resource&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;else&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;...&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;FunctionResourcePool&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="na"&gt;addFuncIfAbsent&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;type&lt;/span&gt;&lt;span class="p"&gt;(),&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;url&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;temp&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;&lt;span class="w"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;ScheduleWarmup&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="na"&gt;appendTask&lt;/span&gt;&lt;span class="p"&gt;(...);&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c1"&gt;// ⑤ 每 URL 一个共享 OkHttpClient + 注册 warmup&lt;/span&gt;&lt;span class="w"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&lt;ul&gt;&#10;&lt;li&gt;③④是&lt;strong&gt;接入外部模型的关键认知&lt;/strong&gt;：不管你的模型是 bert 还是 llm 基座，只要包装成同样的 HTTP 接口就能接入；框架对模型架构零感知。&lt;/li&gt;&#10;&lt;li&gt;⑤ warmup 的实现：&lt;code&gt;ScheduleWarmup.java:40&lt;/code&gt; 的 &lt;code&gt;@Scheduled(initialDelay=5000, fixedRate=60000)&lt;/code&gt; 每分钟重放所有 warmup 请求（body 为 &lt;code&gt;text_list=[&amp;quot;warmup&amp;quot;]&lt;/code&gt;），保持 HTTP 连接池与模型缓存热度。&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;&lt;strong&gt;运行时&lt;/strong&gt;（同文件 &lt;code&gt;runFasttext():116-155&lt;/code&gt;）：&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;&#10;&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt" id="hl-3-1"&gt;&lt;a class="lnlinks" href="#hl-3-1"&gt;1&lt;/a&gt;&#10;&lt;/span&gt;&lt;span class="lnt" id="hl-3-2"&gt;&lt;a class="lnlinks" href="#hl-3-2"&gt;2&lt;/a&gt;&#10;&lt;/span&gt;&lt;span class="lnt" id="hl-3-3"&gt;&lt;a class="lnlinks" href="#hl-3-3"&gt;3&lt;/a&gt;&#10;&lt;/span&gt;&lt;span class="lnt" id="hl-3-4"&gt;&lt;a class="lnlinks" href="#hl-3-4"&gt;4&lt;/a&gt;&#10;&lt;/span&gt;&lt;span class="lnt" id="hl-3-5"&gt;&lt;a class="lnlinks" href="#hl-3-5"&gt;5&lt;/a&gt;&#10;&lt;/span&gt;&lt;span class="lnt" id="hl-3-6"&gt;&lt;a class="lnlinks" href="#hl-3-6"&gt;6&lt;/a&gt;&#10;&lt;/span&gt;&lt;span class="lnt" id="hl-3-7"&gt;&lt;a class="lnlinks" href="#hl-3-7"&gt;7&lt;/a&gt;&#10;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&#10;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-java" data-lang="java"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;SingleLabelPredCheck&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="na"&gt;SkillsReq&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;req&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;new&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;SingleLabelPredCheck&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="na"&gt;SkillsReq&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;&lt;span class="w"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;req&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="na"&gt;setBusiness_id&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;context&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="na"&gt;getBusinessConf&lt;/span&gt;&lt;span class="p"&gt;().&lt;/span&gt;&lt;span class="na"&gt;getName&lt;/span&gt;&lt;span class="p"&gt;());&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c1"&gt;// 业务名&lt;/span&gt;&lt;span class="w"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;req&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="na"&gt;setRequest_id&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;firstReq&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="na"&gt;getRequestId&lt;/span&gt;&lt;span class="p"&gt;());&lt;/span&gt;&lt;span class="w"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;req&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="na"&gt;setText_list&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;Lists&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="na"&gt;newArrayList&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;context&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="na"&gt;getCheckContent&lt;/span&gt;&lt;span class="p"&gt;()));&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c1"&gt;// 待审文本（单条）&lt;/span&gt;&lt;span class="w"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;ResponseMessage&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;List&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;SkillsResp&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&amp;gt;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;respMessage&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;HttpHelper&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="na"&gt;post&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="na"&gt;fasttextClient&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;fasttextConf&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="na"&gt;getUrl&lt;/span&gt;&lt;span class="p"&gt;(),&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;HttpHelper&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="na"&gt;keepaliveHeader&lt;/span&gt;&lt;span class="p"&gt;(),&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;req&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;...);&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c1"&gt;// Keep-Alive 长连接&lt;/span&gt;&lt;span class="w"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;SingleLabelPredCheck&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="na"&gt;SkillsResp&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;resp&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;respMessage&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="na"&gt;getData&lt;/span&gt;&lt;span class="p"&gt;().&lt;/span&gt;&lt;span class="na"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;0&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c1"&gt;// 只取 data[0]&lt;/span&gt;&lt;span class="w"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&lt;p&gt;请求/响应结构定义在 &lt;code&gt;safety/safety-basic/src/main/java/com/jd/security/llmsec/core/check/SingleLabelPredCheck.java:61-72&lt;/code&gt;：&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;&#10;&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt" id="hl-4-1"&gt;&lt;a class="lnlinks" href="#hl-4-1"&gt;1&lt;/a&gt;&#10;&lt;/span&gt;&lt;span class="lnt" id="hl-4-2"&gt;&lt;a class="lnlinks" href="#hl-4-2"&gt;2&lt;/a&gt;&#10;&lt;/span&gt;&lt;span class="lnt" id="hl-4-3"&gt;&lt;a class="lnlinks" href="#hl-4-3"&gt;3&lt;/a&gt;&#10;&lt;/span&gt;&lt;span class="lnt" id="hl-4-4"&gt;&lt;a class="lnlinks" href="#hl-4-4"&gt;4&lt;/a&gt;&#10;&lt;/span&gt;&lt;span class="lnt" id="hl-4-5"&gt;&lt;a class="lnlinks" href="#hl-4-5"&gt;5&lt;/a&gt;&#10;&lt;/span&gt;&lt;span class="lnt" id="hl-4-6"&gt;&lt;a class="lnlinks" href="#hl-4-6"&gt;6&lt;/a&gt;&#10;&lt;/span&gt;&lt;span class="lnt" id="hl-4-7"&gt;&lt;a class="lnlinks" href="#hl-4-7"&gt;7&lt;/a&gt;&#10;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&#10;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-java" data-lang="java"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kd"&gt;public&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kd"&gt;static&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;SkillsReq&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c1"&gt;// 请求：四字段&lt;/span&gt;&lt;span class="w"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kd"&gt;private&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;String&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;request_id&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kd"&gt;private&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;String&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;business_id&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="w"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kd"&gt;private&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;String&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;session_id&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kd"&gt;private&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;List&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;String&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;text_list&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="w"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kd"&gt;public&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kd"&gt;static&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;SkillsResp&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kd"&gt;extends&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;RiskInfo&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c1"&gt;// 响应：riskCode/riskMessage/probability 继承自 RiskInfo&lt;/span&gt;&lt;span class="w"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kd"&gt;private&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;String&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;text&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kd"&gt;private&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;List&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;RiskInfo&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;detail&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c1"&gt;// detail=全标签分布&lt;/span&gt;&lt;span class="w"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;忽略码机制&lt;/strong&gt;（同文件 &lt;code&gt;doIgnore():157-163&lt;/code&gt;）：若返回的 riskCode 命中注册时的 &lt;code&gt;ignoreRiskCode&lt;/code&gt; 集合，结果被改写为 &lt;code&gt;defaultRisk&lt;/code&gt;（默认 &lt;code&gt;0/正常文本/1.0&lt;/code&gt;，&lt;code&gt;safety/safety-basic/.../core/util/LabelUtil.java:13&lt;/code&gt;）。演示 DAG 里 bert 节点配了 &lt;code&gt;ignoreRiskCode: [1006]&lt;/code&gt;——辱骂类交给关键词层处理、bert 结果直接忽略（&lt;code&gt;example/safety-skills/safety-knowledge/strategy_example.yml:56-63&lt;/code&gt;）。&lt;/p&gt;&#10;&lt;h3 id="24-两条链路的完整图景接入实验前要烂熟于心"&gt;&lt;a href="#24-%e4%b8%a4%e6%9d%a1%e9%93%be%e8%b7%af%e7%9a%84%e5%ae%8c%e6%95%b4%e5%9b%be%e6%99%af%e6%8e%a5%e5%85%a5%e5%ae%9e%e9%aa%8c%e5%89%8d%e8%a6%81%e7%83%82%e7%86%9f%e4%ba%8e%e5%bf%83" class="header-anchor"&gt;&lt;/a&gt;2.4 两条链路的完整图景（接入实验前要烂熟于心）&#10;&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;配置流转&lt;/strong&gt;（注册新模型走这条路）：&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;&#10;&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt" id="hl-5-1"&gt;&lt;a class="lnlinks" href="#hl-5-1"&gt;1&lt;/a&gt;&#10;&lt;/span&gt;&lt;span class="lnt" id="hl-5-2"&gt;&lt;a class="lnlinks" href="#hl-5-2"&gt;2&lt;/a&gt;&#10;&lt;/span&gt;&lt;span class="lnt" id="hl-5-3"&gt;&lt;a class="lnlinks" href="#hl-5-3"&gt;3&lt;/a&gt;&#10;&lt;/span&gt;&lt;span class="lnt" id="hl-5-4"&gt;&lt;a class="lnlinks" href="#hl-5-4"&gt;4&lt;/a&gt;&#10;&lt;/span&gt;&lt;span class="lnt" id="hl-5-5"&gt;&lt;a class="lnlinks" href="#hl-5-5"&gt;5&lt;/a&gt;&#10;&lt;/span&gt;&lt;span class="lnt" id="hl-5-6"&gt;&lt;a class="lnlinks" href="#hl-5-6"&gt;6&lt;/a&gt;&#10;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&#10;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;POST admin:8006 /config/defense/manage/function/new + /online&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; → MySQL function_conf 表（版本化状态机 init→edit→online，online 禁改）&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; → safety-api 每 60s 轮询 admin /config/defense/api/conf&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; （DynamicConfigService.java:65，@Scheduled fixedRate=60000）&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; → 比对 lastChangeTimestamp 判断变更（同文件 shouldUpdate():113-151）&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; → 全量替换 volatile 配置 Map → 回调 listener 重建 DAG（重编译 groovy、重建 OkHttp client）&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;请求流转&lt;/strong&gt;（模型被调用的这条路）：&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;&#10;&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt" id="hl-6-1"&gt;&lt;a class="lnlinks" href="#hl-6-1"&gt;1&lt;/a&gt;&#10;&lt;/span&gt;&lt;span class="lnt" id="hl-6-2"&gt;&lt;a class="lnlinks" href="#hl-6-2"&gt;2&lt;/a&gt;&#10;&lt;/span&gt;&lt;span class="lnt" id="hl-6-3"&gt;&lt;a class="lnlinks" href="#hl-6-3"&gt;3&lt;/a&gt;&#10;&lt;/span&gt;&lt;span class="lnt" id="hl-6-4"&gt;&lt;a class="lnlinks" href="#hl-6-4"&gt;4&lt;/a&gt;&#10;&lt;/span&gt;&lt;span class="lnt" id="hl-6-5"&gt;&lt;a class="lnlinks" href="#hl-6-5"&gt;5&lt;/a&gt;&#10;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&#10;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;业务方 POST :8007/llmsec/api/defense/v2/{accessKey}&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; → 参数校验 → 限流 → HMAC-SHA1 验签（test 开头免签）&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; → DAG 主循环逐节点执行 → parallel 节点线程池并发调各 function&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; → SingleLabelPredFunction.runFasttext() → HTTP → 模型服务&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; → groovy router 按 riskCode + probability 阈值归约 → 响应&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;超时两层都要改&lt;/strong&gt;（02 篇坑 4 的结论，接外部模型时最先踩）：① DAG 并行节点的 &lt;code&gt;timeoutMilliseconds&lt;/code&gt;；② function 注册时的 &lt;code&gt;timeoutMilliseconds&lt;/code&gt;（→ OkHttp callTimeout，SingleLabelPredFunction.java:54-57、73）。外部大模型动辄数百 ms，两层默认 2000ms 很容易不够。&lt;/p&gt;&#10;&lt;hr&gt;&#10;&lt;h2 id="三评测集建设方案"&gt;&lt;a href="#%e4%b8%89%e8%af%84%e6%b5%8b%e9%9b%86%e5%bb%ba%e8%ae%be%e6%96%b9%e6%a1%88" class="header-anchor"&gt;&lt;/a&gt;三、评测集建设方案&#10;&lt;/h2&gt;&lt;h3 id="31-现有素材盘点实测记录"&gt;&lt;a href="#31-%e7%8e%b0%e6%9c%89%e7%b4%a0%e6%9d%90%e7%9b%98%e7%82%b9%e5%ae%9e%e6%b5%8b%e8%ae%b0%e5%bd%95" class="header-anchor"&gt;&lt;/a&gt;3.1 现有素材盘点【实测记录】&#10;&lt;/h3&gt;&lt;p&gt;&lt;code&gt;maas-safe-doc/安全护栏/poc/测试集/&lt;/code&gt; 下已有三个 CSV（格式已 Read 核实）：&lt;/p&gt;&#10;&lt;table&gt;&#10;&#9;&lt;thead&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;文件&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;条数&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;字段&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;标签分布&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;说明（&lt;code&gt;测试集说明.txt&lt;/code&gt;）&lt;/th&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/thead&gt;&#10;&#9;&lt;tbody&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;guard_test_set_v6.csv&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;993&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;id,prompt,label,category&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;unsafe 693 / safe 300&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;大模型生成并打标；9 个英文类目（Jailbreak 100、Copyright 70、PII 70、Self-Harm 66 等）&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;guard_test_set_v7.csv&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;2023&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;id,prompt,label,category,&lt;strong&gt;is_obvious&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;unsafe 1293 / safe 730&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;v6 + 开源数据集中较明显的违规样本；新增中文类目（违法犯罪 100、淫秽色情 100、政治错误 100、普通安全 430），Jailbreak 扩到 400；is_obvious 标注是否明显违规/安全（明显 1778 / 隐晦 245）&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;toxicchat0124_prompt_zh.csv&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;2752&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;id,prompt,label,&lt;strong&gt;jailbreaking&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;safe 2401 / unsafe 351（其中越狱标记 87）&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;ToxicChat-0124 的中文翻译版，真实用户语料分布（safe 占绝大多数，贴近线上）&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;p&gt;三个集合互补：v7 类目标注细、适合看分类明细；toxicchat_zh 分布真实、适合看误判率；jailbreaking 标记可单独切出注入/越狱子集。&lt;/p&gt;&#10;&lt;h3 id="32-四类样本设计方案复用--补齐"&gt;&lt;a href="#32-%e5%9b%9b%e7%b1%bb%e6%a0%b7%e6%9c%ac%e8%ae%be%e8%ae%a1%e6%96%b9%e6%a1%88%e5%a4%8d%e7%94%a8--%e8%a1%a5%e9%bd%90" class="header-anchor"&gt;&lt;/a&gt;3.2 四类样本设计方案（复用 + 补齐）&#10;&lt;/h3&gt;&lt;p&gt;目标矩阵：&lt;strong&gt;注入 / 越狱 / 违规内容 / 正常&lt;/strong&gt; × &lt;strong&gt;中 / 英&lt;/strong&gt;。&lt;/p&gt;&#10;&lt;table&gt;&#10;&#9;&lt;thead&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;维度&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;数据来源&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;规模建议&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;现状&lt;/th&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/thead&gt;&#10;&#9;&lt;tbody&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;中文违规&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;v7 中文类目（违法犯罪/淫秽色情/政治错误）+ 普通安全&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;400+430 已有&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;✅ 直接复用&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;中文注入/越狱&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;v7 Jailbreak 400 + toxicchat_zh 的 jailbreaking=1（87 条）&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;~500&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;✅ 复用；间接注入样本需补（可从 RAG 语料里埋指令构造）【待实测】&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;英文违规/越狱&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;v6 的 9 个英文类目（AILuminate/ToxicChat 同源风格）&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;993 已有&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;✅ 复用&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;正常样本&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;v7 Safe/普通安全 730 + toxicchat_zh safe 2401&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;充足&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;✅ 复用；建议按业务场景再补真实业务 query【待实测】&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;p&gt;&lt;strong&gt;建设原则&lt;/strong&gt;：① 所有模型在同一文件、同一份顺序上跑，避免采样偏差；② 保留 &lt;code&gt;is_obvious&lt;/code&gt; 分层统计——明显违规检出率是底线，隐晦违规才拉开差距；③ 每条样本记录文本长度，时延分析要用。&lt;/p&gt;&#10;&lt;h3 id="33-指标定义与已有测试报告对齐"&gt;&lt;a href="#33-%e6%8c%87%e6%a0%87%e5%ae%9a%e4%b9%89%e4%b8%8e%e5%b7%b2%e6%9c%89%e6%b5%8b%e8%af%95%e6%8a%a5%e5%91%8a%e5%af%b9%e9%bd%90" class="header-anchor"&gt;&lt;/a&gt;3.3 指标定义（与已有测试报告对齐）&#10;&lt;/h3&gt;&lt;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;检出率 = Recall(unsafe)&lt;/strong&gt;：漏检是安全场景最大代价（第一章调研结论），排第一指标&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;误判率 = FP/(FP+TN)&lt;/strong&gt;：正常用户被误拦的比例&lt;/li&gt;&#10;&lt;li&gt;Accuracy / Precision / F1、混淆矩阵、按 category 的分类明细&lt;/li&gt;&#10;&lt;li&gt;时延：mean / P95 / P99（已有报告就是这个格式，见 &lt;code&gt;安全模型测试/L2测试结果/&lt;/code&gt;）&lt;/li&gt;&#10;&lt;li&gt;资源：进程内存（CPU 模型）或显存（GPU 模型）、加载耗时&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;hr&gt;&#10;&lt;h2 id="四接入实验把外部模型包装成-single_label_pred衔接-09-篇"&gt;&lt;a href="#%e5%9b%9b%e6%8e%a5%e5%85%a5%e5%ae%9e%e9%aa%8c%e6%8a%8a%e5%a4%96%e9%83%a8%e6%a8%a1%e5%9e%8b%e5%8c%85%e8%a3%85%e6%88%90-single_label_pred%e8%a1%94%e6%8e%a5-09-%e7%af%87" class="header-anchor"&gt;&lt;/a&gt;四、接入实验：把外部模型包装成 single_label_pred（衔接 09 篇）&#10;&lt;/h2&gt;&lt;h3 id="41-协议契约23-节的-json-形态"&gt;&lt;a href="#41-%e5%8d%8f%e8%ae%ae%e5%a5%91%e7%ba%a623-%e8%8a%82%e7%9a%84-json-%e5%bd%a2%e6%80%81" class="header-anchor"&gt;&lt;/a&gt;4.1 协议契约（2.3 节的 JSON 形态）&#10;&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;&#10;&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt" id="hl-7-1"&gt;&lt;a class="lnlinks" href="#hl-7-1"&gt;1&lt;/a&gt;&#10;&lt;/span&gt;&lt;span class="lnt" id="hl-7-2"&gt;&lt;a class="lnlinks" href="#hl-7-2"&gt;2&lt;/a&gt;&#10;&lt;/span&gt;&lt;span class="lnt" id="hl-7-3"&gt;&lt;a class="lnlinks" href="#hl-7-3"&gt;3&lt;/a&gt;&#10;&lt;/span&gt;&lt;span class="lnt" id="hl-7-4"&gt;&lt;a class="lnlinks" href="#hl-7-4"&gt;4&lt;/a&gt;&#10;&lt;/span&gt;&lt;span class="lnt" id="hl-7-5"&gt;&lt;a class="lnlinks" href="#hl-7-5"&gt;5&lt;/a&gt;&#10;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&#10;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;请求 POST {你的服务地址}&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; {&amp;#34;request_id&amp;#34;:&amp;#34;...&amp;#34;,&amp;#34;business_id&amp;#34;:&amp;#34;test&amp;#34;,&amp;#34;session_id&amp;#34;:&amp;#34;...&amp;#34;,&amp;#34;text_list&amp;#34;:[&amp;#34;待审文本&amp;#34;]}&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;响应 200 + {&amp;#34;code&amp;#34;:0,&amp;#34;message&amp;#34;:&amp;#34;success&amp;#34;,&amp;#34;data&amp;#34;:[&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; {&amp;#34;riskCode&amp;#34;:201,&amp;#34;riskMessage&amp;#34;:&amp;#34;201提示词注入&amp;#34;,&amp;#34;probability&amp;#34;:0.994,&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;#34;text&amp;#34;:&amp;#34;...&amp;#34;,&amp;#34;detail&amp;#34;:[{&amp;#34;riskCode&amp;#34;:0,...},{&amp;#34;riskCode&amp;#34;:201,...}]}]}&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&lt;p&gt;硬性要求（来自 SingleLabelPredFunction.java:126-148 的解析逻辑）：&lt;code&gt;code==0&lt;/code&gt; 否则抛错；&lt;code&gt;data&lt;/code&gt; 非空数组、&lt;strong&gt;只取 [0]&lt;/strong&gt;；&lt;code&gt;riskCode/probability&lt;/code&gt; 必填，&lt;code&gt;detail&lt;/code&gt; 供 groovy 阈值策略使用（演示 DAG 里 &lt;code&gt;bert_common.detail.find { it.riskCode == 0 }&lt;/code&gt; 就在用它，&lt;code&gt;strategy_example.yml:82&lt;/code&gt;）。&lt;/p&gt;&#10;&lt;h3 id="42-包装服务参考实现prompt-guard-2-版"&gt;&lt;a href="#42-%e5%8c%85%e8%a3%85%e6%9c%8d%e5%8a%a1%e5%8f%82%e8%80%83%e5%ae%9e%e7%8e%b0prompt-guard-2-%e7%89%88" class="header-anchor"&gt;&lt;/a&gt;4.2 包装服务参考实现（Prompt Guard 2 版）&#10;&lt;/h3&gt;&lt;p&gt;编码器模型最省事——它原生就是&amp;quot;张量概率 + 标签&amp;rdquo;，和协议同构：&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;&#10;&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt" id="hl-8-1"&gt;&lt;a class="lnlinks" href="#hl-8-1"&gt; 1&lt;/a&gt;&#10;&lt;/span&gt;&lt;span class="lnt" id="hl-8-2"&gt;&lt;a class="lnlinks" href="#hl-8-2"&gt; 2&lt;/a&gt;&#10;&lt;/span&gt;&lt;span class="lnt" id="hl-8-3"&gt;&lt;a class="lnlinks" href="#hl-8-3"&gt; 3&lt;/a&gt;&#10;&lt;/span&gt;&lt;span class="lnt" id="hl-8-4"&gt;&lt;a class="lnlinks" href="#hl-8-4"&gt; 4&lt;/a&gt;&#10;&lt;/span&gt;&lt;span class="lnt" id="hl-8-5"&gt;&lt;a class="lnlinks" href="#hl-8-5"&gt; 5&lt;/a&gt;&#10;&lt;/span&gt;&lt;span class="lnt" id="hl-8-6"&gt;&lt;a class="lnlinks" href="#hl-8-6"&gt; 6&lt;/a&gt;&#10;&lt;/span&gt;&lt;span class="lnt" id="hl-8-7"&gt;&lt;a class="lnlinks" href="#hl-8-7"&gt; 7&lt;/a&gt;&#10;&lt;/span&gt;&lt;span class="lnt" id="hl-8-8"&gt;&lt;a class="lnlinks" href="#hl-8-8"&gt; 8&lt;/a&gt;&#10;&lt;/span&gt;&lt;span class="lnt" id="hl-8-9"&gt;&lt;a class="lnlinks" href="#hl-8-9"&gt; 9&lt;/a&gt;&#10;&lt;/span&gt;&lt;span class="lnt" id="hl-8-10"&gt;&lt;a class="lnlinks" href="#hl-8-10"&gt;10&lt;/a&gt;&#10;&lt;/span&gt;&lt;span class="lnt" id="hl-8-11"&gt;&lt;a class="lnlinks" href="#hl-8-11"&gt;11&lt;/a&gt;&#10;&lt;/span&gt;&lt;span class="lnt" id="hl-8-12"&gt;&lt;a class="lnlinks" href="#hl-8-12"&gt;12&lt;/a&gt;&#10;&lt;/span&gt;&lt;span class="lnt" id="hl-8-13"&gt;&lt;a class="lnlinks" href="#hl-8-13"&gt;13&lt;/a&gt;&#10;&lt;/span&gt;&lt;span class="lnt" id="hl-8-14"&gt;&lt;a class="lnlinks" href="#hl-8-14"&gt;14&lt;/a&gt;&#10;&lt;/span&gt;&lt;span class="lnt" id="hl-8-15"&gt;&lt;a class="lnlinks" href="#hl-8-15"&gt;15&lt;/a&gt;&#10;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&#10;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="nn"&gt;fastapi&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;FastAPI&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="nn"&gt;transformers&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;pipeline&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;clf&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;pipeline&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;text-classification&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;model&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;meta-llama/Llama-Prompt-Guard-2-86M&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="c1"&gt;# ① HF 一行加载&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;app&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;FastAPI&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nd"&gt;@app.post&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;/guard/prompt_guard_2&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;predict&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;req&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;dict&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;data&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[]&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;text&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;req&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;text_list&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;]:&lt;/span&gt; &lt;span class="c1"&gt;# ② 协议批量字段，逐条推理&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;r&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;clf&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;text&lt;/span&gt;&lt;span class="p"&gt;)[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="c1"&gt;# ③ {&amp;#39;label&amp;#39;:&amp;#39;MALICIOUS&amp;#39;,&amp;#39;score&amp;#39;:0.99}&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;risk&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;201&lt;/span&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;r&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;label&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;MALICIOUS&amp;#34;&lt;/span&gt; &lt;span class="k"&gt;else&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt; &lt;span class="c1"&gt;# ④ 映射到 JoySafety 风险码体系&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;data&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;append&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;riskCode&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;risk&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="s2"&gt;&amp;#34;riskMessage&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;201提示词注入&amp;#34;&lt;/span&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;risk&lt;/span&gt; &lt;span class="k"&gt;else&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;0正常文本&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="s2"&gt;&amp;#34;probability&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;r&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;score&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;text&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;text&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;detail&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[]})&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;code&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;message&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;success&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;data&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;data&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="c1"&gt;# ⑤ code=0 是成功硬约定&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;Llama Guard 4 / Qwen3Guard-Gen 版的三个额外工作&lt;/strong&gt;（生成式模型才有）：&lt;/p&gt;&#10;&lt;ol&gt;&#10;&lt;li&gt;&lt;strong&gt;解析生成文本&lt;/strong&gt;：&lt;code&gt;unsafe\nS9&lt;/code&gt; → 提取类别码；Qwen3Guard 还有 controversial 第三档，要预先决定归入 safe 还是 unsafe（已有测试报告里两种口径都跑过，见 3.3 的 Strict/Lenient）&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;riskCode 映射表设计&lt;/strong&gt;：S1-S14 是 MLCommons 体系，和 JoySafety 的 1001~5002 中文业务体系不一一对应——建议外部模型用独立号段（如 6xx）注册，避免与自带 bert 的语义混淆&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;probability 从哪来&lt;/strong&gt;：生成式模型没有现成概率，可取首 token logprob，或输出固定置信度（如 0.99）并在 groovy 阈值表里区别对待&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;h3 id="43-注册--dag-引用--验证完整步骤"&gt;&lt;a href="#43-%e6%b3%a8%e5%86%8c--dag-%e5%bc%95%e7%94%a8--%e9%aa%8c%e8%af%81%e5%ae%8c%e6%95%b4%e6%ad%a5%e9%aa%a4" class="header-anchor"&gt;&lt;/a&gt;4.3 注册 → DAG 引用 → 验证（完整步骤）&#10;&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;&#10;&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt" id="hl-9-1"&gt;&lt;a class="lnlinks" href="#hl-9-1"&gt; 1&lt;/a&gt;&#10;&lt;/span&gt;&lt;span class="lnt" id="hl-9-2"&gt;&lt;a class="lnlinks" href="#hl-9-2"&gt; 2&lt;/a&gt;&#10;&lt;/span&gt;&lt;span class="lnt" id="hl-9-3"&gt;&lt;a class="lnlinks" href="#hl-9-3"&gt; 3&lt;/a&gt;&#10;&lt;/span&gt;&lt;span class="lnt" id="hl-9-4"&gt;&lt;a class="lnlinks" href="#hl-9-4"&gt; 4&lt;/a&gt;&#10;&lt;/span&gt;&lt;span class="lnt" id="hl-9-5"&gt;&lt;a class="lnlinks" href="#hl-9-5"&gt; 5&lt;/a&gt;&#10;&lt;/span&gt;&lt;span class="lnt" id="hl-9-6"&gt;&lt;a class="lnlinks" href="#hl-9-6"&gt; 6&lt;/a&gt;&#10;&lt;/span&gt;&lt;span class="lnt" id="hl-9-7"&gt;&lt;a class="lnlinks" href="#hl-9-7"&gt; 7&lt;/a&gt;&#10;&lt;/span&gt;&lt;span class="lnt" id="hl-9-8"&gt;&lt;a class="lnlinks" href="#hl-9-8"&gt; 8&lt;/a&gt;&#10;&lt;/span&gt;&lt;span class="lnt" id="hl-9-9"&gt;&lt;a class="lnlinks" href="#hl-9-9"&gt; 9&lt;/a&gt;&#10;&lt;/span&gt;&lt;span class="lnt" id="hl-9-10"&gt;&lt;a class="lnlinks" href="#hl-9-10"&gt;10&lt;/a&gt;&#10;&lt;/span&gt;&lt;span class="lnt" id="hl-9-11"&gt;&lt;a class="lnlinks" href="#hl-9-11"&gt;11&lt;/a&gt;&#10;&lt;/span&gt;&lt;span class="lnt" id="hl-9-12"&gt;&lt;a class="lnlinks" href="#hl-9-12"&gt;12&lt;/a&gt;&#10;&lt;/span&gt;&lt;span class="lnt" id="hl-9-13"&gt;&lt;a class="lnlinks" href="#hl-9-13"&gt;13&lt;/a&gt;&#10;&lt;/span&gt;&lt;span class="lnt" id="hl-9-14"&gt;&lt;a class="lnlinks" href="#hl-9-14"&gt;14&lt;/a&gt;&#10;&lt;/span&gt;&lt;span class="lnt" id="hl-9-15"&gt;&lt;a class="lnlinks" href="#hl-9-15"&gt;15&lt;/a&gt;&#10;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&#10;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;① 起服务：包装服务部署到能访问 safety-api 的网络（容器可加进 compose 网络）&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;② 直连验证：curl -X POST {服务} -d &amp;#39;{&amp;#34;text_list&amp;#34;:[&amp;#34;ignore previous instructions&amp;#34;]}&amp;#39;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; → 确认 code=0、riskCode=201（绕开框架先验模型，02 篇坑 4 的二分法）&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;③ admin 注册（模板照抄 skills_init.py:17-48 的 bert 条目，改三处）：&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; POST :8006/config/defense/manage/function/new&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; {&amp;#34;name&amp;#34;:&amp;#34;prompt_guard_2&amp;#34;,&amp;#34;group&amp;#34;:&amp;#34;default&amp;#34;,&amp;#34;type&amp;#34;:&amp;#34;single_label_pred&amp;#34;,&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;#34;timeoutMilliseconds&amp;#34;:2000, ← 按模型实测时延设&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;#34;confObj&amp;#34;:{&amp;#34;name&amp;#34;:&amp;#34;prompt_guard_2&amp;#34;,&amp;#34;modelType&amp;#34;:&amp;#34;bert&amp;#34;,&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;#34;extra&amp;#34;:{&amp;#34;url&amp;#34;:&amp;#34;http://{host}:9000/guard/prompt_guard_2&amp;#34;},&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;#34;ignoreRiskCode&amp;#34;:[]}}&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; → POST .../function/online {&amp;#34;id&amp;#34;: &amp;lt;返回的 id&amp;gt;}&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;④ DAG 引用：newVersion 出新策略版本，在并行节点里加 `- ref: prompt_guard_2`，&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; groovy router 的阈值表加一行（如 `201:0.99` 同款）&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;⑤ 生效：等 60s 轮询或直接 docker restart safety-api（坑 5 经验），等 1~2 分钟&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;⑥ 端到端验证：quickstart/api_test.py 打注入样本，看 riskCheckType=single_label_pred&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10; &lt;blockquote&gt;&#10; &lt;p&gt;&lt;strong&gt;注意&lt;/strong&gt;：&lt;code&gt;modelType&lt;/code&gt; 字段填 &lt;code&gt;bert&lt;/code&gt; 即可——它只是走分支的标签（SingleLabelPredFunction.java:59-63 四种类型同一路径），不代表真实模型架构。&lt;/p&gt;&#10;&#10; &lt;/blockquote&gt;&#10;&lt;hr&gt;&#10;&lt;h2 id="五横评对比已有记录--待实测模板"&gt;&lt;a href="#%e4%ba%94%e6%a8%aa%e8%af%84%e5%af%b9%e6%af%94%e5%b7%b2%e6%9c%89%e8%ae%b0%e5%bd%95--%e5%be%85%e5%ae%9e%e6%b5%8b%e6%a8%a1%e6%9d%bf" class="header-anchor"&gt;&lt;/a&gt;五、横评对比：已有记录 + 待实测模板&#10;&lt;/h2&gt;&lt;h3 id="51-已有实测记录maas-safe-doc安全护栏poc安全模型测试内部服务器-2026-08-批次"&gt;&lt;a href="#51-%e5%b7%b2%e6%9c%89%e5%ae%9e%e6%b5%8b%e8%ae%b0%e5%bd%95maas-safe-doc%e5%ae%89%e5%85%a8%e6%8a%a4%e6%a0%8fpoc%e5%ae%89%e5%85%a8%e6%a8%a1%e5%9e%8b%e6%b5%8b%e8%af%95%e5%86%85%e9%83%a8%e6%9c%8d%e5%8a%a1%e5%99%a8-2026-08-%e6%89%b9%e6%ac%a1" class="header-anchor"&gt;&lt;/a&gt;5.1 已有实测记录（&lt;code&gt;maas-safe-doc/安全护栏/poc/安全模型测试/&lt;/code&gt;，内部服务器 2026-08 批次）&#10;&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;L2 大模型对比&lt;/strong&gt;（测试集 &lt;code&gt;guard_test_set_v7_L2.csv&lt;/code&gt;，875 条，2026-08-18）：&lt;/p&gt;&#10;&lt;table&gt;&#10;&#9;&lt;thead&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;模型&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Accuracy&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Precision&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Recall(检出率)&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;F1&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;平均时延&lt;/th&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/thead&gt;&#10;&#9;&lt;tbody&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;PolyGuard-Qwen（7B）&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;93.49%&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;98.40%&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;94.27%&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;96.29%&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;105.1ms&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;SingGuard-NSFA-9B&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;90.86%&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;99.58%&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;90.19%&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;94.65%&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;40.8ms&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;JoySafety（整体 API）&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;88.80%&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;99.14%&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;88.28%&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;93.40%&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;2121.1ms&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Qwen3Guard-Stream-8B&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;77.49%&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;99.66%&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;75.16%&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;85.69%&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;48.3ms&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Llama Guard 4 12B&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;70.17%&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;99.81%&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;66.88%&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;80.09%&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;181.0ms&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&#10; &lt;blockquote&gt;&#10; &lt;p&gt;&lt;strong&gt;读表要点&lt;/strong&gt;：① 全体 precision ≥98%（护栏模型都宁可放过不可错杀），差距全在 recall；② Llama Guard 4 在中文占比高的 v7 上 recall 垫底，印证第一章&amp;quot;中文弱&amp;quot;的调研结论；③ JoySafety 的 2121ms 是&lt;strong&gt;整条 DAG 流水线&lt;/strong&gt;的耗时（含关键词+双 bert 串并行），不是单模型推理时延，比时延不能直接比。&lt;/p&gt;&#10;&#10; &lt;/blockquote&gt;&#10;&lt;p&gt;&lt;strong&gt;L1 小模型对比&lt;/strong&gt;（测试集 &lt;code&gt;guard_test_set_v6.csv&lt;/code&gt;，993 条，2026-08-17，9 款）节选：&lt;/p&gt;&#10;&lt;table&gt;&#10;&#9;&lt;thead&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;模型&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;F1&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;漏报率&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;误报率&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;平均时延&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;QPS&lt;/th&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/thead&gt;&#10;&#9;&lt;tbody&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;HaloGuard1-Gen-0.8B&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;92.69%&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;10.39%&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;8.67%&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;187.44ms&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;5.3&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;SingGuard-NSFA-0.8B&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;87.92%&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;21.21%&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;1.00%&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;4.37ms&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;229.1&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Wolf Defender（注入专项）&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;79.93%&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;29.58%&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;13.33%&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;1.76ms&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;567.4&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;Prompt Guard 2（86M）&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;13.08%&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;92.93%&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;2.33%&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;20.28ms&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;49.3&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&#10; &lt;blockquote&gt;&#10; &lt;p&gt;&lt;strong&gt;最刺眼的一行&lt;/strong&gt;：Prompt Guard 2 在中文为主的 v6 上 recall 只有 7.07%——&lt;strong&gt;英文专训的注入检测模型对中文攻击接近失明&lt;/strong&gt;。这就是中文业务必须用中文语料微调（JoySafety 自带注入 bert 的价值）或选多语模型（Qwen3Guard 系）的直接证据。【实测记录】&lt;/p&gt;&#10;&#10; &lt;/blockquote&gt;&#10;&lt;h3 id="52-待实测对比模板待实测"&gt;&lt;a href="#52-%e5%be%85%e5%ae%9e%e6%b5%8b%e5%af%b9%e6%af%94%e6%a8%a1%e6%9d%bf%e5%be%85%e5%ae%9e%e6%b5%8b" class="header-anchor"&gt;&lt;/a&gt;5.2 待实测对比模板【待实测】&#10;&lt;/h3&gt;&lt;p&gt;在本仓库环境（Mac/Docker 或 GPU 服务器）上，用第三章评测集 + 第四章接入方法，填下表：&lt;/p&gt;&#10;&lt;table&gt;&#10;&#9;&lt;thead&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;模型&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;检出率 Recall&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;误判率 FP rate&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Precision&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;F1&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;时延 mean/P95&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;内存/显存&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;加载耗时&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;备注&lt;/th&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/thead&gt;&#10;&#9;&lt;tbody&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;bert_20250916（自带 14 类）&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;em&gt;待填&lt;/em&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;~390MB 权重&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;违规内容维度&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;bert_prompt_injection_20250828（二分类）&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;~390MB&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;注入维度&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;bert_prompt_injection_20251118（三分类）&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;~390MB&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;注入维度，需先注册&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Prompt Guard 2 86M&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;预期：中文 recall 很低&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;预期 CPU &amp;lt;50ms&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;~350MB&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;预期英文强&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Prompt Guard 2 22M&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;~90MB&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;粗筛候选&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Qwen3Guard-Gen-0.6B&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;中文多语候选&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Llama Guard 4 12B&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;需 GPU&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;~24GB 显存&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;多模态唯一选项&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;p&gt;分维度记录：注入 / 越狱 / 违规 / 正常四类分开统计；&lt;code&gt;is_obvious=0&lt;/code&gt;（隐晦样本）单独看检出率。&lt;/p&gt;&#10;&lt;hr&gt;&#10;&lt;h2 id="六快慢模型分层组合策略"&gt;&lt;a href="#%e5%85%ad%e5%bf%ab%e6%85%a2%e6%a8%a1%e5%9e%8b%e5%88%86%e5%b1%82%e7%bb%84%e5%90%88%e7%ad%96%e7%95%a5" class="header-anchor"&gt;&lt;/a&gt;六、快慢模型分层组合策略&#10;&lt;/h2&gt;&lt;h3 id="61-已有两阶段实验结论实测记录"&gt;&lt;a href="#61-%e5%b7%b2%e6%9c%89%e4%b8%a4%e9%98%b6%e6%ae%b5%e5%ae%9e%e9%aa%8c%e7%bb%93%e8%ae%ba%e5%ae%9e%e6%b5%8b%e8%ae%b0%e5%bd%95" class="header-anchor"&gt;&lt;/a&gt;6.1 已有两阶段实验结论【实测记录】&#10;&lt;/h3&gt;&lt;p&gt;&lt;code&gt;安全模型测试/L1测试结果/L1方案.txt&lt;/code&gt; 的两阶段设计：&lt;strong&gt;L1 放行侧&lt;/strong&gt; HaloGuard+SingGuard+WolfDefender 三个小模型都判 safe 才直接放行；&lt;strong&gt;拦截侧&lt;/strong&gt; HaloGuard+SingGuard+Siren 都判 unsafe 才直接拦截；&lt;strong&gt;不确定样本进 L2 大模型复核&lt;/strong&gt;。&lt;/p&gt;&#10;&lt;p&gt;&lt;code&gt;模型搭配测试报告/compare_report.md&lt;/code&gt; 的最优组合（Stage1 小模型 ensemble → Qwen3Guard 复审）：&lt;/p&gt;&#10;&lt;table&gt;&#10;&#9;&lt;thead&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;组合&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Stage1 F1&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Two-Stage F1&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;L2 复审率&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;L2 改判正确率&lt;/th&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/thead&gt;&#10;&#9;&lt;tbody&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;haloguard + wolfdefender → Qwen3Guard&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;93.95%&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;94.59%&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;28.5%&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;97.9%&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&#10; &lt;blockquote&gt;&#10; &lt;p&gt;&lt;strong&gt;这组数字是分层策略价值的直接证据&lt;/strong&gt;：71.5% 的流量被毫秒级小模型当场解决，只有 28.5% 进入大模型；大模型改判的 97.9% 是改对的。时延大头只花在难样本上。&lt;/p&gt;&#10;&#10; &lt;/blockquote&gt;&#10;&lt;h3 id="62-映射到-joysafety-dag-的实现"&gt;&lt;a href="#62-%e6%98%a0%e5%b0%84%e5%88%b0-joysafety-dag-%e7%9a%84%e5%ae%9e%e7%8e%b0" class="header-anchor"&gt;&lt;/a&gt;6.2 映射到 JoySafety DAG 的实现&#10;&lt;/h3&gt;&lt;p&gt;JoySafety 的演示 DAG 本身就是分层结构（keyword 粗筛 → bert 精检），把外部模型插进对应层即可：&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;&#10;&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt" id="hl-10-1"&gt;&lt;a class="lnlinks" href="#hl-10-1"&gt;1&lt;/a&gt;&#10;&lt;/span&gt;&lt;span class="lnt" id="hl-10-2"&gt;&lt;a class="lnlinks" href="#hl-10-2"&gt;2&lt;/a&gt;&#10;&lt;/span&gt;&lt;span class="lnt" id="hl-10-3"&gt;&lt;a class="lnlinks" href="#hl-10-3"&gt;3&lt;/a&gt;&#10;&lt;/span&gt;&lt;span class="lnt" id="hl-10-4"&gt;&lt;a class="lnlinks" href="#hl-10-4"&gt;4&lt;/a&gt;&#10;&lt;/span&gt;&lt;span class="lnt" id="hl-10-5"&gt;&lt;a class="lnlinks" href="#hl-10-5"&gt;5&lt;/a&gt;&#10;&lt;/span&gt;&lt;span class="lnt" id="hl-10-6"&gt;&lt;a class="lnlinks" href="#hl-10-6"&gt;6&lt;/a&gt;&#10;&lt;/span&gt;&lt;span class="lnt" id="hl-10-7"&gt;&lt;a class="lnlinks" href="#hl-10-7"&gt;7&lt;/a&gt;&#10;&lt;/span&gt;&lt;span class="lnt" id="hl-10-8"&gt;&lt;a class="lnlinks" href="#hl-10-8"&gt;8&lt;/a&gt;&#10;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&#10;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;start（分流 user/robot）&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; └─ user 链路：&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; L0 keyword（AC 自动机，亚 ms） ← 黑词短路 / 白词放行&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; L1 parallel(小模型粗筛: prompt_guard_2 或 fasttext 级)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; groovy router：高置信（&amp;gt;0.99）直接定结论 ──┐&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; L2 parallel(bert_20250916, bert_prompt_injection_*, 外部大模型) ← 只有 L1 不确定才到这&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; groovy router：riskCode 差异化阈值表判定（strategy_example.yml:77 的套路）&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; L3 （可选）rag_answer + bert 双证：riskCode 一致且概率&amp;gt;0.5 才判风险，防误杀&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&lt;p&gt;实现要点：L1→L2 的&amp;quot;不确定才升级&amp;quot;就是 groovy 里一个 if——&lt;code&gt;if (small.hasRisk() &amp;amp;&amp;amp; small.probability &amp;gt; 0.99) return null 终结&lt;/code&gt; 否则 &lt;code&gt;return 'L2节点'&lt;/code&gt;。并行节点的归约（&lt;code&gt;first_risk&lt;/code&gt;/&lt;code&gt;groovy_script&lt;/code&gt;）见 &lt;code&gt;ParallelFunction.java:57-67&lt;/code&gt;。&lt;/p&gt;&#10;&lt;h3 id="63-融入纵深防御的组合拳设计建议部分待实测"&gt;&lt;a href="#63-%e8%9e%8d%e5%85%a5%e7%ba%b5%e6%b7%b1%e9%98%b2%e5%be%a1%e7%9a%84%e7%bb%84%e5%90%88%e6%8b%b3%e8%ae%be%e8%ae%a1%e5%bb%ba%e8%ae%ae%e9%83%a8%e5%88%86%e5%be%85%e5%ae%9e%e6%b5%8b" class="header-anchor"&gt;&lt;/a&gt;6.3 融入纵深防御的组合拳（设计建议，部分待实测）&#10;&lt;/h3&gt;&lt;ol&gt;&#10;&lt;li&gt;&lt;strong&gt;注入防线&lt;/strong&gt;：Prompt Guard 2 22M（英文流量、个位数 ms）与自带注入 bert（中文流量）&lt;strong&gt;并联&lt;/strong&gt;而非二选一——groovy 里任一高置信命中即拦【待实测：并联后的误判率叠加情况】&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;违规防线&lt;/strong&gt;：自带 bert_20250916 主力（中文 14 类是它的主场），Qwen3Guard-0.6B 做第二意见（多语 + controversial 档恰好对应&amp;quot;疑似&amp;quot;语义）&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;成本公式&lt;/strong&gt;：全量流量过 L0/L1（~10ms），L2 只接 L1 不确定部分（复审率控制在 30% 内），L3 双证只接 L2 判风险的样本——与已有实验的 28.5% 复审率同构&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;一号段一模型&lt;/strong&gt;：外部模型的 riskCode 用独立号段注册（4.2 节），阈值表分行管理，互不污染&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;hr&gt;&#10;&lt;h2 id="七结论速查"&gt;&lt;a href="#%e4%b8%83%e7%bb%93%e8%ae%ba%e9%80%9f%e6%9f%a5" class="header-anchor"&gt;&lt;/a&gt;七、结论速查&#10;&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;调研结论&lt;/strong&gt;（可信，附来源）：① 选型看同分布 recall 别看参数量（arXiv 2605.28830）；② 主流开源模型除 Qwen3Guard 外中文都弱；③ 生成式护栏（Llama Guard 4 等）输出要解析+映射才能进 single_label_pred 协议；④ 许可最干净的是 Granite Guardian 和 Qwen3Guard（Apache 2.0），Llama 系有月活限制。&lt;/p&gt;&#10;&lt;p&gt;&lt;strong&gt;实测记录结论&lt;/strong&gt;（内部环境，可参考）：① PolyGuard-Qwen 单模型最强（F1 96.29%）；② Prompt Guard 2 中文注入 recall 仅 7%，中文场景不可用；③ 两阶段分层（小模型粗筛 + 大模型复审 28.5% 流量）F1 94.59% 且省时延。&lt;/p&gt;&#10;&lt;p&gt;&lt;strong&gt;待实测清单&lt;/strong&gt;（本篇方案的直接产出）：① 第四章包装服务在本仓库环境的端到端验证；② 5.2 表格全部数字；③ 6.3 并联/分层组合在真实评测集上的误判率叠加情况；④ bert_prompt_injection_20251118 三分类注册后的提升幅度。&lt;/p&gt;&#10;&lt;hr&gt;&#10;&lt;h2 id="附录关键坐标速查"&gt;&lt;a href="#%e9%99%84%e5%bd%95%e5%85%b3%e9%94%ae%e5%9d%90%e6%a0%87%e9%80%9f%e6%9f%a5" class="header-anchor"&gt;&lt;/a&gt;附录：关键坐标速查&#10;&lt;/h2&gt;&lt;table&gt;&#10;&#9;&lt;thead&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;主题&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;位置&lt;/th&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/thead&gt;&#10;&#9;&lt;tbody&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;统一协议实现&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;safety/safety-api/src/main/java/com/jd/security/llmsec/service/execute/functions/SingleLabelPredFunction.java:116&lt;/code&gt;（runFasttext）&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;协议请求/响应结构&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;safety/safety-basic/.../core/check/SingleLabelPredCheck.java:61-72&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;忽略码/默认风险&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;同上文件 &lt;code&gt;:157-163&lt;/code&gt;；&lt;code&gt;safety/safety-basic/.../core/util/LabelUtil.java:13&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;modelType 枚举&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;safety/safety-basic/.../core/conf/funcs/ModelType.java:8-12&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Function 注册表&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;safety/safety-api/.../service/execute/FunctionRegistry.java:23&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;warmup 机制&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;safety/safety-api/.../service/ScheduleWarmup.java:40&lt;/code&gt;（每 60s 重放）&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;配置轮询&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;safety/safety-api/.../service/DynamicConfigService.java:65&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;bert 推理服务&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;safety/safety-skills/safety-bert/app/model/bert_infer.py:48-63&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;自带模型 labels 映射&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;example/safety-skills/safety-bert/conf/conf_example.json&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;注册脚本模板&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;example/safety-skills/safety-knowledge/skills_init.py:17-48&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;演示 DAG 阈值表&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;example/safety-skills/safety-knowledge/strategy_example.yml:77-89&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;注册接口文档&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;safety/safety-admin/docs/api/function_api.md&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;评测集&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;../maas-safe-doc/安全护栏/poc/测试集/&lt;/code&gt;（v6 993 条 / v7 2023 条 / toxicchat_zh 2752 条）&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;已有测试报告&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;../maas-safe-doc/安全护栏/poc/安全模型测试/&lt;/code&gt;（L1 小模型 9 款、L2 大模型 5 款、两阶段组合 5 组）&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;h2 id="参考资料"&gt;&lt;a href="#%e5%8f%82%e8%80%83%e8%b5%84%e6%96%99" class="header-anchor"&gt;&lt;/a&gt;参考资料&#10;&lt;/h2&gt;&lt;ul&gt;&#10;&lt;li&gt;模型横评基准：&lt;a href="https://arxiv.org/abs/2605.28830" target="_blank" rel="noopener noreferrer" class="external-link"&gt;Benchmarking Open-Source Safety Guard Models (arXiv 2605.28830)&lt;span class="external-icon"&gt;↗&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;Llama Guard 4：&lt;a href="https://build.nvidia.com/meta/llama-guard-4-12b/modelcard" target="_blank" rel="noopener noreferrer" class="external-link"&gt;NVIDIA 模型卡&lt;span class="external-icon"&gt;↗&lt;/span&gt;&lt;/a&gt; / &lt;a href="https://github.com/meta-llama/PurpleLlama/blob/main/Llama-Guard4/12B/MODEL_CARD.md" target="_blank" rel="noopener noreferrer" class="external-link"&gt;PurpleLlama MODEL_CARD&lt;span class="external-icon"&gt;↗&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;Prompt Guard 2：&lt;a href="https://arxiv.org/html/2505.03574v1" target="_blank" rel="noopener noreferrer" class="external-link"&gt;LlamaFirewall 论文&lt;span class="external-icon"&gt;↗&lt;/span&gt;&lt;/a&gt; / &lt;a href="https://www.modelscope.cn/models/LLM-Research/Llama-Prompt-Guard-2-86M" target="_blank" rel="noopener noreferrer" class="external-link"&gt;ModelScope 模型卡&lt;span class="external-icon"&gt;↗&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;ShieldGemma 2：&lt;a href="https://arxiv.org/html/2504.01081v1" target="_blank" rel="noopener noreferrer" class="external-link"&gt;论文&lt;span class="external-icon"&gt;↗&lt;/span&gt;&lt;/a&gt;；Granite Guardian：&lt;a href="https://github.com/ibm-granite/granite-guardian" target="_blank" rel="noopener noreferrer" class="external-link"&gt;GitHub&lt;span class="external-icon"&gt;↗&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;WildGuard：&lt;a href="https://arxiv.org/html/2406.18495v1" target="_blank" rel="noopener noreferrer" class="external-link"&gt;论文&lt;span class="external-icon"&gt;↗&lt;/span&gt;&lt;/a&gt;；Qwen3Guard：&lt;a href="https://arxiv.org/html/2510.14276v1" target="_blank" rel="noopener noreferrer" class="external-link"&gt;技术报告&lt;span class="external-icon"&gt;↗&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;NVIDIA Aegis：&lt;a href="https://docs.nvidia.com/nemo-framework/user-guide/24.07/datacuration/distributeddataclassification.html" target="_blank" rel="noopener noreferrer" class="external-link"&gt;NeMo 文档&lt;span class="external-icon"&gt;↗&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;JoySafety 模型仓库：https://huggingface.co/jdopensource/JoySafety；生成式审核模型：&lt;a href="https://huggingface.co/jd-opensource/JSL-joysafety-v1" target="_blank" rel="noopener noreferrer" class="external-link"&gt;JSL-joysafety-v1&lt;span class="external-icon"&gt;↗&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;</description></item></channel></rss>