为 AI 应用打造安全屏障:基于 Dify 的完备实践
配景先容2025 年是大模子应用爆发的一年。从年初的 DeepSeek 吸引大量开辟者部署大模子产品,到 Manus 和 MCP 等 Agent 方案连续引发关注,行业内掀起了一股打造爆款大模子应用的热潮。
然而,在这股热潮中,大模子的安全性问题往往被忽视。事实上,AI 应用的安全性是实现完备大模子应用的关键环节。2024 年的一篇文章 Building A Generative AI Platform 中,曾先容过大模子应用的完备架构:
https://i-blog.csdnimg.cn/direct/9515dbe149c04fb783bbfbbe8080556d.png
其中,安全模块主要包罗输入围栏(Input guardrails)和输出围栏(Output guardrails)。尽管文章提到了安全机制,但未提供具体的实现方案。在本文中,我们将基于当前盛行的大模子应用平台 Dify,探索并实践一套完备的安全性解决方案。我们将从简单方案入手,徐徐扩展到更符合生产环境需求的实现。
安全性方案
为了实现文本内容的安全性检测,我们可以根据实现成本从低到高,选择以下三种方案:
[*]基于关键词与规则的审查:通过维护敏感词库并利用正则表达式或文本匹配算法进行检测。此方案实现简单、服从高,但正确率较低。
[*]基于呆板学习的内容审核:利用现有审核模子或训练独立模子,尽管实现复杂,但可以显著提升正确率。
[*]基于人机联合的审核机制:人工智能审核大概存在遗漏,尤其是暗昧边界问题,人工审核能够确保终极的正确性。
人机联合的审核更多体现在工程设计上,因此本文主要聚焦于前两种方案的实践与落地。
方案实践
在实践过程中,我们按照成本从低到高的顺序展开,先利用内置方案,再徐徐扩展到自界说方案。
基于内置方案的实践
Dify 提供了两种开箱即用的安全性方案:基于关键词的审查和基于 OpenAI 的内容审核。这些功能可以在平台的功能页面直接启用:
https://i-blog.csdnimg.cn/direct/0b7d4f5c677a48138834689a3c2ffec8.png
关键词方案
关键词审查是最简单的入门方案。通过配置关键词库和预设输入输出的响应内容,即可快速上手。
实际测试表明,关键词功能符合预期,但在生产环境中存在以下限制:
[*]默认关键词只能通过网页端配置,动态更新受限。
[*]关键词数量限制为 100 个,难以满足生产需求。
OpenAI 审核方案
基于 OpenAI 的审核方案属于呆板学习内容审核的范畴。然而,在国内环境中利用此方案存在较大停滞。此外,国内外审核政策差异较大,若要落地生产环境,仍需自界说实现。
基于自界说拓展的方案选型
Dify 考虑到内置方案的局限性,提供了两种自界说拓展方式:
[*]API 扩展:通过部署独立的审核服务并提供 API 接口,灵活控制审核逻辑。但此方案必要额外维护服务,增加成本。
[*]代码扩展:直接在 Dify 的代码仓库中实现自界说审核逻辑,无需额外部署,且支持灵活的前端配置。
API 扩展
API 扩展的实现较为简单,只需遵循 官方文档 的 API 请求参数规范即可。但维护独立服务的成本较高,得当对灵活性要求较高的场景。
代码扩展
代码扩展无需额外部署,且能无缝嵌入现有应用中。通过遵循 官方实现规范,可以实现灵活的前端配置选项,效果如下:
https://i-blog.csdnimg.cn/direct/658a803d122045d89672fe732f166363.png
基于代码扩展的实践
在实现自界说方案时,我们选择关键词库与大模子联合的方案。关键词过滤服从高,可快速拦截违规内容;对于漏网之鱼,再通过大模子进行二次审核,兼顾服从与成本。
考虑到 Dify 应用中通常已部署大模子,我们优先复用现有模子,避免额外部署成本。同时,为满足差别场景需求,可提供纯关键词审核的选项。
实现步骤
1、 初始化目录
在 Dify 项目的 api/core/moderation 下创建目录和文件:
api/core/moderation
├── custom
└── custom.py
└── schema.json
2、 添加前端组件界说文件
在 schema.json 中界说前端配置项,例如:
{
"label": {
"en-US": "Custom Moderation",
"zh-Hans": "自定义"
},
"form_schema": [
{
"type": "select",
"label": {
"en-US": "Moderation Type",
"zh-Hans": "检测类型"
},
"variable": "moderation_type",
"required": true,
"options": [
{
"label": {
"en-US": "Keyword",
"zh-Hans": "关键词"
},
"value": "Keyword"
},
{
"label": {
"en-US": "Keyword & LLM",
"zh-Hans": "关键词 & 大模型"
},
"value": "Keyword & LLM"
}
],
"default": "Keyword"
},
{
"type": "paragraph",
"label": {
"en-US": "Custom Keywords",
"zh-Hans": "自定义关键词"
},
"variable": "custom_keywords",
"required": false,
"default": "",
"placeholder": "请输入额外的敏感关键词,每行一个"
}
]
}
3、 添加实现类
实现类继承自内置 Moderation 类,重写 moderation_for_inputs 和 moderation_for_outputs 方法。关键词审核可参考官方已有的组件快速实现;大模子审核可通过 ModelManager 调用用户配置的默认大模子,这样可以更好的地适配 Dify 框架,避免用户必要额外配置安全围栏的大模子。
from core.model_manager import ModelManager
model_manager = ModelManager()
model_instance = model_manager.get_default_model_instance(
tenant_id=self.tenant_id,
model_type=ModelType.LLM,
)
prompt_messages =
response = cast(
LLMResult,
model_instance.invoke_llm(
prompt_messages=prompt_messages,
model_parameters={"temperature": 0.01, "max_tokens": 2000},
stream=False,
),
)
效果验证
完成实现后,通过 ChatGPT 生成一批测试问题验证效果。实际测试表明,大部分场景下均能正确拦截违规内容,但涉及儿童教育的问题国内的大模子没有触发拦截,这种环境也符合国情,基本上符合预期。
https://i-blog.csdnimg.cn/direct/d0266249a8ec49658c357b3dc5cc0476.png
https://i-blog.csdnimg.cn/direct/03a1edc5f176479b9bc0b255cb6e4f1c.png
https://i-blog.csdnimg.cn/direct/fa76599f99c84e9a93903c0dab1b1812.png
总结
本文基于 Dify 框架,实践了关键词审核与内容审核的完备实现方案。该方案以最低成本实现主动化审核能力,实用于生产环境。为提升审核效果,可联合人工审核进一步优化。感兴趣的读者不妨亲自实践一下。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页:
[1]