【LLM】快速了解Dify 0.6.10的核心功能:知识库检索、Agent创建和工作流编排(二)

【LLM】快速了解Dify 0.6.10的核心功能:知识库检索、Agent创建和工作流编排(二)

文章目录

  • 【LLM】快速了解Dify 0.6.10的核心功能:知识库检索、Agent创建和工作流编排(二)
    • 一、创建一个简单的聊天助手:配置模型提供商并接入聊天助手
        • 1、配置 TongYi 大模型
        • 2、聊天助手接入TongYi 大模型
    • 二、基于知识库搭建聊天助手:搭建知识库,并在聊天助手中进行知识检索
        • 1、知识库创建的前期准备
          • 1)配置Cohere的ReRank模型
          • 2)启动定时任务用于处理要分段的文档
        • 2、创建知识库:文档分段清洗
        • 3、召回测试
        • 4、在聊天助手中进行知识检索,并绑定知识点引用和归属
    • 三、基于工具将聊天助手升级为Agent:外挂arxiv工具查询论文
    • 四、工作流编排:编排流程节点,可视化创建聊天助手

在上一篇文档中【LLM】Dify 0.6.10 在Windows系统上本地化部署(一) 已经介绍了如何在Windows上完成Dify的本地部署,接下来启动本地项目,快速了解Dify的核心功能,包括知识库检索、Agent创建和工作流编排。

Dify 0.6.10的具体功能介绍还是详见欢迎使用 Dify | 中文 | Dify,这里旨在本地部署的项目中尝试验证这些核心功能,并跑通整个流程

一、创建一个简单的聊天助手:配置模型提供商并接入聊天助手

参考 模型 | 中文 | Dify

1、配置 TongYi 大模型

点击头像的"设置",配置模型提供商

这里配置通义千问的AppKeyApiKey申请参考 阿里通义千问API(Java)使用教程,基于Springboot后端,配置好后:

Note

在配置模型提供商时,调用的后端请求是

POST /console/api/workspaces/current/model-providers/tongyi HTTP/1.1

这里会用到redis缓存,需要修改下.env的配置(如果需要的话)

# celery configuration
; CELERY_BROKER_URL=redis://:difyai123456@localhost:6379/1
CELERY_BROKER_URL=redis://:difyai123456@192.168.198.128:6379/1
2、聊天助手接入TongYi 大模型

新建一个智能聊天助手,线上的通义千问大模型就成功接入进来了

二、基于知识库搭建聊天助手:搭建知识库,并在聊天助手中进行知识检索

参考 知识库 | 中文 | Dify

1、知识库创建的前期准备
1)配置Cohere的ReRank模型

Cohere官网如下https://cohere.com/,可以在这里获取试用的ApiKey,并在Dify上配置模型提供商,配置效果如下:

2)启动定时任务用于处理要分段的文档

参考 Local Source Code Start | English | Dify

如果不执行如下命令,去启动定时任务处理文档分段清洗的任务,这个任务会一直显示在 “排队” 中的。在Windows中命令如下:

celery -A app.celery worker -P solo --without-gossip --without-mingle -Q dataset,generation,mail --loglevel INFO

启动时不需要关闭Flask后端服务,启动效果如下:

2、创建知识库:文档分段清洗

参考创建知识 上传文档 | 中文 | Dify

在选择数据源中导入本地文档后(支持的格式挺多的:TXT、 MARKDOWN、 PDF、 HTML、 XLSX、 XLS、 DOCX、 CSV),可以对文本进行分段清洗、右边为分段清洗后的预览结果

这里可以选择自动分段清洗 或者 自定义规则清洗

接着可以选择不同的索引方式 - 高质量 & 经济

如果选择高质量可以用到embedding采用Q & A的模式进行分段,也可以使用ReRank模型(比如上面配置的Cohere ReRank模型)通过embedding进行文本检索,而经济型就没有这个功能。

处理完成后(需要开启定时任务,不然创建知识库完成后,知识库分段清洗任务一直处于排队状态),可以在知识库中查看相应文档的分段内容,可以选择禁用/启用某个片段,这样可以减少Cohere Rerank的检索范围

3、召回测试

关于召回测试/引用归属 的功能配置 参考 召回测试/引用归属 | 中文 | Dify

这里要选择向量检索(不知道为什么全文检索不出内容)

召回测试效果如下:

Note:这里的文档分段只开启了三个,其余都禁用(如果全启用,Cohere free ReRank模型会报错)

4、在聊天助手中进行知识检索,并绑定知识点引用和归属

召回测试可以检索出相应的文本片段后,可以在智能体的提示词编排设置中,外挂相应的知识库,进行知识检索

这里要选择向量检索(不太清楚为什么上面的全文检索不能从知识库中检索到片段内容)

