前言
让大家知道如何通过知识库的能力,获取指定的结果。这在很多的应用场景是非常有用的能力。
比如依赖有大量规则文档的行业,就会大大减少查找核对的工作。经常看到律师朋友,医生朋友发朋友圈说,AI不行啊,老是”胡说八道”,出现幻觉。
这其实是高估了大语言模型的能力,即使是垂直领域做过SFT,也不可能精确的回答准真正匹配规则的内容。并且微调训练成本也不低,不可能随时更新语料(标注数据)。通过RAG的方法,就可以在特定场景下,严格通过给出的文档内的规则,给出结果。
01. 动手做一做基于上一节课的流程,在大模型节点后新增一个工具节点,选择搜索"天气",点中"高德天气预报"。
选择这个主要是前面知识库的地区名和code对照表,就是高德的。另外这个接口也比较简单,输入就是一个adcode,输出就是今天该地区的天气结果。
添加之后,连接LLM节点和新增节点,再连接新增节点和结束节点。修改参数(一定要先连接),"天气预报"的输入,选择"LLM"的text。然后把结束节点的输出也改为"天气预报"的 ...
前言
让大家知道如何通过工具插件来获取互联网的实时数据,结合大语言模型,才能让结果更加有用。
目前应该已经掌握了知识库的使用,工具插件的使用,并要熟练掌握”LLM”的多次使用。更高阶的知识,是LLM内模型能力的掌握(比如哪家的模型,擅长于什么任务?使用多大的模型,既能满足工作需求,又节约使用费用?),但这可以放在后面再学习。
复习了上节课的内容后,我们继续AI学习之旅。今天教大家使用代码节点,进一步对流程中产生的中间数据,进行”加工”处理,来满足要求。
比如,我们用了高德的”天气预报”工具,得到了今天和将来3天的天气预报数据。但我们只需要拿今天的天气情况,把它整合进我们自己的应用”每日智选”的页面内。
01.动手做一做
基于上一节课的流程,在”天气预报”节点之后,新增一个”代码执行”的节点。
添加之后,连接”天气预报”节点和新增节点;再连接新增节点和结束节点。新增参数(一定要先连接),”代码执行”的输入,选择”天气预报”的text。然后把结束节点的输出也改为”代码执行”的text。
点击”发布”,保存。提示”操作成功”。就可以进行测试了。测试如下:
02. 代码执行的开 ...
我们继续AI学习之旅,今天教大家使用TTS节点,来生成语音播报的音频数据。
学习完成,你将掌握生成语音文件的方法,可以将自己的文字直接变为播客内容。
**01.**动手做一做
基于上一节课的流程,在”代码执行”节点之后,新增一个”Text To Speech”的节点。
添加之后,连接”代码执行”节点和新增节点;再连接新增节点和结束节点。新增参数(一定要先连接),”Text To Speech”的输入,选择”代码执行”的text。
TTS节点需要有模型,这里选择SiliconCloud的fish-speech-1.5。
硅基流动配置非常简单,直接点配置弹出对话框后,跟着”从SiliconFlow获取API Key”的向导,打开官网,注册后创建API Key,然后复制到Dify的配置框,即可。
   新增模型之后,在”系统模型设置”的文本转语音模型,选中fishaudio。
