Dify:使用dify搭建包含RAG的法律表述判断工作流

       Dify 是一款开源的 AI 应用开发平台,旨在帮助开发者快速构建和部署基于大语言模型(LLM)的应用(如智能问答、知识库助手、客服机器人等)。它通过低代码/无代码的方式简化开发流程,同时支持灵活的自定义和扩展;

       核心功能与特点:可视化编排、多模型支持、数据驱动与持续优化、一键部署、开源与安全;可以实现企业知识库助手快速构建基于内部文档的智能问答系统;客服自动化,结合业务数据训练专属客服机器人;也可以作为内容生成工具,开发营销文案、代码生成等场景化应用;还可以制作AI 代理(Agent),创建多步骤任务自动执行的智能体;

       Dify 适合希望快速落地 AI 应用的企业和开发者,平衡了易用性与灵活性。如需了解更多,可访问其 GitHub 仓库 ;这里我们通过搭建一个简单的工作流,一起来感受一下dify工具带来的便捷;

一、安装访问

       Dify支持Docker部署,也可以访问这个网址注册账号进行访问,我选择后者;

# Docker部署

git clone https://github.com/langgenius/dify.git
cd dify
cd docker
cp .env.example .env
docker compose up -d

二、 创建工作流

       在我的这个案例里,我会用到三个模型,包括一个本地基于Ollama部署的大语言模型,一个本地基于Ollama部署的Emdding词嵌入模型,以及一个云端的大语言模型;两个大语言模型用于对用户提问以及RAG知识库信息的总结规划,Emdding词嵌入模型用于生成RAG知识库;不强制必须Ollama本地部署,只要有对应类型的模型即可,可以全部用云端模型;

2.1 创建RAG知识库

       如下图所示,在导航栏点击‘知识库’,点击‘创建知识库’;

       选择“导入已有文本”,选择本地文件进行上传,这里我提供一个简单的word文档;

# word.docx

顺序刷题
1、 经营者收集、使用消费者个人信息,应当公开其收集、使用规则,不得违反法律、法规的规定和双方的约定收集、使用信息。

2、 经营者及其工作人员对收集的消费者个人信息必须严格保密,不得泄露、出售或者非法向他人提供。

3、 经营者应当采取技术措施和其他必要措施,确保信息安全,防止消费者个人信息泄露、丢失。在发生或者可能发生信息泄露、丢失的情况时,应当立即采取补救措施。

4、 经营者未经消费者同意或者请求,或者消费者明确表示拒绝的,不得向其发送商业性信息。


5、 金融机构应当将保护金融消费者合法权益纳入公司治理、()中统筹规划,落实企业文化建设和经营发展战略;人员配备和经费预算,完善金融消费者权益保护工作机制。

       首先会对上传的文本文档进行拆分,拆文为若干个块(chunk);分段标识符【\n\n】表示换行为拆分的分隔符,分段最大长度表示拆分后的每个块最长为500tokens,多出来的另作为新的块;为了防止切分导致语义存在歧义,进行分段重叠拆分,分段重叠长度表示连续块之间的tokens重叠量为50;拆分完成后可以点击‘预览块’在右侧进行查看;

        接下来就是定义索引方式,因为我们需要通过emdding模型做词嵌入向量转化,所以选择高质量索引;下面选择需要使用的词嵌入模型,我这边选择的是自己本地Ollama部署的一个emdding模型;检索设置可以选择输出检索到的前N个块进行输出,也可以设置置信度来筛选掉相似度计算较低的块;

        全部设置完成后点击‘保存并处理’就创建好RAG知识库了;

2.2 创建工作流

       点击‘工作室’,点击‘创建空白应用’;

        按照对应要求,选择‘工作流’,设置工作流名字及描述,点击‘创建’;

       下面是整个工作流的全貌,通过这个流程可以很明了的看出它的工作逻辑;接下来我们就一个一个节点的创建;

 

2.2.1 创建开始节点 

       开始节点需要定义整个工作流的输入,这里我们的输入是需要判断是否正确的相关法律条文,属于文本信息,所以进行如下设置,变量名称可以自己定义,最大长度表示输出文本字符串的最大长度,可以设置的大一点;

