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

news2024/11/15 23:58:00

【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的提示词,或者增加其他功能节点。

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

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

相关文章

奥英特技公园开业盛典 点燃文旅商业融合新引擎

(通讯员 赵霞)2024年6月9日,奥英汽车特技表演公园盛大开幕。这座集汽车特技、文化艺术、旅游体验于一体的全新综合性主题公园,不仅为游客带来了精彩刺激的视觉盛宴,更通过“以体促旅、以旅带文”的深度融合,助推了文旅产业与商业经济的深度融…

Redis集群(5)

集群原理 节点通信 通信流程 在分布式存储系统中,维护节点元数据(如节点负责的数据、节点的故障状态等)是关键任务。常见的元数据维护方式分为集中式和P2P方式。Redis集群采用P2P的Gossip协议,这种协议的工作原理是节点之间不断…

使用lombok帮我们生成 getter、setter、无参构造器、全参构造器、equals、hashcode

文章目录 为什么要使用lombok?lombok的使用步骤1.检查 idea 是否安装 lombok 插件2.检查是否勾选了 enable annotation processing3.导入 lombok.jar 并加入到模块中4.在实体类添加注解 测试 为什么要使用lombok? lombok可以帮我们生成 getter、setter、…

独立游戏之路:Tap篇 -- 获取OAID提升广告收益

Unity 之 获取手机:OAID、ClientId、GUID 前言一、Oaid 介绍1.1 Oaid 说明1.2 移动安全联盟(MSA)二、站在巨人的肩膀上2.1 本文实现参考2.2 本文实现效果2.3 本文相关插件三、Unity 中获取Oaid3.1 查看实现源码3.2 工程配置3.3 代码实现3.4 场景搭建四、总结前言 在当今的移动…

SpringCloud 网关Gateway配置并使用

目录 1 什么是网关? 2 Gateway的使用 2.1 在其pom文件中引入依赖 2.2 然后gateway配置文件中配置信息 2.3 启动网关微服务 3 网关处理流程 4 前端-网关-微服务-微服务间实现信息共享传递 1 什么是网关? 网关:就是网络的关口&#xff…

vue+element el-select动态加减框数量及验证下拉框选项动态置灰(选中行的下拉框换个值后,原值没办法监控这个问题也解决了)

1效果: 2部分主要(HTML): 1:这个位置主要就是看看方法什么的吧,还有大概的结构 2:change"sort_Change(item,tablelists.orderbyList)这两个参数(都有大用): (1)item:代表每次你操作的这个数据 (2)tablelists.orderbyList:代表你这一共有几行数据(上边这个例子就会得到一个…

详解Base64编解码原理以及Base64编解码接口实现(附源码)

Base64编码已广泛地应用于各式各样的应用程序中,这些软件都在享受着Base64编码带来的便捷,但对于Base64编码相关概念及原理又了解多少呢?本文就来讲述一下Base64编码相关的内容。 1、Base64编码帮我们解决的实际问题 我们在使用libjingle(客户端)和XMPP服务器实现IM聊天功…

mysql:1205-Lock wait timeout exceeded;try restarting transaction

1.现象 2.分析 使用下面sql在自带数据库的information_schema中查询,注意观察那些长时间开启事务又没完成的进程,然后根据进程的db、操作人、主机、事务开启时间和状态,来排查是什么情况导致的事务未完成(代码异常、执行时间超时等等);我这里是异步作业事务执行时间过长导致的 …

Nintex流程平台引入生成式人工智能,实现自动化革新

工作流自动化提供商Nintex宣布在其Nintex流程平台上推出一系列新的人工智能驱动改进。这些增强显著减少了文档化、管理和自动化业务流程所需的时间。这些新特性为Nintex流程平台不断扩展的人工智能能力增添了新的亮点。 Nintex首席产品官Niranjan Vijayaragavan表示&#xff1a…

如何正确使用 include-what-you-use

简单地说,由 Google 开发的 include-what-you-use(IWYU)让源代码文件包含代码里用到的所有头文件。这种方法确保在改动了一些接口之后,代码依然最有可能编译成功。 之前我写了一篇关于 include-what-you-use 工具的文章&#xff…