同时新增节点,记得选择声音的类型,包括了4男4女的备选声音,可以都测试一下,看看是否满足自己的需要。
“结束”节点的输出改为”Text To Speech”的files(这里注意不要再选成text ...
除了语音生成,我们还有几种形态的生成,需要继续完成。今天教大家使用Jinja模版,将内容进行格式输出。
学习完成,你将掌握生成内容时,可以用固定的模版,填入动态变化的内容,来生成文案内容等。
01. 动手做一做
基于上上一节课的流程,在”代码执行”节点之后,新增一个”模版转换”的节点。
添加之后,连接”代码执行”节点和新增节点,再连接新增节点和结束节点(这里先移除语音输出处理,后面会加回来,要多路生成不同的内容)。新增参数(一定要先连接)”模版转换”的输入,选择”代码执行”的Object。这里注意,需要将”代码执行”节点也做一些调整。
输出的时候,要按字典而非之前的字符串输出。输出变量也选对象输出。
新增节点修改参数,输入模版内容,不变的内容和动态内容分开,动态内容的值需要有双大括号转义。
点击”发布”,保存。提示”操作成功”。就可以进行测试了。测试如下:
结果输出是一个按模版填入动态获取内容的整段文案结果。
02. 补充说明
今天的任务,也非常简单,但为什么是中级水平呢?原因是,这里的Jinja模版的使用,也需要一定的编程经验。
Jinja原本是Pyth ...
今天我们将要开启企业应用之旅,让Dify真正的在企业中用起来。
学习完成,你将能配置后台的文件存储改为S3或兼容S3的Minio对象存储。
**01.**动手做一做今天的动手实验,与运维相关。如果不感兴趣,可以划走。
首先,需要让Dify知道使用对象存储方式来保存文件。
进入到项目下的docker目录,打开由.env.example文件复制而来的.env文件。找到文件存储配置段,大概在第293行,改动STORAGE_TYPE为S3。
S3除了可以是AWS的S3服务,还可以是兼容S3的对象存储,如Minio等。注意这里,如果对象存储服务是Minio,S3_ENDPOINT需要为实际Minio的API地址,S3_BUCKET_NAME可以改为实际用的桶名,如difyai。而ACCESS_KEY和SECRET_KEY,分别是Minio的用户名和密码,并非像S3使用的KEY。
接着,需要重新启动Dify所有服务。使用命令docker compose restart。
如果测试没有生效,可以reload环境变量文件,或者简单点重启Linux服务器。
上述操作完成之后,接下来就是使用部分。
将C ...
今天我们将要继续企业应用之旅,让Dify也变成一个简单的BI系统,可以让数据变成有图有真相。
学习完成,你将能举一反三,让数据自己说话。
**01.**动手做一做今天的动手实验,需要有处理数据的代码能力。如果对你来说难度太大,建议收藏慢慢学习。
   首先,我们简化核心步骤,把不相干的节点全部删除。掌握了之后,可以集成进前面课程有关数据SQL的部分
既然是和数据相关,那准备的部分必然涉及到数据库。假设我们有一个数据表名为automation,记录了企业中,对订单进行自动化处理的情况。
该表设计的思路是,针对每个订单,都会进行自动化处理,并记录处理结果。并且按业务规则,运行失败时会进行一定次数的重试,以避免因资源等环境问题导致的暂时失败,而影响可以自动化的任务。
记录自动化处理的结果字段为code,0表示不符合自动化处理条件,1表示自动化处理成功,大于1的值表示自动化程序内部的错误。
我们需要按照订单的日期来查询按天统计的订单处理情况。查询语句和结果如下图所示。
有了上述准备之后,开始进行Dify应用开发。
添加”SQL Execute”节点(如果没有,需要安装插件后,进入工具选择, ...
今天我们将要继续企业应用之旅,让Dify变成一个超级中间站,能将开源的大几千MCP服务为我所用。
学习完成,你将会让自己的Dify也拥有更专业的使用MCP的能力。
**01.**准备环节我们之前详细学习了MCP所有关键的内容,是时候来表演了。
不过Dify是一个服务端运行的系统,它不像本地可以为MCP服务去准备运行环境。如果让Dify集成stdio方式的MCP,那改动就有点大了。
但是现存海量的MCP服务,绝大多数都是stdio方式,所以关键一点就是打通这个使用方式上的差异。
因此使用一个叫mcp-proxy的工具,就来的如此的顺理成章。(如果听不懂stdio的话,请复习前面的博文)
 大模型的得力干将MCP(5)  - 应用场景和发展方向,窥探先机,不容错过
为了不影响本地电脑的环境配置等,我们同样以容器的方式,去运行这个mcp-proxy。
根据它的说明文档,有两个地方需要修改为自己的。
重新打包一下镜像,加入uv运行环境。新建一个mcp-proxy.Dockerfile文件,内容如下:
2.以上述镜像,加入需要代理的MCP服务,我们以mysql_mcp_server为例。新 ...
本文适用对象:初级水平
目标:利用迭代的方法,对多个数据条目进行相同的处理
上一节Dify应用实战课,我们继续对新项目智能医疗分诊助手,进行了分解学习。
今天我们又将暂停一下,先学一下循环的处理。
学习完成,你将掌握如何对多条相同形式的数据,按照遍历处理的方法,进行加工处理。
**01.**动手做一做今天的任务会新开一个workflow,完成后可以合并至”每日智选”应用内。
再复习一下”每日智选”的内容,通过获取天气API,得到天气信息,输出到图片和语音中。而现在最主要的内容,是热点新闻和解读。接下来会获取每日热点新闻10条,然后填充进结果图。
添加节点”HTTP请求”,配置该节点为获取热点新闻。
接着在其后,添加节点”LLM”,设置如下,上下文选择”HTTP请求”的请求结果。提示词填写:
123456789根据获得的 上下文 内容,对其进行内容提取:1\. 需要得到author\_name新闻来源,title新闻标题和url文章链接2.严格按照json格式输出,参照key为类型,值为内容的形式,不需要解释。3.新闻来源需要有影响力的媒体,不要采收自媒体类型的。4.一次提取只需要10 ...
本文适用对象:初级水平
目标:对一个结果可能出现多种情况,进行条件分支处理
上一节Dify应用实战课,我们学习了迭代循环处理。而新项目,智能医疗分诊助手,暂停了一期,现在我们继续。
今天我们学习和上节课循环处理类似的方法,分支条件处理。
学习完成,你将掌握如何对一个结果可能存在多种情况时,按不同情况的值,进行不同的处理。
**01.**动手做一做今天的任务基于智能分诊应用”医小助”。在”问题分类器”的”分类2”后新增一个”LLM”节点。
如图所示,添加提示词内容“对
提及的有关视力的部分,进一步进行识别处理,处理结果输出为如下json格式,
1234567{ "type": 0, "result":"","raw":""}如果是咨询近视有关的,将type设置为1;如果是咨询眼睛疾病,将type设置为2;对输入的问题的解释结果,设置为result的值。”
这次我们把大模型的输出格式修改一下,如下图
接着添加”代码”节点,将上一步生成的JSON结果,提取问题 ...
上一节Dify应用实战课,我们继续对新项目,智能医疗分诊助手,进行了分支条件的拆解。
今天我们学习数据库的查询操作。
学习完成,你将掌握如何对数据库中的数据进行获取。
**01.**动手做一做今天的任务基于智能分诊应用”医小助”。在”条件分支”的”case1”后新增一个”SQL查询”节点。
但是,需要先准备一下插件的安装(v1.0.0之后,已经升级需要安装插件)。
插件安装之后,按下图所示进行添加,先点击”工具”,再找到刚才安装的”Database”,展开后选中”SQL Execute”。
第一次使用会让先授权,按下图步骤进行设置。直接点”去授权”,不用管下面的API端点。这个以后有需要再说。
授权之后,如果再用”数据库”工具,就不会再要求进行授权了。授权需要输入的内容如下:
1mysql+pymysql://root:123456@192.168.0.101:3306/hospital
如果用的postgresql或者sqlite,就查询一下插件的说明文档即可。
现在我们就可以填入查询SQL语句了
1SELECT name, title, description FRO ...