还可以在聊天增强功能中,新增关于“知识库的引用和归属”

三、基于工具将聊天助手升级为Agent:外挂arxiv工具查询论文

Dify提供了很多Agent工具(强)

这里以arxiv论文查询工具为例(提示词可以让文心一言/通义千问生成,然后粘贴过来)

其实Agent实现的功能可以将其流程化,文本输出流程如下

  • 1)预处理为arxiv的查询参数;

  • 2)通过arxiv search返回响应结果;

  • 3)将arxiv工具的响应结果交给GPT整理输出;

其实并不是所有的文本输入都会触发“arxiv工具”的查询,需要关键词具有与“查询“相关语义才行

四、工作流编排:编排流程节点,可视化创建聊天助手

节点说明:节点说明 | 中文 | Dify

预览与调试:预览与调试 | 中文 | Dify

这里参考上面所搭建的聊天机器人,通过如下应用场景完成工作流的编排,搭建一个小的Agent应用:

假设用户输入一个文本

  • 流程1:如果文本中包括webhook关键字,则先从知识库中进行检索,接着拼接用户输入的文本,交给LLM去整理输出;
  • 流程2:如果文本中包括query或者查询关键字,则先通过参数提取器提取要查询的关键字,接着通过arxiv论文查询工具查询指定关键字的论文,接着讲用户的输入转写成arxiv的输出,并交给LLM去解析arxiv的响应结果;
  • 流程3:如果文本中不包括以上两种关键字,则直接调用LLM输出结果

在这里插入图片描述

用户问题1:第一个helloWorld起源于哪一年?(走流程3)

在这里插入图片描述

用户问题2:webhook是什么?webhook的作用是什么?(走流程1

在这里插入图片描述

用户问题3:查询近几年LLMOps相关的论文?(走流程2

在这里插入图片描述

在“探索“区测试自己通过工作流编排后的应用:

在这里插入图片描述

Note

工作流编排技巧小结:主要是关注用户输入的文本数据走那个流程,在流程中的每个节点上是怎么被处理的,以及通过写prompt对智能体的行为配置进行管理

  • 1)在开始节点定义变量用于接收用户输入的文本;

  • 2)不同节点间通过变量来传递下游节点可以接收所有上游节点的所有变量;

  • 3)如果流程在Run时报错,可以单节点Debug查看文本转换是否符合预期要求,并修改LLM的提示词,或者增加其他功能节点。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

nmap工具使用

nmap是一款渗透端口扫描测试工具。它不单单可以进行端口扫描,还可以扫描漏洞、服务器信息等等。是一款十分强大的扫描工具,可以在windows、mac、Linux上运行。 下载 官网地址: https://nmap.org/download.html 我备份的地址:https://download.csdn.net…

[大模型]LLaMA3-8B-Instruct WebDemo 部署

环境准备 在 autodl 平台中租赁一个 3090 等 24G 显存的显卡机器,如下图所示镜像选择 PyTorch-->2.1.0-->3.10(ubuntu20.04)-->12.1 接下来打开刚刚租用服务器的 JupyterLab,并且打开其中的终端开始环境配置、模型下载和运行 demo。 pip 换源…

spring boot3登录开发-邮箱登录/注册接口实现

⛰️个人主页: 蒾酒 🔥系列专栏:《spring boot实战》 🌊山高路远,行路漫漫,终有归途 目录 写在前面 上文衔接 内容简介 功能分析 所需依赖 邮箱验证登录/注册实现 1.创建交互对象 2.登录注册业务逻辑实…

【教学类-12-11】20240612通义万相-动物图片连连看(A4一页3套)

背景需求: 前期用midjounery下载了一些动物头饰图片 【教学类-36-02】20230625动物头饰制作1.0(midjounery动物简笔画四图)一页一种动物_英语头饰动物的制作图片-CSDN博客文章浏览阅读471次。【教学类-36-02】20230625动物头饰制作1.0&…

万界星空科技SMT行业MES系统功能

在现代制造业中,SMT智能车间MES系统是一种全自动化的生产管理系统,用于监控和控制整个SMT生产流程。它通过监控SMT设备的运行状态、实时追踪生产数据,并与其他系统进行实时数据交换,以提高生产效率、降低生产成本。MES系统采用先进…

基于电压矢量变换的锁相环simulink建模与仿真

目录 1.课题概述 2.系统仿真结果 3.核心程序与模型 4.系统原理简介 5.完整工程文件 1.课题概述 基于电压矢量变换的锁相环simulink建模与仿真,这个模型的基本构架如下所示: 2.系统仿真结果 由图中锁相结果可以看出,利用新型锁相环技术在…

基于构件开发模型-系统架构师(八)

