自学内容网 自学内容网

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


原文地址:https://blog.csdn.net/Daphnisz/article/details/144369083

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!