SuperAPI AI 工具集

NeMo-Guardrails

NVIDIA NeMo Guardrails 是一个开源工具包,用于为基于大语言模型(LLM)的对话应用添加可编程护栏。护栏是控制 LLM 输出的具体方式,例如避免谈论政治、以特定方式回应用户请求、遵循预定义对话路径、使用特定语言风格、提取结构化数据等。开发者可以在应用代码与 LLM 之间加入护栏,以构建可信、安全、可靠的 LLM 应用。该工具包支持多种护栏类型,包括输入护栏、对话护栏、检索护栏、执行护栏和输出护栏,并可与多个 LLM(如 OpenAI GPT-3.5、GPT-4、LLaMa-2、Falcon、Vicuna、Mosaic)配合使用,还提供与 LangChain 的可选集成。它包含内置护栏库、CLI 工具和护栏服务器,支持通过 Python API 或 HTTP API 使用。最新发布版本为 0.24.1,遵循 Apache License 2.0 许可。

访问官网

工具介绍

用途

NVIDIA NeMo Guardrails 是一个开源工具包,旨在为基于大语言模型(LLM)的对话应用添加可编程护栏(rails)。护栏是控制 LLM 输出的具体方式,例如:不谈论政治、以特定方式回应特定用户请求、遵循预定义对话路径、使用特定语言风格、提取结构化数据等。开发者可以在应用代码与 LLM 之间插入护栏层,从而构建可信、安全、可靠的 LLM 应用,防止模型参与不期望的话题讨论。

主要能力

该工具包支持五种主要护栏类型:

  • 输入护栏(Input rails):应用于用户输入,可拒绝输入以停止后续处理,或修改输入(如掩码敏感数据、改写)。
  • 对话护栏(Dialog rails):影响 LLM 的提示方式,基于规范形式消息运作,决定是否执行动作、是否调用 LLM 生成下一步或响应、是否使用预定义响应等。
  • 检索护栏(Retrieval rails):应用于 RAG(检索增强生成)场景中检索到的文本块,可拒绝或修改文本块。
  • 执行护栏(Execution rails):应用于自定义动作(工具)的输入/输出。
  • 输出护栏(Output rails):应用于 LLM 生成的输出,可拒绝输出或修改输出(如移除敏感数据)。

该工具包还提供针对 LLM 常见漏洞(如越狱和提示注入)的保护机制,并内置多种护栏,包括 LLM 自检(输入/输出审核、事实核查、幻觉检测)、NVIDIA 安全模型(内容安全、话题安全)、越狱和注入检测,以及与社区模型和第三方 API 的集成。

使用方式

安装要求 Python 3.10、3.11、3.12 或 3.13。可以使用 pip 安装。

使用 Python API 添加护栏仅需两步:

  1. 加载护栏配置并创建 LLMRails 实例。
  2. 使用 generate / generate_async 方法调用 LLM。

输入输出格式类似于 OpenAI 的 Chat Completions API。该工具包是异步优先的,公共方法同时提供同步和异步版本(如 LLMRails.generate 和 LLMRails.generate_async)。

还可以使用内置 CLI 启动护栏服务器,从指定文件夹加载一个或多个配置,并暴露 HTTP API。例如使用 /v1/chat/completions 端点获取聊天补全。也可使用 Docker 容器启动护栏服务器(提供了 Dockerfile 构建 nemoguardrails 镜像)。

LangChain 集成为可选,需设置环境变量 NEMOGUARDRAILS_LLM_FRAMEWORK=langchain 或调用 set_default_framework("langchain") 启用。

护栏配置通过文件夹组织,包含 config.yml(通用配置选项,如 LLM 模型、激活的护栏、自定义配置数据)、config.py(自定义初始化代码)、actions.py(自定义 Python 动作)以及 .co 文件(包含 Colang 定义,用于定义各种护栏)。Colang 是专为设计灵活可控对话流而创建的建模语言,具有类似 Python 的语法。

适用场景

  • 基于文档的问答(RAG):强制执行事实核查和输出审核。
  • 领域特定助手(聊天机器人):确保助手保持话题并遵循设计的对话流程。
  • LLM 端点:为自定义 LLM 添加护栏以实现更安全的客户交互。
  • LangChain 链(可选):在链周围包裹护栏层。

限制

  • 评估 LLM 对话应用的安全性是一项复杂任务,仍是开放研究问题。该库提供了评估工具(nemoguardrails evaluate)支持话题护栏、事实核查、审核和幻觉检测,并提供样本 LLM 漏洞扫描报告。
  • 该库收集匿名遥测数据以帮助 NVIDIA 了解部署模式和安全功能使用情况。可在库启动前通过设置环境变量或创建 do_not_track 文件选择退出。遥测不包括用户内容、模型名称、API 密钥、端点、提示、补全、令牌计数、每请求指标、文件路径、用户名或 IP 地址。
  • 使用第三方端点(如 NVIDIA Build)时,该端点有自己的服务条款和隐私实践,库的遥测退出不延伸至端点。NVIDIA Build 仅用于评估和测试,不得用于生产环境,使用时应避免提交机密信息或个人数据。
  • 该库遵循 Apache License 2.0 许可。

其他信息

最新发布版本为 0.24.1,开发分支跟踪最新开发进度。官方文档位于 docs.nvidia.com/nemo/guardrails。该工具包与多种 LLM 兼容,如 OpenAI GPT-3.5、GPT-4、LLaMa-2、Falcon、Vicuna、Mosaic 等。