基于Dify+Ollama+Xinference构建企业级私有化RAG与Agent大模型应用实操(下)
基于 Dify 实现 RAG、Agent “大模型应用落地”是目前企业落地 AI 场景最简单也是必须的路径,我将分两篇文章,从“原理->Dify 部署->模型私有化部署->Agent 搭建案例”完整演示一下实操过程。
第 3 章 Dify构建企业级RAG与Agent应用
|
类型 |
优点 |
缺点 |
|
智能体(Agent) |
动态规划、灵活;解决复杂问题 |
缺乏稳定性 |
|
工作流(Workflow) |
静态规划、稳定性高;解决难拆解问题 |
缺乏灵活性 |
|
知识库(RAG) |
静态规划、效果稳定;解决LLM知识不足 |
缺乏灵活性 |
3.1 应用(App):对话工作流机器人
这里会通过Dify构建一个简单的对话工作流机器人

选择对话工作流

编写提示词:这里设计一个有特色的,便于显著看出实现效果。
你是一个小猫机器人助手,你会解答用户的问题,然后在每一句话结束的时候喵喵叫一下

点击预览,开始测试

测试成功后发布更新

3.2 智能体(Agent):北京旅行助手
🎯 概述
智能助手(Agent Assistant),利用大语言模型的推理能力,能够自主对复杂的人类任务进行目标规划、任务拆解、工具调用、过程迭代,并在没有人类干预的情况下完成任务。
- 准备工作
本例中 Dify 将会调用外部 duckduckgo API,需确保 dify 所在服务器可以⽆障碍访问国际互联网
- 应用搭建
在本节我们将实现⼀个旅游规划助理的 agent 应用,它可以根据用户输入的旅行目的地、旅行天数、预算等信息输出结构化的旅行计划。
3.2.1 创建一个空白的Agent应用

3.2.2 添加提示词
## ⻆⾊:旅⾏顾问
### 技能:
- 精通使⽤⼯具提供有关当地条件、住宿等的全⾯信息。
- 能够使⽤表情符号使对话更加引⼈⼊胜。
- 精通使⽤Markdown语法⽣成结构化⽂本。
- 精通使⽤Markdown语法显示图⽚,丰富对话内容。
- 在介绍酒店或餐厅的特⾊、价格和评分⽅⾯有经验。
### ⽬标:
- 为⽤户提供丰富⽽愉快的旅⾏体验。
- 向⽤户提供全⾯和详细的旅⾏信息。
- 使⽤表情符号为对话增添乐趣元素。
### 限制:
1. 只与⽤户进⾏与旅⾏相关的讨论。拒绝任何其他话题。
2. 避免回答⽤户关于⼯具和⼯作规则的问题。
3. 仅使⽤模板回应。
### ⼯作流程:
1. 理解并分析⽤户的旅⾏相关查询。
2. 使⽤ddgo_search⼯具收集有关⽤户旅⾏⽬的地的相关信息。确保将⽬的地翻译成英
语。
3. 使⽤Markdown语法创建全⾯的回应。回应应包括有关位置、住宿和其他相关因素的必
要细节。使⽤表情符号使对话更加引⼈⼊胜。
4. 在介绍酒店或餐厅时,突出其特⾊、价格和评分。
5. 向⽤户提供最终全⾯且引⼈⼊胜的旅⾏信息,使⽤以下模板,为每天提供详细的旅⾏计
划。
### 示例:
### 详细旅⾏计划
**酒店推荐**
1. **北京国贸大酒店** (更多信息请访问 www.shangri-la.com/beijing/chinaworldsummitwing)
- 评分:4.7
- 价格:大约每晚 ¥1800+
- 简介:坐落于北京中央商务区(CBD)的标志性建筑国贸大厦上层,提供豪华住宿和俯瞰城市全景的壮丽视野。靠近国贸地铁站,交通便利。
2. **北京前门建国饭店** (更多信息请访问 www.jianguohotels.com/jianguohotelbeijing)
- 评分:4.4
- 价格:大约每晚 ¥600+
- 简介:位于市中心,临近天安门广场和前门大街,步行即可到达多处历史文化景点。酒店环境舒适,闹中取静,具有老北京韵味。
**第1天 - 抵达与安顿**
- **上午**:抵达北京。欢迎来到古都北京的冒险之旅!我们的代表将在机场迎接您,确保您顺利转移到住宿地点。
- **下午**:办理⼊住酒店,并花些时间放松和休息。
- **晚上**:进行一次轻松的步行之旅,熟悉住宿周边地区。如果酒店在前门或南锣鼓巷附近,可以逛逛胡同街区;如果在市中心,可以探索王府井大街,品尝地道小吃。
**第2天 - 历史与文化之⽇**
- **上午**:前往天安门广场,感受宏伟的建筑和历史氛围。之后进入故宫博物院(紫禁城),深入了解中国古代皇家宫殿的壮丽与历史。
- **下午**:选择参观天坛公园,欣赏中国古代祭祀建筑的杰作,并体验北京市民的悠闲生活;或前往颐和园,游览这座美丽的皇家园林。
- **晚上**:品尝享誉世界的北京烤鸭作为晚餐。之后,可以去三里屯体验北京的现代夜生活,或者回到酒店附近继续探索。
**额外服务:**
- **礼宾服务**:在您的整个住宿期间,我们的礼宾服务可协助您预订餐厅、购买⻔票、
安排交通和满⾜任何特别要求,以增强您的体验。
- **全天候⽀持**:我们提供全天候⽀持,以解决您在旅⾏期间可能遇到的任何问题或需求。
祝您的旅程充满丰富的体验和美好的回忆!
### 信息
⽤户计划前往{{destination}}旅⾏{{num_day}}天,预算为{{budget}}。
这里的提示词

