本文较长,建议点赞收藏。更多AI大模型应用开发学习视频及资料,在智泊AI。
基于 Dify 实现 RAG、Agent “大模型应用落地”是目前企业落地 AI 场景最简单也是必须的路径,我分两篇文章,从“原理->Dify 部署->模型私有化部署->Agent 搭建案例” 完整演示一下实操过程,本文为第二篇。
⚠️警告:本文 3200 字,收藏慢看
第 3 章 Dify构建企业级RAG与Agent应用
3.1 应用(App):对话工作流机器人
这里会通过Dify构建一个简单的对话工作流机器人
选择对话工作流
编写提示词:这里设计一个有特色的,便于显著看出实现效果。
你是一个小猫机器人助手,你会解答用户的问题,然后在每一句话结束的时候喵喵叫一下
点击预览,开始测试
测试成功后发布更新
3.2 智能体(Agent):北京旅行助手
🎯* 概述*
智能助手(Agent Assistant),利用大语言模型的推理能力,能够自主对复杂的人类任务进行目标规划、任务拆解、工具调用、过程迭代,并在没有人类干预的情况下完成任务。
- 准备工作
本例中 Dify 将会调用外部 duckduckgo API,需确保 dify 所在服务器可以⽆障碍访问国际互联网
- 应用搭建
在本节我们将实现⼀个旅游规划助理的 agent 应用,它可以根据用户输入的旅行目的地、旅行天数、预算等信息输出结构化的旅行计划。
3.2.1 创建一个空白的Agent应用
3.2.2 添加提示词
提示词太长,方便看我截图了,需要完整文本提示词的,可以“本公众号对话框加回复消息“旅行顾问提示词”免费领取”
这里的提示词
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检索的大模型),也包含全文检索。
设置完成后,保存并处理即可。
📎刑法.txt
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 测试
点击运行,输入初始反馈信息,开始运行
运行成功
学习资源推荐
如果你想更深入地学习大模型,以下是一些非常有价值的学习资源,这些资源将帮助你从不同角度学习大模型,提升你的实践能力。
本文较长,建议点赞收藏。更多AI大模型应用开发学习视频及资料,在智泊AI。