2.2.2 创建知识检索节点

       如下图添加知识检索节点;

    

       如下图设置查询变量为开始节点的输入变量,点击‘+’添加知识库,选择上面创建好的知识库进行添加;

2.2.3 创建条件分支节点 

       和创建知识检索节点一样如法炮制,选择知识检索节点的输出变量作为条件判断;

2.2.4 创建大模型节点 

       还是同样的方式,添加两个大模型节点;

2.2.4.1 处理RAG的大模型

       对于处理有RAG知识库返回的大模型的设置,选择适合的大模型,上下文输入选择RAG知识检索节点的输出;然后在系统指令里给大模型指定任务,包含RAG的输出结果;然后在用户指令里填写对大模型的提问请求,包含开始节点的条文输入;

2.2.4.2 处理RAG为空的大模型 

       对于处理没有RAG知识库返回的大模型的设置,同样选择适合的大模型,不同的是这里的上下文选择开始节点的输入变量;系统指令里给大模型制定任务,但无需包含上下文信息;用户指令里向大模型提出请求,包含上下文变量,即开始节点输入的法律条文变量;

2.2.5 创建结束节点 

       添加两个大模型的输出,注意输出变量名要相同,因为两个模型的输出是相互独立的,不存在同时输出结果的情况;

三、运行工作流 

3.1 测试RAG知识库有信息的案例

3.1.1 测试案例

       点击‘运行’,输入需要判断是否正确的相关法律条文,例如:“经营者及其工作人员对收集的消费者个人信息无需保密,可以向他人提供”,点击‘开始运行’;

3.1.2 测试结果

       我们可以看到工作流经过上面的大模型进行信息整理很判断,最终给出了对应结果;

 

3.2 测试RAG知识库没有信息的案例

3.2.1 测试案例

       点击‘运行’,输入需要判断是否正确的相关法律条文,例如:“融机构应当对金融产品和服务的风险及专业复杂程度进行评估并实施分级动态管理”,点击‘开始运行’;

3.2.2 测试结果

       我们可以看到工作流经过下面的大模型进行信息整理很判断,最终给出了对应结果;

### Dify 实现多轮对话的技术文档与示例代码 #### 1. 多轮对话的核心概念 多轮对话是指通过多个回合的交互来完成复杂的任务或提供更精准的信息。这种技术通常依赖于会话状态管理、上下文理解以及记忆机制[^1]。 #### 2. Dify 中实现多轮对话的关键组件 Dify 是一种支持多模态对话和智能体构建的工具,其核心在于如何管理和维护用户的对话历史记录并将其融入到后续响应中。以下是其实现多轮对话的主要组成部分: - **对话历史存储**:Dify 支持将每一轮对话的历史保存下来,并在下一次请求时自动加载这些数据以便更好地理解和回应用户的需求。 - **上下文感知能力**:通过对先前输入的理解,系统能够在当前回复中体现连贯性和一致性[^2]。 - **动态更新策略**:随着新信息的到来调整内部表示形式以适应变化中的意图识别需求。 #### 3. 示例代码展示 下面是一个简单的 Python 脚本演示如何使用 Dify API 来设置一个多轮对话服务端点: ```python from dify import Client client = Client(api_key="your_api_key") def handle_conversation(user_message, conversation_id=None): response = client.chat( messages=[{"role": "user", "content": user_message}], options={"conversationId": conversation_id} ) new_conversation_id = response['conversationId'] bot_reply = response['message']['content'] return bot_reply, new_conversation_id if __name__ == "__main__": current_conv_id = None while True: message = input("User: ") reply, conv_id = handle_conversation(message, current_conv_id) print(f"Bot: {reply}") if not current_conv_id: current_conv_id = conv_id ``` 此脚本展示了基本的工作流程——接收用户消息并通过 `handle_conversation` 函数发送给 Dify 后台处理;然后获取返回的结果并向用户提供反馈。特别注意的是参数 `options={"conversationId": conversation_id}` ,它确保每次调用都关联同一个会话 ID,从而维持整个交流过程的一致性[^3]。 #### 4. 应用实例分析 基于上述方法论,在实际项目开发过程中还可以进一步扩展应用场景比如但不限于以下几个方面: - 构建企业级客户服务代表模拟器; - 开发教育领域内的虚拟导师平台; - 设计医疗健康咨询类小程序等等。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值