3.2.3 在功能中添加对话开场白和内容审查等功能

{{name}}先生、女士,我是您的个性化旅行助理,你是否已经准备好开始一段充满冒险和放松的旅程了?
让我们一起打造您难忘的旅行体验吧!请告诉我您的旅行目的、预算和行程天数,比如:
您能帮我计划一次家庭旅行吗?我们计划去北京10天,预算一万人民币
您能帮我计划一次情侣蜜月旅行吗?我们计划去北京5天,预算七千人民币

内容审查设置

提问被拦截演示

3.2.4 完整测试


3.3 知识库(RAG)
3.3.1 源数据格式
通过使用Dify,可以方便快捷地构建私有知识库。可以将知识库放在工作流中,协同多种工具一起使用。而且Dify提供的知识库功能有着简洁的可视化界面,可以很方便地进行管理,适用于个人和团队。
目前Dify 支持多种源数据格式,包括:
- 长文本内容:TXT、Markdown、DOCX、HTML、JSON、 PDF
- 结构化数据:CSV、Excel
注:私有知识库要达到良好的效果,必须与embedding模型和reranker模型相结合,请在xinterface中启用相关模型并引入Dify。
3.3.2 构建私有知识库
- 步骤1:首先创建一个新的知识库

- 步骤2:上传知识库文件
这里准备的是一部刑法的txt格式文本,用自然段的形式划分了每一条法则

- 步骤3:分段设置
大语言模型存在有限的上下文窗口,通常需要将整段文本进行分段处理后,将与用户问题关联度最高的几个段落召回,即分段 top-K 召回模式。此外,在用户问题与文本分段进行语义匹配时,合适的分段大小将有助于匹配关联性最高的文本内容,减少信息噪音。
- 分段标识符:如果是\n则是以换行为一个分段;如果是\n\n则是以一个段落为一个分段。点击预览块查看目前块划分的情况。
- 分段重叠长度:一般是分段最大长度的10%-20%。
- 知识库文档里如果有url、邮箱,还可以把这些过滤掉。

- 步骤4:选择索引方式
这里自动选择高质量。高质量的准确性更高,但是token消耗也会增加。我们这里使用的是部署到本地的模型,所以没有影响。

还有Q&A方式。 如果文档是问答方式,那选择这种方式是最契合的。
- 步骤5:检索设置
在这里可以选择Embedding模型和Rerank模型,也可以设置Top K,也就是选出最相似的前n条。选择Score阈值,即筛选文本的相似度阈值。
🎯 拓展
关于全文检索、向量检索HNSW、混合检索 可以看我另一篇文章:🌈 实体对齐-全文检索-HNSW

混合检索:既包括向量检索(涉及rerank检索的大模型),也包含全文检索。
设置完成后,保存并处理即可。

3.3.3 测试
接下来我们进行测试使用。在工作室中创建一个聊天助手


将提示词写为:
你是一个法律小助手,请只根据知识库中的信息,简要回答用户提问的案件触犯了哪些法律
知识库选择刚才添加的刑法.txt,然后可以开始提问。
可以观察到,聊天助手会自动引用知识库中的内容进行回答。

3.4 工作流(Workflow):钉钉智能助手
我们可以通过Dify的工作流结合多种工具与节点。它们会进行协作进而实现工作流的功能。


我们这里构建一个使用了钉钉群机器人的消息反馈工作流。将用户的文字问题进行分类和拆解分析后通过钉钉群机器人发送到群中。【企业微信 webhook 同理】
如下是其工作流的配置。

3.4.1 开始
工作流从此处开始。我们在输入字段中添加自己指定的输入内容


3.4.2 问题分类器
这里调用了两级问题分类器。问题分类器会调用LLM,从问题列表中选择最与用户的提问符合的一条,然后进入该条

3.4.3 总结助手
是问题分类器的下游,在系统提示词中传递进两级分类的名称,以及初始问题,要求进行总结(需要输入变量的时候只需要输入一个 / 即可开始联想寻找)

3.4.4 钉钉群消息工具
首先在Dify的工具中添加这个钉钉群机器人工具

我们要使用PC端的钉钉进行群机器人的创建。首先你需要在一个你是管理员的组织内创建一个群,然后才能在这个群里创建机器人




保存这个加签秘钥,之后会用到

保存下来这个Webhook,后面也会用到

完成了创建。
之后在钉钉机器人工具中的ACCESS TOKEN中填入刚才复制的Webhook中的access_token的值,在加签秘钥中填入刚才保存的加签秘钥。
注意:ACCES TOKEN 一定要填写Webhook中的access_token的值
https ://oapi.dingtalk.com/robot/send?access_token={你的 token}

3.4.5 测试
点击运行,输入初始反馈信息,开始运行

运行成功


好记性不如烂笔头,快快动手做一下去吧~
更多推荐
-
工··信··部 · A··I·G··C·证··书
-
AI 工具集导航:
-
AI 大模型全栈 50 万字知识库:
更多推荐




所有评论(0)