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

相关推荐
小oo呆3 小时前
【自然语言处理与大模型】模型压缩技术之量化
人工智能·自然语言处理
Magnum Lehar3 小时前
ApophisZerg游戏引擎项目目录展示
人工智能·vscode·编辑器·游戏引擎
飞桨PaddlePaddle3 小时前
Wan2.1和HunyuanVideo文生视频模型算法解析与功能体验丨前沿多模态模型开发与应用实战第六期
人工智能·算法·百度·音视频·paddlepaddle·飞桨·deepseek
绿算技术3 小时前
存储新势力:助力DeepSeek一体机
人工智能·科技·缓存·fpga开发
Y1nhl4 小时前
搜广推校招面经八十一
开发语言·人工智能·pytorch·深度学习·机器学习·推荐算法·搜索算法
胡攀峰4 小时前
第12章 微调生成模型
人工智能·大模型·llm·sft·强化学习·rlhf·指令微调
yuanlaile4 小时前
AI大模型自然语言处理能力案例演示
人工智能·ai·自然语言处理
小白白搭建4 小时前
WordPress AI 原创文章自动生成插件 24小时全自动生成SEO原创文章 | 多语言支持 | 智能配图与排版
人工智能
Jamence4 小时前
多模态大语言模型arxiv论文略读(三十九)
人工智能·语言模型·自然语言处理
ai大模型木子4 小时前
嵌入模型(Embedding Models)原理详解:从Word2Vec到BERT的技术演进
人工智能·自然语言处理·bert·embedding·word2vec·ai大模型·大模型资料