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

news2024/12/26 23:57:45

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如何编写。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2257561.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

前端node环境安装:nvm安装详细教程(安装nvm、node、npm、cnpm、yarn及环境变量配置)

需求&#xff1a;在做前端开发的时候&#xff0c;有的时候 这个项目需要 node 14 那个项目需要 node 16&#xff0c;我们也不能卸载 安装 。这岂不是很麻烦。这个时候 就需要 一个工具 来管理我们的 node 版本和 npm 版本。 下面就分享一个 nvm 工具 用来管理 node 版本。 这个…

c基础加堆练习题

1】思维导图&#xff1a; 2】在堆区空间连续申请5个int类型大小空间&#xff0c;用来存放从终端输入的5个学生成绩&#xff0c;然后显示5个学生成绩&#xff0c;再将学生成绩升序排序&#xff0c;排序后&#xff0c;再次显示学生成绩。显示和排序分别用函数完成 要求&#xff…

嵌入式Linux 设备树 GPIO详解 示例分析 三星 NXP RK

GPIO设备树用于在Linux内核中定义与GPIO相关的硬件资源&#xff0c;它使操作系统可以识别、配置和使用GPIO引脚。设备树中通常会指定GPIO控制器的基地址、GPIO引脚的中断配置、时钟和其他相关信息。 目录 RK相关案例代码 NXP相关案例代码 三星相关案例代码 在设备树中&…

【日记】不想随礼欸(926 字)

正文 今天忙了一天。感觉从早上就开始在救火。客户经理迎接检查&#xff0c;要补资料&#xff0c;找我们问这样要那样&#xff0c;我自己的事情几乎完全开展不了。虽说也没什么大事就是了。 晚上行长还让我重装系统…… 难绷。看来这个爹味新行长懂得还挺多。 中午趁着不多的休…

Spring 源码学习(七)——注解后处理器

通过之前对注解式配置的解析&#xff08;Spring 源码学习&#xff08;三&#xff09;—— 注解式配置解析_spring源码学习-CSDN博客&#xff09;可以发现其使用 AnnotationConfigUtils 类的 registerAnnotationConfigProcessors 静态方法对象注解后处理器对象进行注册&#xff…

如何避免缓存击穿?超融合常驻缓存和多存储池方案对比

作者&#xff1a;SmartX 解决方案专家 钟锦锌 很多运维人员都知道&#xff0c;混合存储介质配置可能会带来“缓存击穿”的问题&#xff0c;尤其是大数据分析、数据仓库等需要频繁访问“冷数据”的应用场景&#xff0c;缓存击穿可能会更频繁地出现&#xff0c;影响业务运行。除…

Scala的正则表达式二

验证用户名是否合法 规则 1.长度在6-12之间 2.不能数字开头 3.只能包含数字&#xff0c;大小写字母&#xff0c;下划线def main(args: Array[String]): Unit {val name1 "1admin"//不合法&#xff0c;是数字开头val name2 "admin123"//合法val name3 &quo…

【CKA】Kubernetes(k8s)认证之CKA考题讲解

CKA考题讲解 0.考试101 0.1 kubectl命令⾃动补全 在 bash 中设置当前 shell 的⾃动补全&#xff0c;要先安装 bash-completion 包。 echo "source <(kubectl completion bash)" >> ~/.bashrc还可以在补全时为 kubectl 使⽤⼀个速记别名&#xff1a; al…

导入kotlin

android studio 导入kotlin项目 android studio kotlin教程 或者直接拿一个kt文件进来&#xff0c;在顶部会显示一个config&#xff0c;然后设置version&#xff0c;点击OK就可以了自动导了

《CSS 知识点》大屏卡片布局思路:弹性布局 flex-grow

思路 大屏左右两侧高宽一致&#xff0c;内部卡片可按比例设置&#xff01; 使用弹性布局和属性 flex-grow 设置比例&#xff1b;间隔使用 margin-bottom 设置&#xff0c;最后一个卡片不设置&#xff1b; 效果如图 代码说明 CSS代码 26 - 30&#xff0c;左右两侧设置弹性布…

责任链模式的理解和实践