1、把应用程序中应用最频繁的那部分核心程序作为评价计算机性能的标准程序,称为()程序。 A仿真测试 B核心测试 C基准测试 D标准测试 解析: 系统测试最核心的部分内容,基准测试。 2、运用信息技术进行知识的挖掘和…

Go使用https

一、服务端 1. 生成私钥和证书 安装OpenSSL windows安装OpenSSL生成CA证书创建证书 以上两个步骤,参考:Go http2 和 h2c 2. 代码 package mainimport ("log""net/http""time""golang.org/x/net/http2" )co…

笔记 | 软件工程06-2:软件设计-软件体系结构设计

1 软件体系结构的概念 1.1 软件体系结构的设计元素 1.2 不同的抽象层次 1.3 软件体系结构的不同视图 1.3.1 软件体系结构的逻辑视图:包图 1.3.2 软件体系结构的逻辑视图:构件图 1.3.3 软件体系结构的开发视图 1.3.4 软件体系结构的部署视图 1.3.4.1 描述…

【docker】compose 使用 .env 文件

在 Docker Compose 中,你可以使用 .env 文件来定义环境变量,这些变量可以在 docker-compose.yml 文件中被引用。这允许你轻松地管理配置,而不需要硬编码值到你的 Compose 文件中。 以下是如何在 Docker Compose 中使用 .env 文件的步骤&…

【DevOps】 什么是容器 - 一种全新的软件部署方式

目录 引言 一、什么是容器 二、容器的工作原理 三、容器的主要特性 四、容器技术带来的变革 五、容器技术的主要应用场景 六、容器技术的主要挑战 七、容器技术的发展趋势 引言 在过去的几十年里,软件行业经历了飞速的发展。从最初的大型机时代,到后来的个人电脑时代,…

Java面试题--JVM大厂篇之掌握JVM性能优化:选择合适的垃圾回收器

掌握JVM性能优化:选择合适的垃圾回收器 引言: ​  在Java开发中,性能优化往往是提高应用稳定性和用户体验的关键所在。而垃圾回收器的选择和优化,是JVM性能调优的核心环节。如何在众多垃圾回收器中选出适合自己应用需求的那一个&#xff1…

AXI Quad SPI IP核配置详解

AXI Quad SPI IP核(Quad Serial Peripheral Interface)是一个提供串行接口连接SPI从设备的解决方案,它支持Standard(单线路)、Dual(双线路)、Quad(四线路)模式&#xff0…

luogu-P10570 [JRKSJ R8] 网球

题目传送门: [JRKSJ R8] 网球 - 洛谷https://www.luogu.com.cn/problem/P10570 解题思路 数学问题,暴力这个范围会超时。 首先,找出这两个数的最大公因数,将这两个数分别除以最大公因数,则这两个数互质,判…

启明智显工业级HMI芯片Model3功耗特性分享

前言: 【启明智显】专注于HMI(人机交互)及AIoT(人工智能物联网)产品和解决方案的提供商,我们深知彩屏显示方案在现代物联网应用中的重要性。为此,我们一直致力于为客户提供彩屏显示方案相关的技…

2024年6月11日 (周二) 叶子游戏新闻

万能嗅探: 实测 网页打开 某视频号、某音、某红薯、某站,可以做到无水印的视频和封面下载功能哦,具体玩法大家自行发挥吧。 WPS免登录一键修改器: 去除烦人的登录且能正常使用 日本一首部游戏《拼图世界》上架Steam 30年PS名作日本游戏厂商日本一的首部品…

【库】nprogress 顶部进度条

yarn add nprogress router文件 前置路由添加启动 后置路由添加关闭 router.beforeEach((to, from, next) > { NProgress.start() next() }) router.afterEach(() > { NProgress.done() }) App.vue 文件 引入样式 <script setup> import "nprogress/npro…

C#客户端

控件 打开链接 Socket socket; // 打开连接 private void button1_Click(object sender, EventArgs e) {button1.Enabled false;button2.Enabled true;//1 创建socket客户端对象socket new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);// 2…

r语言数据分析案例25-基于向量自回归模型的标准普尔 500 指数长期预测与机制分析

一、背景介绍 2007 年的全球经济危机深刻改变了世界经济格局&#xff0c;引发了一系列连锁反应&#xff0c;波及各大洲。经济增长停滞不前&#xff0c;甚至在某些情况下出现负增长&#xff0c;给出口导向型发展中国家带来了不确定性。实体经济受到的冲击尤为严重&#xff0c;生…

springboot与flowable(3):启动、审批、各个Service服务

一、启动流程 流程定义与实例的关系类似于Java的类与对象&#xff0c;通过定义的id创建流程实例&#xff0c;编写测试代码&#xff1a; package org.example.flowabledemo2;import org.flowable.engine.RuntimeService; import org.flowable.engine.runtime.ProcessInst…