Dify学习使用

Dify 是一个开源的 LLM 应用开发平台。

其直观的界面结合了 AI 工作流、RAG 管道、Agent、模型管理、可观测性功能等,可以快速从原型到生产。

Dify——「大模型应用」开发平台

大模型(LLM)

+

工作流

(Workflow)

+

工具

(Tools)

+

知识库

(Knowledge)

=

智能体应用

(Agent)

LLM是基座 Workflow是流程 工具是能力 知识库是数据 Agent是应用

API+DSL,标准化对接

1.1 Dify 中提供了四种应用类型

  • 聊天助手:基于 LLM 构建对话式交互的助手

  • 文本生成:构建面向文本生成类任务的助手,例如撰写故事、文本分类、翻译等

  • Agent:能够分解任务、推理思考、调用工具的对话式智能助手

  • 工作流:基于流程编排的方式定义更加灵活的 LLM 工作流

  1. RAG:学习新知识 & 保留记忆

RAG即检索增强生成(Retrieval-Augmented Generation),是一种结合了信息检索和文本生成的技术。RAG技术的核心思想是在生成答案之前,先从一个知识库或数据源中检索相关信息,然后将这些信息作为上下文,辅助语言模型生成更加准确和详细的回答。

  1. 基础技术:什么是RAG?

RAG通常包括以下三个步骤:

  1. 检索(Retrieve):根据用户的查询,从预先构建的知识库中检索出相关的文档或信息片段。

  2. 增强(Augment):将检索到的信息与用户的原始查询结合起来,形成一个新的增强查询。

  3. 生成(Generate):使用大型语言模型,基于增强查询生成答案。

  1. RAG解决了什么问题?

引入RAG技术的主要原因是为了解决大型语言模型(LLM)在特定领域知识更新、专业性问题以及生成内容时效性方面的局限性。以下是引入RAG技术的几个关键原因:

暂时无法在飞书文档外展示此内容

  1. 减少模型幻觉:大型语言模型(LLM)在生成文本时可能会产生与训练数据不符或无意义的内容,这种现象被称为“模型幻觉”。RAG通过引入外部信息源,帮助模型生成更准确和有意义的回答。

  2. 提升专业性:LLM在通用领域训练时可能缺乏特定领域的专业知识。RAG技术通过检索特定领域的最新信息,提高了模型在该领域的专业性。

  3. 增强时效性:LLM的知识库通常只包含训练数据中已有的信息,对于新出现的知识可能无法准确反映。RAG允许模型访问最新的数据,从而生成时效性更强的内容。

  4. 支持复杂查询:RAG技术可以处理更复杂的查询,特别是那些需要引用多个来源或文档才能准确回答的查询。

  1. RAG的工程方案

现在大量的大模型应用都是基于RAG技术,因此针对不同场景的各种RAG优化方案非常多。

  1. 创建知识库

3.1 创建知识库的步骤:

在 Dify 主导航栏中点击知识库,在该页面你可以看到团队内的知识库,点击“创建知识库” 进入创建向导。

  1. 在Dify团队内创建知识库,从本地选择你需要上传的文档;

  2. 选择分段与清洗模式,预览效果;

  3. 配置索引方式和检索设置;

  4. 等待分段嵌入;

  5. 完成上传,在应用内关联并使用 🎉

  • 分段

大语言模型存在有限的上下文窗口,无法将知识库中的所有内容发送至 LLM。因此可以将整段长文本分段处理,再基于用户问题,召回与关联度最高的段落内容,即采用分段 TopK 召回模式。此外,将用户问题与文本分段进行语义匹配时,合适的分段大小有助于找到知识库内关联性最高的文本内容,减少信息噪音。

  • 清洗

为了保证文本召回的效果,通常需要在将数据录入知识库之前便对其进行清理。例如,如果文本内容中存在无意义的字符或者空行,可能会影响问题回复的质量。

上传文档存在以下限制:

  • 单文档的上传大小限制为 15MB;

3.2 选择分段与清洗策略

将内容上传至知识库后,需要先对内容进行分段与数据清洗,该阶段可以被理解为是对内容预处理与结构化。

  1. 案例演示

1.构建优化测试用例的工作流
  1. 创建工作流

  1. 单击右键添加节点,工作流包括start-->LLM-->条件分支-->1.结束(满足条件)2.LLM询问-->结束

  2. 各个节点的配置

(1)开始节点

(3)条件分支

(2)LLM

上一个节点的输出添加进入上下文后,可以选择上下文当作本节点的输入,也可以/选择参数当作本次节点的输入。

(4)结束

  1. 运行

输入:编写“Messenger应用中气泡通知动画验证”的测试用例

实际运行的流程为下面的分支

运行结果

输出结果满足提示词要求,并且满足条件分支判断要求和手机性能测试相关。

  1. 输出api接口 

curl -X POST 'https://mify-be.pt.xiaomi.com/api/v1/workflows/run' \ --header 'Authorization: Bearer {api_key}' \ --header 'Content-Type: application/json' \ --data-raw '{ "inputs": {}, "response_mode": "streaming", "user": "abc-123" }'

其中api_key 是工作流中api密钥,inputs是以key/value的形式来输入参数,本案例

"inputs" : {"prompt": "Messenger用户中气泡通知图限证"}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值