大模型应用编排工具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如何编写。

相关推荐
童话名剑11 分钟前
训练词嵌入(吴恩达深度学习笔记)
人工智能·深度学习·word2vec·词嵌入·负采样·嵌入矩阵·glove算法
桂花很香,旭很美43 分钟前
智能体技术架构:从分类、选型到落地
人工智能·架构
HelloWorld__来都来了1 小时前
2026.1.30 本周学术科研热点TOP5
人工智能·科研
aihuangwu2 小时前
豆包图表怎么导出
人工智能·ai·deepseek·ds随心转
YMWM_2 小时前
深度学习中模型的推理和训练
人工智能·深度学习
中二病码农不会遇见C++学姐2 小时前
文明6-mod制作-游戏素材AI生成记录
人工智能·游戏
九尾狐ai3 小时前
从九尾狐AI案例拆解企业AI培训的技术实现与降本增效架构
人工智能
2501_948120153 小时前
基于RFID技术的固定资产管理软件系统的设计与开发
人工智能·区块链
(; ̄ェ ̄)。3 小时前
机器学习入门(十五)集成学习,Bagging,Boosting,Voting,Stacking,随机森林,Adaboost
人工智能·机器学习·集成学习
杀生丸学AI3 小时前
【物理重建】PPISP :辐射场重建中光度变化的物理合理补偿与控制
人工智能·大模型·aigc·三维重建·世界模型·逆渲染