首页
学习
活动
专区
圈层
工具
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

警惕!你的 AI 聊天可能正在 “泄密”!这组工具让风险无所遁形

在信息爆炸的 AI 时代,大语言模型(LLM)的应用愈发广泛。然而,其背后隐藏着不容忽视的风险。

你是否知道,即使用户发送相同的指令,大模型在不同时间的回复也可能大相径庭?若遇到恶意的对话攻击,后果更是不堪设想。那么,如何为大模型筑牢安全防线,在杜绝风险内容的同时保障优质内容的准确输出呢?

今天,就让我们深入了解英伟达的 NeMo-Guardrails—— 一款全面的 LLM 安全工具集。

一、NeMo-Guardrails 的核心价值:守护大模型安全与质量

NeMo-Guardrails 的核心使命,是规避大模型生成风险内容,提升生成质量。它就像一位严谨的内容管家,既要拦截恶意信息,又要确保真实、优质内容顺利通过,避免像杀毒软件那样出现 “误杀” 情况。

为了更直观地理解其功能,我们来看一组来自英伟达安全审查模块的数据:

NeMo-Guardrails 提供了广泛的可编程护栏,从输入到输出全方位控制和指导 LLM :

输入轨道(Input rails)

如同输入的 “安检员”,对用户输入进行严格把关。它可以直接拒绝不安全的输入,停止后续处理流程;也能够对输入内容进行修改,例如隐藏敏感信息或改写存在风险的语句。

对话轨道(Dialog rails)

作用于给 LLM 的提示,决定消息的处理方式。它会判断是否执行某个动作,选择召唤 LLM 进行下一步回复,或者直接采用预定义的答案进行响应。

执行轨道(Execution rails)

负责管理 LLM 调用自定义动作(工具)时的输入和输出,确保外部功能调用的安全性和准确性。

输出轨道(Output rails)

是输出内容的 “质检员”,能够拒绝不安全的输出,阻止其发送给用户,还可以对输出进行修改,删除其中的敏感数据 。

后续,我们将结合 llamaindex 项目,对这些功能进行实际测试,验证其防护效果。接下来,让我们深入探究,这些强大功能背后是如何实现的。

二、四大模块协同运作,构建坚实安全体系

NeMo-Guardrails 的高效运行,依赖于四个核心模块的紧密协作。接下来,我们以教育组的 llamaindex 全栈项目为例,详细拆解各模块的功能与工作机制。

(一)config.yml:掌控全局的 “总开关”

config.yml 是整个项目的核心配置文件,它就像一个指挥中枢,对项目的运行进行全面把控。我们通过具体代码来深入了解:

models

用于指定项目中使用的模型名称。英伟达官方已为大部分模型设计了提示优化,支持 chat model 和 Embeddings Model。对于不在列表中的模型,用户也可以根据官方指南(https://github.com/NVIDIA/NeMo-Guardrails/blob/develop/docs/user_guides/configuration-guide.md)进行自定义配置。

instructions

定义通用指令,类似于系统提示,会添加到每个提示的开头,为 LLM 提供对话的基本背景和规则。

sample_conversation

通过示例对话,在用户和机器人之间建立对话语气,帮助 LLM 理解响应的格式和风格,该部分至少需要包含两轮对话。

rails

这里定义了输入和输出轨,激活相应的护栏规则,确保输入输出符合安全规范 。

(二)prompts.yml:严格把关的 “审核员”

prompts.yml 如同一位严谨的审核员,对输入输出内容进行严格审查。我们来看具体的代码示例:

这两个提示分别针对用户输入和机器人输出,严格审核内容是否符合安全策略,一旦发现攻击性或违规内容,立即进行拦截。

(三)actions.py:灵活引导的 “指导员”

actions.py 是一种特殊的可编程规则,充当着 “指导员” 的角色,它并不侧重于过滤话题,而是从更深层次确保大模型的安全、可靠运行,实现复杂的对话逻辑。其核心作用体现在以下三个方面:

触发响应

根据特定条件或输入,触发 LLM 的特定响应,支持自定义逻辑,打破静态响应的局限,实现更灵活的交互。

调用外部服务

将 LLM 与外部数据库、API 及其他工具 / 框架连接起来,拓展大模型的能力边界,就像打通了 LLM 的 “任督二脉” 。

控制对话流程

引导对话朝着指定方向发展,提示特定问题或避免不必要的偏离,使对话更加高效、有针对性 。

以实际代码为例:

这里定义了三个关键函数:

init

负责加载源文档,构建 LlamaPack 和 RAG 管道的高级查询,并对查询引擎进行缓存,提高后续使用效率。

get_query_response

根据传入的 query_engine 和 query,检索相关节点信息,传递给 LLM,最终生成响应内容。

user_query

从上下文获取用户消息,初始化查询引擎,并调用 get_query_response 函数,将生成的结果返回 。

更多关于 actions.py 的配置细节,可参考官方文档(https://github.com/NVIDIA/NeMo-Guardrails/blob/develop/docs/user_guides/python-api.md#actions)。

(四)bot_flows.co:智能高效的 “自检员”

bot_flows.co 使用 Colang 建模编程语言,将前面各模块配置好的步骤进行整合,实现输入输出的自我检查和复杂对话管理。它定义了三个关键流程:

输入自我检查(self check input)

执行内置操作,判断用户输入是否合规。若不合规,机器人将拒绝响应,并停止对当前请求的处理 。

输出自我检查(self check output)

对机器人输出进行审查,一旦发现违规内容,立即拒绝发送该响应 。

用户查询自定义(user query)

执行自定义操作,与 LlamaIndex 集成,实现高级检索和内容生成,为用户提供更精准的回答 。

具体代码如下:

通过这四个模块的紧密协作,NeMo-Guardrails 实现了对 LLM 行为和响应的灵活控制,能够满足复杂的对话管理和内容生成需求。

  • 发表于:
  • 原文链接https://page.om.qq.com/page/OOatcQJoB1VFWHuIM_lA1YXw0
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

相关快讯

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券