代码扩展
敏感内容审查
除了系统内置的内容审查类型,Dify 也支持用户扩展自定义的内容审查规则,该方法适用于私有部署的开发者定制开发。比如企业内部客服,规定用户在查询的时候以及客服回复的时候,除了不可以输入暴力,性和非法行为等相关词语,也不能出现企业自己规定的禁词或违反内部制定的审查逻辑,那么开发者可以在私有部署的 Dify 代码层扩展自定义内容审查规则。
快速开始
这里以一个 Cloud Service
内容审查扩展为例,步骤如下:
- 初始化目录
- 添加前端组件定义文件
- 添加实现类
- 预览前端界面
- 调试扩展
1. 初始化目录
新增自定义类型 Cloud Service
,需要在 api/core/moderation
目录下新建相关的目录和文件。
2.添加前端组件规范
schema.json
,这里定义了前端组件规范,详细见 Broken link 。
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
:终端用户当前对话输入内容,对话型应用固定参数。ModerationInputsResult
flagged
是否违反校验规则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 字为一个分段的内容。ModerationOutputsResult
flagged
是否违反校验规则action
执行动作direct_output
直接输出预设回复overridden
覆写传入变量值
preset_response
预设回复(仅当 action=direct_output 返回)text
覆写的 LLM 回答内容(仅当 action=overridden 返回)。