责任链模式&#xff08;Chain of Responsibility&#xff09;是行为型设计模式之一&#xff0c;它通过将多个对象连成一条链&#xff0c;并沿着这条链传递请求&#xff0c;直到有对象处理它为止。这个模式的主要目的是将请求的发送者和接收者解耦&#xff0c;使请求沿着处理链传…

如何在 Ubuntu 上安装开源监控工具 Uptime Kuma

简介 Uptime Kuma&#xff08;或简称 Kuma&#xff09;是一个开源监控工具&#xff0c;用于监控 HTTP、HTTPS、DNS 等协议的服务。Uptime Kuma 提供多种功能&#xff0c;如多语言支持、多个状态页面、代理支持等。 接下来&#xff0c;我将一步一步教大家如何进行安装和部署&am…

go语言zero框架对接阿里云消息队列MQ的rabbit的配置与调用

在 Go 语言中对接阿里云消息队列&#xff08;MQ&#xff09;的 RabbitMQ 配置与调用&#xff0c;首先需要安装和配置相关的 Go 库&#xff0c;并了解如何通过 RabbitMQ 与阿里云消息队列进行交互。 ### 步骤一&#xff1a;安装 RabbitMQ Go 客户端库 阿里云的消息队列&#x…

AttributeError: module ‘cv2.dnn‘ has no attribute ‘DictValue‘如何解决?

AttributeError: module cv2.dnn has no attribute DictValue如何解决&#xff1f; 出现场景出错原因解决方案 出现场景 当在代码中导入opencv的时候&#xff1a;import cv2&#xff0c;出现&#xff1a; 出错原因 查看大家出现的错误&#xff0c;发现是因为opencv版本问题…

京东e卡 h5st 4.96

声明: 本文章中所有内容仅供学习交流使用&#xff0c;不用于其他任何目的&#xff0c;抓包内容、敏感网址、数据接口等均已做脱敏处理&#xff0c;严禁用于商业用途和非法用途&#xff0c;否则由此产生的一切后果均与作者无关&#xff01; 有相关问题请第一时间头像私信联系我删…

《探索视频数字人:开启未来视界的钥匙》

一、引言 1.1视频数字人技术的崛起 在当今科技飞速发展的时代&#xff0c;视频数字人技术如一颗璀璨的新星&#xff0c;正逐渐成为各领域瞩目的焦点。它的出现&#xff0c;犹如一场科技风暴&#xff0c;彻底改变了传统的视频制作方式&#xff0c;为各个行业带来了前所未有的机…

畅阅读微信小程序+ssm

摘 要 随着社会的发展&#xff0c;社会的方方面面都在利用信息化时代的优势。互联网的优势和普及使得各种系统的开发成为必需。 本文以实际运用为开发背景&#xff0c;运用软件工程原理和开发方法&#xff0c;它主要是采用java语言技术和mysql数据库来完成对系统的设计。整个…

前缀和篇——繁星斗斗数字交织中,觅得效率明月辉光(3)

前言 本篇带来前缀和的最终部分&#xff0c;与之前相同&#xff0c;将结合难度进一步提升的题目进行详细分析讲解&#xff0c;以深化对该算法的理解运用。 一. 和可被k整除的子数组 1.1 题目链接&#xff1a;https://leetcode.cn/problems/subarray-sums-divisible-by-k/des…

【 C++ 入门基础】 —— 双壁传奇C语言和C++的爱恨情仇

C学习笔记&#xff1a; C 进阶之路__Zwy的博客-CSDN博客 各位于晏&#xff0c;亦菲们&#xff0c;请点赞关注&#xff01; 我的个人主页&#xff1a; _Zwy-CSDN博客 目录 1、从C语言到C的进化 1.1、历史渊源 1.2、语法层面的区别和联系 1.2.1、数据类型 1.2.2、函数定…

013路由协议-OSPF

OSPF具有更适用于规模较大的网络环境&#xff0c;收敛更快速、依据带宽来计算路径成本等。 计算方式&#xff1a; 100M/当前端口的带宽 如果小于1就按照1来计算 例如&#xff1a; 当前端口的带宽是1.54M 路径成本 100/1.54 65 当前端口的带宽是 1000M 路径成本 100/100 0.…