敏感内容审查
除了系统内置的内容审查类型,Dify 也支持用户扩展自定义的内容审查规则,该方法适用于私有部署的开发者定制开发。比如企业内部客服,规定用户在查询的时候以及客服回复的时候,除了不可以输入暴力,性和非法行为等相关词语,也不能出现企业自己规定的禁词或违反内部制定的审查逻辑,那么开发者可以在私有部署的 Dify 代码层扩展自定义内容审查规则。
快速开始
这里以一个 Cloud Service 内容审查扩展为例,步骤如下:
初始化目录
添加前端组件定义文件
添加实现类
预览前端界面
调试扩展
1. 初始化目录
新增自定义类型 Cloud Service,需要在 api/core/moderation 目录下新建相关的目录和文件。
.
└── api
└── core
└── moderation
└── cloud_service
├── __init__.py
├── cloud_service.py
└── schema.json2.添加前端组件规范
schema.json,定义前端组件,详细请参考https://docs.dify.ai/zh-hans/guides/extension/code-based-extension
3. 添加实现类
cloud_service.py 代码模板,你可以在这里实现具体的业务逻辑。
注意:类变量 name 为自定义类型名称,需要跟目录和文件名保持一致,而且唯一。
4. 调试扩展
至此,即可在 Dify 应用编排界面选择自定义的 Cloud Service 内容审查扩展类型进行调试。\
实现类模板
实现类开发详细介绍
def validate_config
schema.json 表单校验方法,当用户点击「发布」保存配置时调用
config表单参数{{variable}}表单自定义变量inputs_config输入审查预设回复enabled是否开启preset_response输入预设回复
outputs_config输出审查预设回复enabled是否开启preset_response输出预设回复
def moderation_for_inputs
输入校验函数
inputs:终端用户传入变量值query:终端用户当前对话输入内容,对话型应用固定参数。ModerationInputsResultflagged是否违反校验规则action执行动作direct_output直接输出预设回复overridden覆写传入变量值
preset_response预设回复(仅当 action=direct_output 返回)inputs终端用户传入变量值,key 为变量名,value 为变量值(仅当 action=overridden 返回)query覆写的终端用户当前对话输入内容,对话型应用固定参数。(仅当 action=overridden 返回)
def moderation_for_outputs
输出校验函数
text:模型输出内容moderation_for_outputs:输出校验函数text:LLM 回答内容。当 LLM 输出为流式时,此处为 100 字为一个分段的内容。ModerationOutputsResultflagged是否违反校验规则action执行动作direct_output直接输出预设回复overridden覆写传入变量值
preset_response预设回复(仅当 action=direct_output 返回)text覆写的 LLM 回答内容(仅当 action=overridden 返回)。
\
Last updated