arcgis如何给没有连通的路打交点

1、在打交点的时候需要先有图层,图层的构建流程如下所示 1、找到目录 2、先新建一个文件夹 3、在新建的文件夹下新建一个文件地理数据库 4、在文件地理数据库下,新建一个要素类数据集 5、在要素类数据集下进行数据导入,选择单个导入 6、在要…

Paddle Graph Learning (PGL)图学习之图游走类deepwalk、node2vec模型[系列四]

更多详情参考:Paddle Graph Learning 图学习之图游走类模型系列四 https://aistudio.baidu.com/aistudio/projectdetail/5002782?contributionType1 相关项目参考: 关于图计算&图学习的基础知识概览:前置知识点学习(PGL&a…

❤ node报错总结

❤ node报错总结 (expressJWT版本语法)expressJWT is not a function 导入和使用expressJWT时遇到问题 import expressJWT from express-jwt app.use(expressJWT({ secret: secretKey }).unless({ path: [/login] }))原因 由于express-jwt 版本的更…

JS基础与高级应用: 性能优化

在现代Web开发中,性能优化已成为前端工程师必须掌握的核心技能之一。本文从URL输入到页面加载完成的全过程出发,深入分析了HTTP协议的演进、域名解析、代码层面性能优化以及编译与渲染的最佳实践。通过节流、防抖、重复请求合并等具体技术手段&#xff0…

esp32s3-gc9a01-lvgl

前言 近期做了一个项目是使用esp32s3 准亿科技的TFT屏幕 该屏幕使用的驱动IC为:GC9A01 通讯方式是:4线SPI , 三线spi和四线SPI区别在于:是否使用D/C信号线 开发LCD屏幕驱动, 可以参考乐鑫官网LCD显示屏指南 SPI 一共有4种工作模式. 根据接线 , 驱动方式的不同. 可分3 , …

【ARM Cache 及 MMU 系列文章 1.4 -- 如何判断 L3 Cache 是否实现?】

文章目录 Cluster Configuration Register代码实现什么是Single-Threaded Core?什么是PE(Processor Execution units)?Single-Threaded Core与PE的关系对比多线程(Multithreading)Cluster Configuration Register 同 L2 Cache 判断方法类似,ARMv9 中也提供了一个自定义…

程序设计实践--3

递推 一只小蜜蜂 有一只经过训练的蜜蜂只能爬向右侧相邻的蜂房&#xff0c;不能反向爬行。请编程计算蜜蜂从蜂房a爬到蜂房b的可能路线数。其中&#xff0c;蜂房的结构如图所示。 输入描述 输入数据的第一行是一个整数N(1<n<1,000,000),表示测试实例的个数&#xff0c;然…

我的网络安全之路——一场诗意的邂逅

文章来源&#xff5c;MS08067 安全实验室 本文作者&#xff1a;tuooo 我的网络安全之路 一场诗意的邂逅 童年的星光中&#xff0c;我仰望着璀璨的荧屏&#xff0c;心怀对未知机器世界的浩瀚与好奇。那时的我&#xff0c;每每想到各种游戏的破解版本与工具&#xff0c;便会被技术…

在欧拉系统中搭建万里数据库MGR集群(图文详解)

在信创和国产化的大趋势下&#xff0c;将各个中间件进行国产化替换是当前非常重要的任务之一。下面将介绍如何在国产化欧拉系统中安装国产万里数据库。 0.MGR简介 MGR&#xff08;MySQL Group Replication&#xff09;&#xff1a;是MySQL官方提供的一种高可用性和容错性解决…

【java计算机毕设】智慧图书管理系统javaweb MySQL springboot vue html maven送文档

1项目功能截图 【java计算机毕业设计分享】 智慧图书管理系统 Java SpringBoot vue HTML MySQL idea送文档 2项目介绍 系统功能&#xff1a; 智慧图书管理系统包括管理员和读者两种角色。 管理员的功能包括在个人中心修改个人信息和密码&#xff0c;基础数据管理模块包含读者类…