大模型应用编排工具Dify之构建专属FQA应用

1.前言

​ 通过 dify可以基于开源大模型的能力,并结合业务知识库、工具API和自定义代码等构建特定场景、行业的专属大模型应用。本文通过 dify工作室的聊天助手-工作流编排构建了一个基于历史工作日志回答问题的助手,相比原始的大模型答复,通过工作流构建的应用将提供更精准的答案。实现效果如下:

环境信息:dify-0.8.3

2.添加开源LLM

LLM,即 Large Language Model,大语言模型。dify依赖 llm的能力来构建大模型应用,故需要提前准备好 llm。

这里以千问为例,演示如何添加 LLM。在设置里面找到模型供应商,点击 OpenAI-API-compatible添加模型连接信息,如下:

填写完模型名称、地址和认证key等信息后点击保存,dify会尝试连接 llm,成功连上才能保存成功,否则会报错。

3.知识库上传文档

​ 大模型回答通用的知识是没有问题的,但是如果具体到某些业务场景的问题,就得提供一个知识库给大模型,由大模型去进行理解并输出回答。

这里我准备了之前排查 hive问题时记录的一个文档,大致内容如下:

处理数据查询hive数据库无法获取表问题 ------hive不稳定导致的

后台报错如下:

复制代码
Caused by: java.util.ServiceConfigurationError: org.slf4j.spi.SLF4JServiceProvider: Provider org.slf4j.simple.SimpleServiceProvider not a subtype
        at java.util.ServiceLoader.fail(ServiceLoader.java:239)
		...
        at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:380)
        at com.xx.dsx.DataSourceConnection.<clinit>(DataSourceConnection.java:22)
        at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
        at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
        at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
        at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
        at com.xx.jdbc.Driver.wrapperConnection(Driver.java:63)
        at com.xx.jdbc.Driver.connect(Driver.java:169)
        at java.sql.DriverManager.getConnection(DriverManager.java:664)
        at java.sql.DriverManager.getConnection(DriverManager.java:270)
        at com.xx.dataaccess.DataAccessService.getConnection(DataAccessService.java:368)

解决:

​ 需要把 bigdata/plugins/hive/3.x/ 下的 slf4j-api-1.7.36.jar 移除

在 dify知识库里面选择创建知识库,索引方式选择经济,如下:

4.工作室创建应用

dify工作室支持聊天助手 、文本生成应用 、Agent 和工作流四种应用,这里选择常见的聊天助手》工作流编排。

如下图:

5.应用流程编排

​ 在日常开发、应用部署和服务运维等工作中会碰到很多特定问题,而且同一个问题大概率会二次出现,所以记录问题现象和解决方案是很有必要的,能够有效节约时间,按时下班。

故出于实际需求,这里创建一个基于历史工作日志回答问题的工作流程,打造一个私有FQA问题助手,整体流程如下:

如上图,简单五个步骤就搞定了一个基于大模型的私人助手。下面简要介绍下各个步骤:

  1. 开始

    应用的入口,必选项。

  2. 问题分类器

    这里调用 llm对用户的问题进行分类,以判断走哪一条业务分支。比如 询问功能开发、运维问题、闲聊等。

    如果询问某个问题如何解决,这里就会走到本次的流程。

  3. 工作日志检索

    这里就要用到第 3步知识库上传的文档了,会从提供的知识库中选取和问题相关的内容传递给后面的 llm。

  4. LLM-组织回答

    这个步骤就比较关键了,需要调用 llm理解用户的问题和知识库中的相关知识,并组织回答。提示词如下;

    角色

    你是一个专业的大数据工程师,回答问题,对于常识类问题可直接作答,若遇到难以回答的问题示不知道。

    使用以下内容作为你所学习的知识,放在 XML标签内。

    技能

    技能 1: 回答常识问题

    1.若问题超出常识范围或难以确定,回复"不知道"

    2 回答内容必须根据上下文知识库的内容进行回答。

    限制

    仅针对问题进行回答,不进行额外讨论

    下面是完整配置:

    这里需要注意两种提示词都要有,最后要跟 user把用户问题带过去。

  5. 问题答复

    输出 llm的回复。

6.总结

​ 本文描述的专属FQA应用 基于 dify的工作室 、工作流编排 、问题分类 、知识库 和 llm模块等功能,并以千问为例描述了如何添加开源的 llm到 dify中。同时,在工作流编排中重点介绍了如何调用 llm,对应的 system prompt和 user prompt如何编写。

相关推荐
ksueh1 分钟前
平台围剿AI网文能持久吗:更新量指标一日不改AI一日停不下来
人工智能·ai写作·ai工具·ai写小说
智商网输送线配件3 分钟前
输送机及配件采购实战:东莞中小制造企业2026年供应平台选型技术指南
人工智能·制造·智商网·流水线设备配件
摹客5 分钟前
【趋势】AI重构原型设计:从表达文件到验证行为,5个变化+工具选型
人工智能·microsoft·产品经理
乃嘿仔6 分钟前
AI 热点日报 · 2026-09-30
人工智能·chatgpt
java资料站9 分钟前
十二、可观测性
人工智能
头发够用的程序员13 分钟前
TensorRT 自定义算子插件实战(一):从零手写 customScaledTanh
c++·人工智能·pytorch·python·深度学习·边缘计算·jetson
m4Rk_16 分钟前
【论文阅读】Agent 记忆机制(86):Skill-Pro——用 Non-Parametric PPO 将交互经验演化为可复用技能
论文阅读·人工智能·学习·开源·github
旺仔Sec19 分钟前
2026年江西省职业院校技能大赛人工智能大模型应用开发赛项样题
人工智能
新知图书23 分钟前
【新书推荐】《让AI推荐你的品牌:GEO营销实践》
人工智能
火山引擎和TA的超级拍档们28 分钟前
产品情报局 04|客服Agent:大模型时代的智能客服新范式
大数据·人工智能