NeMo Guardrails 预置护栏库(Library)完全指南:内置 Rail 目录、激活方式与贡献新 Rail 的录制测试规范
发布时间:2026/10/8 23:40:18 锦皓数字建站
完全指南:内置 Rail 目录、激活方式与贡献新 Rail 的录制测试规范`)
人工智能大模型AI 安全治理模型安全内容安全提示词注入防护RAG【免费下载链接】GuardrailsNeMo Guardrails is an open-source toolkit for easily adding programmable guardrails to LLM-based conversational systems.项目地址https://gitcode.com/gh_mirrors/ne/Guardrails点击查看免费下载本文基于 NeMo Guardrails 开源仓库中的nemoguardrails/library/README.md及其关联的录制测试说明系统讲解该框架内置护栏库的整体架构包含哪些预置 Rail、每个 Rail 由哪些文件组成、如何通过配置文件一键激活以及社区贡献者在nemoguardrails/library/feature/下新增 Rail 时必须遵守的录制端到端e2e测试规范。读完本文你将能够熟练使用内置 Rail 组装自己的护栏配置并按照仓库标准为新增 Rail 补齐可回放、不依赖外部服务的测试覆盖。一、什么是 NeMo Guardrails LibraryNeMo Guardrails 是一个用于为基于 LLM 的对话系统添加可编程护栏的开源工具包。其中nemoguardrails/library/目录即文档所称的 Library存放一组预构建好的 Rail它们的共同特点是任何配置config都可以直接激活这些 Rail无需自己从零编写 Colang 流程或动作代码。也就是说Library 相当于官方维护的护栏插件商店输入护栏、输出护栏、检索护栏、工具护栏、事实核查、敏感数据检测等常见能力都已经以标准化的目录结构封装好使用者只需在 YAML 配置中声明对应流程名即可启用。从源码结构看Library 的每个功能子目录都遵循统一的四件套布局以nemoguardrails/library/regex/为例rail.py声明 Rail 的清单Manifest定义名称、方向、动作、绑定与文档地址rail_config.py定义该 Rail 的配置项与校验逻辑build_config_specactions.py实现具体的动作函数action装饰器标记flows.co/flows.v1.co提供 Colang v2 / v1 两种语法下的流程定义__init__.py模块初始化Apache-2.0 许可证头。二、内置 Rail 目录总览当前仓库的nemoguardrails/library/下包含 40 余个功能目录覆盖了从通用能力到第三方服务接入的广泛场景类别子目录核心能力通用检测regex正则模式匹配支持 input/output/retrieval/tool 多方向阻断与转换安全检测jailbreak_detection提示注入与越狱检测heuristics 与 model-based 两种后端安全检测injection_detection基于 YARA 规则的注入检测含yara_rules/下的 code/sqli/template/xss 规则内容安全content_safety对用户输入与机器人输出做安全策略合规检查NIM 服务内容安全self_check自我检查input_check、output_check、facts三个子模块话题控制topic_safety判断用户消息是否偏离设定话题事实核查factchecking对齐评分align_score等事实核查能力数据保护sensitive_data_detection敏感数据/PII 检测第三方服务activefence、ai_defense、clavata、crowdstrike_aidr、f5、fiddler、gcp_moderate_text、gliner、guardrails_ai、llama_guard、pangea、patronusai、policyai、polygraf、privateai、prompt_security、trend_micro等对接各家安全/审核/内容风控 API其他attention、autoalign、cleanlab、context_bloat_detection、hallucination、hf_classifier、tool_safety_check、utils注意力机制、上下文膨胀检测、幻觉检测、工具调用安全等其中部分目录还附带自己的README.md如cleanlab、context_bloat_detection、llama_guard详细介绍各自的能力与用法。三、Rail 的标准化结构rail.py 清单Manifest每个内置 Rail 的核心是rail.py中导出的RAIL对象它是一个RailManifest。以 regex 的 rail.py 为例它声明了nameregexRail 注册名metadata展示名、描述、所属类别input/output/retrieval/tool_output/tool_input、能力block/classify/moderate/transform、标签以及文档地址docs/configure-rails/guardrail-catalog/community/regex.mdxconfig_schema配置键为regex_detection指向rail_config.py中的build_config_specflows公开流程名如regex check input、regex check output、regex check retrieval、regex check tool output、regex check tool inputactions动作引用如detect_regex_pattern指向nemoguardrails.library.regex.actions:detect_regex_patternsurfaces声明每个流程方向的绑定关系Binding.literal(source, input)、Binding.context(text, user_message)等。类似的content_safety 的 rail.py 将content safety check input绑定到content_safety_check_input动作与user_message上下文并通过Binding.model_param(model_name, model)支持在激活时指定专门的审核模型injection_detection 的 rail.py 则声明了输出方向的injection detection流程并把yara-python标记为可选依赖。这些 Manifest 是如何被框架发现的答案是 manifests/catalog.py 中的RailCatalog.discover_built_ins()它递归扫描nemoguardrails/library/下所有rail.py文件将其按模块路径导入并读取RAIL对象汇总成 Rail 目录catalog。因此新增一个 Rail 的最小签名就是在其目录下提供定义RAIL的rail.py。四、配置层面的激活方式文档指出 Library 中的 Rail can be activated in any config。激活方式是在配置文件的rails.config下填写对应 Rail 的配置并在rails.input/rails.output等段落引用其公开流程名。以录制测试中最小的 regex_detection/config.yml 为例models: [] rails: config: regex_detection: input: patterns: - SECRET-[0-9] output: patterns: - INTERNAL-[A-Z] input: flows: - regex check input output: flows: - regex check output其中regex_detection下的patterns就是 rail_config.py 中RegexDetectionOptions定义的配置项还支持case_insensitive开关框架会在配置加载时调用model_validator预编译所有正则并在遇到非法正则时抛出ValueError。而 full_stack/config.yml 展示了多 Rail 组合的全家桶配置输入侧依次串联regex check input、self check input、jailbreak detection model、content safety check input $modelcontent_safety、topic safety check input $modeltopic_control输出侧串联regex check output、self check output、self check facts、content safety check output $modelcontent_safety。可见流程可以带$modelxxx参数将某类任务绑定到配置文件中声明的专用模型如nvidia/llama-3.1-nemoguard-8b-content-safety多个护栏按声明顺序依次执行达到组合防护效果passthrough: true时主模型直接透传生成便于录制测试断言护栏行为。五、贡献一个新 Rail 的完整路径根据 library/README.md 的要求在nemoguardrails/library/feature/下新增 Rail 时必须同时添加录制式端到端测试覆盖以钉住pin该 Rail 的公开契约并保证测试可以在没有外部服务的情况下回放。结合仓库实际一个完整的贡献流程通常包含以下步骤创建功能目录在nemoguardrails/library/feature/下新建__init__.py、rail.py、rail_config.py、actions.py与flows.co如兼容 v1 还需flows.v1.co。声明 Manifest在rail.py中导出RAIL RailManifest(...)被 catalog.py 的discover_built_ins()自动发现。实现动作在actions.py中用action(is_system_actionTrue)装饰动作函数返回RailOutcome.block/allow/transform等结果。例如 regex 的detect_regex_pattern会将匹配结果组装为RailOutcome.block(metadata...)actions.py。添加录制测试在tests/recorded/rails/library/下按行为归类新建测试模块。六、录制式 e2e 测试规范详解关联文档 tests/recorded/rails/library/README.md 对录制测试的约束非常明确这是贡献新 Rail 时的硬性要求。1. 按行为分组不按功能混放测试按行为behavior分组到对应模块test_regex.pytest_injection.pytest_self_check.pytest_content_safety.pytest_topic_control.pytest_jailbreak.pytest_composition.py此外仓库还包含test_f5_guardrails.py、test_iorails_parity.py等模块。新场景应直接加入拥有该行为的模块共享代码只允许放在configs.py配置常量与helpers.py执行辅助函数中。2. 使用正确的 API 形态直接断言护栏判定时使用check_async见 helpers.py 中的check_rails内部调用rails.check_async(messages, rail_types...)仅当被测行为确实涉及生成或流式输出时才使用generate_async或stream_async输出护栏需要确定性主模型文本时优先使用FakeLLMModel注入固定响应generate_with_fake_main或为流式场景提供流生成器stream_with_fake_main中的async_chunks。3. 依赖外部提供商的测试走 VCR 录制Provider 类测试使用 pytest-recording默认 cassette 存放于tests/recorded/rails/library/cassettes/test_module/test_name.yaml仓库中已录制的 cassette 覆盖了内容安全含 Nemotron-3.5 系列、越狱检测、话题控制、自我检查、组合执行顺序等多种场景例如test_composition/test_input_jailbreak_runs_before_content_safety.yaml记录了越狱检测先于内容安全执行的组合行为。4. 运行与刷新测试# 运行阻断网络确保完全依赖录制回放 uv run pytest tests/recorded/rails/library --block-network -v # 刷新重写 cassette跳过 fake_cassette 场景 uv run pytest tests/recorded/rails/library --record-moderewrite -m not fake_cassette -v第一条命令是 CI 式的验证路径--block-network强制测试只能消费已有 cassette第二条命令用于在 Rail 行为发生变化时重新录制将新的真实调用结果写回 cassette。5. 测试常量与配置集中管理所有测试共享的配置常量集中在 configs.py它通过RailsConfigSource.from_path(CONFIGS_DIR, regex_detection)等加载configs/下的 YAML并定义了JAILBREAK_PROMPT等标准攻击样本。测试配置目录tests/recorded/rails/library/configs/则提供了从最小regex_detection到openai_input_stack、openai_output_stack、full_stack、full_stack_no_topic以及各类 NIM 配置的完整样例是编写新测试配置的最佳参照。七、验证示例regex Rail 的录制测试如何钉住契约以 test_regex.py 为例直观展示录制测试的形态async def test_regex_input_blocks_secret(): result await check_rails( REGEX_CONFIG, [{role: user, content: my token is SECRET-1234}], rail_types(RailType.INPUT,), ) assert_rails_result(result, statusRailStatus.BLOCKED, railregex check input) assert normalize_rails_result(result) snapshot( {status: blocked, rail: regex check input, content: Im sorry, I cant respond to that.} )它验证了当用户消息命中SECRET-[0-9]模式时regex check input流程返回BLOCKED状态与标准拒绝文本输出侧测试则验证机器人若生成INTERNAL-SECRET会被regex check output阻断。这类断言把 Rail 的公开行为以快照snapshot形式固定下来——这正是 README 所说public contract is pinned and replayable的具体落地。八、小结NeMo Guardrails Library 是官方预置护栏的集合每个 Rail 以rail.pyManifest 为入口、由rail_config.py/actions.py/flows.co支撑实现通过RailCatalog.discover_built_ins()自动发现在任意配置中按流程名即可激活。对于想要向社区贡献新 Rail 的开发者遵循tests/recorded/rails/library/的录制测试规范按行为分组、check_async为主、Provider 调用走 VCR、--block-network验证是让新 Rail 获得可回放契约保证的必备步骤。进一步阅读Library 主文档录制测试规范Rail Manifest 与目录发现实现regex Rail 配置项定义完整组合配置示例赞分享人工智能大模型AI 安全治理模型安全内容安全提示词注入防护RAG【免费下载链接】GuardrailsNeMo Guardrails is an open-source toolkit for easily adding programmable guardrails to LLM-based conversational systems.项目地址https://gitcode.com/gh_mirrors/ne/Guardrails点击查看免费下载相关推荐使用 NeMo Guardrails 接入 Nemotron 3.5 Content Safety输入输出内容安全 Rail 配置实战使用 NeMo Guardrails 接入 Nemotron 3.5 Content Safety输入输出内容安全 Rail 配置实战 NeMo Guardr人工智能大模型AI 安全治理模型安全内容安全提示词注入防护RAGNeMo Guardrails安全护栏终极指南30预置安全检测规则详解NeMo Guardrails是一个开源的LLM安全护栏工具包专为基于大语言模型的对话系统设计。它提供了超过30种预置的安全检测规则帮助开发者在AI应用开发人工智能大模型AI 安全治理模型安全内容安全提示词注入防护RAGGuardrails AI终极指南RAIL规范与核心架构深度解析Guardrails AI终极指南RAIL规范与核心架构深度解析 你是否曾经在使用大型语言模型时遇到过输出格式混乱、内容质量参差不齐的问题 GuardrAI 安全治理模型安全AI 应用上一篇Home Assistant ISY994 节点命令操作指南使用 isy994.send_node_command 实现 Beep、调光与快速开关下一篇anarlog 的 sfx 音效插件权限体系Tauri ACL 默认权限、命令级授权与源码实现解析创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
锦
锦皓数字建站
深耕本土企业品牌数字化升级,专注原创端正雅致商务官网,从视觉设计到稳定运维全程保驾护航。