DB-GPT系列(六):数据Agent开发part1-光速创建AWEL Agent应用

news2024/11/23 10:35:47

前面的系列文章介绍了:

DB-GPT的总体功能

DB-GPT部署(镜像一键部署、源码部署)

DB-GPT底层模型设置(开源模型、在线模型)

DB-GPT的基础对话、知识库对话、excel对话

DB-GPT的数据库对话、数据对话、仪表盘对话

通过这些内容,我们已经可以进行一些简单的数据对话分析,覆盖了excel数据文件、数据库、知识库、数据分析报告等常见且重要的数据分析场景。

接下来的几篇文章将介绍DB-GPT的数据Agent开发的内容。

一、为什么需要进行数据Agent开发

虽然DB-GPT提供了一系列的AI数据分析的产品功能(链接DB-GPT六大基础应用场景),可以在此基础上进行数据分析。但是,实际业务分析场景中,往往会涉及更加复杂的数据分析任务。这些复杂任务可能涉及用户意图识别、外部工具调用、复杂聚合逻辑、多分支工作流等。在这些复杂情况下,DB-GPT原生的数据分析功能就难以一一覆盖。

因此,DB-GPT开源了一整套Agent搭建框架,通过AWEL(Agentic Workflow Expression Language) ,也就是智能体工作流编排,让围绕数据库构建大模型应用更简单,更方便。

DB-GPT六大基础应用场景,实际上就是不同的Agent,例如ChatData其实就是一个能够链接多种不同类型数据库并进行SQL代码编写和执行的Agent,而ChatKnowledge则是一个基于RAG的私有知识库问答Agent。

二、Agent与AWEL的关系

AWEL(Agentic Workflow Expression Language)是是 DB-GPT 的工作流程编排语言,简洁灵活地定义Agents 间交互与任务执行。实际上AWEL是一套专为大模型应用开发设计的智能体工作流表达语言,提供了强大的功能和灵活性。

三、AWEL简要介绍

1、AWEL特点

AWEL有下面一些特点:

  • 分层设计:灵活易用,底层操作符与高层 DSL 结合。
  • 简化开发:快速构建数据处理流程,减少代码量。
  • 自动化编排:支持条件、循环,实现流程自动化。
  • 可读性强:简洁语法,便于团队协作与维护。

通过 AWEL API 可以专注于大模型应用业务逻辑的开发,而不需要关注繁琐的模型和环境细节,AWEL 采用分层 API 的设计, AWEL 的分层 API 设计架构如下图所示:

2、AWEL分层设计

AWEL在设计上分为三个层次,依次为算子层、AgentFrame层以及DSL层

(1)算子层

算子层是指LLM应用开发过程中一个个最基本的操作原子,比如在一个RAG应用开发时。 检索、向量化、模型交互、Prompt处理等都是一个个基础算子。 在后续的发展中,框架会进一步对算子进行抽象与标准化设计。 可以根据标准API快速实现一组算子。

(2)AgentFrame层

AgentFrame层将算子做进一步封装,可以基于算子做链式计算。 这一层链式计算也支持分布式,支持如filter、join、map、reduce等一套链式计算操作。 后续也将支持更多的计算逻辑。

(3)DSL层

DSL层提供一套标准的结构化表示语言,可以通过写DSL语句完成AgentFrame与算子的操作,让围绕数据编写大模型应用更具确定性,避免通过自然语言编写的不确定性,使得围绕数据与大模型的应用编程变为确定性应用编程。

三、使用AWEL工作流创建数据Agent应用

在DB-GPT工作流的管理与编辑界面,可以通过智能体表达式语言AWEL来编排智能体Agent,形成确定工作流, 这些工作流可以用于后续的应用创建。

1、5分钟创建第一个AWEL工作流应用

点击“应用管理 -> AWEL工作流 -> 创建工作流”创建工作流。

进入后会看到有不同类型的的算子。关于各个算子的用法,后续文章将会详细描述,目前先简单了解下。

目前Agent算子分为算子Operator和资源Resource两种:

  • Operator主要用于Agent直接的上下文交互和Agent之间的串联
  • Resource主要是实际工作的Agent(Awel Layout Agent),和Agent需要绑定的资源(Awel Agent Resource 例如知识库),以及大模型相关配置(Awel Agent LLM Config)。

注意高级筛选按钮,切换到全部。

找到并选中AWEL Agent Operator拖拉到画布中。

AWEL Agent Operator Agent算子,用于串联不同的Agent,涉及参数:

  • AgentGenerateContext: 用于保存Agent直接的上下文信息
  • AwelAgent: 绑定和串联具体的Agent,需要和Agent资源型算子进行绑定

分别点击+选中Agent TriggerAwel Layout Agent

进行工作流连线编排

重复上面2步,构建如下的工作流。

分别需要点击+拖入画布中的算子有:AWEL Agent Resource KnowledgeAWEL Agent LLM ConfigDefault LLM Client

点击右上角保存工作流。

在我写这篇文章的时候,搭建的DB-GPT使用的是0.6.1版本。保存工作流会出现如下错误,提示Request error,Unable to generate pydantic-core schema for <class 'dbgpt.core.awel.dag.base.DAG'>

经查代码,主要是因为fastapi的版本问题导致,修改一下fastapi版本,再重启DB-GPT就可以了。

# 修改fastapi版本
pip install fastapi==0.111.0 
# 重启DB-GPT(在DB-GPT主目录下)
python dbgpt/app/dbgpt_server.py

不再报错,保存工作流成功。

应用管理->AWEL工作流中可查看创建的工作流。

创建应用,选择任务流编排模式。

绑定创建好的AWEL工作流。

进入应用进行对话。

2、利用社区资源,快速创建复杂的AWEL聚合应用

应用管理->DBGPTS社区->从社区Git仓库刷新更新社区应用

刷新后如下图所示。

选择一个应用从DBGPTS社区下载安装到本地,这里选择db-expert-assisant。

在我写这篇文章的时候,搭建的DB-GPT使用的是0.6.1版本。点击Install时会报错,提示错误

Message: 'Plugin Install Error!' Arguments: (ValueError("Install dbgpts [agents:summarizer-agent-example] Failed! [Errno 2] No such file or directory: 'poetry'", FileNotFoundError(2, 'No such file or directory')),)

这里只需要补充安装poetry的python包就可以解决。

# 安装poetry包
pip install poetry 
# 重启DB-GPT(在DB-GPT主目录下)
python dbgpt/app/dbgpt_server.py

创建应用,选择任务流编排模式。

绑定创建好的AWEL工作流。

进入应用进行对话。

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

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

相关文章

OpenGL ES 文字渲染方式有几种?

在音视频或 OpenGL 开发中,文字渲染是一个高频使用的功能,比如制作一些酷炫的字幕、为视频添加水印、设置特殊字体等等。 实际上 OpenGL 并没有定义渲染文字的方式,所以我们最能想到的办法是:将带有文字的图像上传到纹理,然后进行纹理贴图。 本文分别介绍下在应用层和 C+…

简单介绍一下mvvm mvc mvp以及区别、历史

MVC&#xff08;Model - View - Controller&#xff09; 因MVC架构的灵活性&#xff0c;架构图形式很多&#xff0c;仅供参考 历史&#xff1a; MVC 是最早出现的软件架构模式之一&#xff0c;其历史可以追溯到 20 世纪 70 年代&#xff0c;最初被用于 Smalltalk - 80 环境。…

scrcpy-client pyscrcpy 报ConnectionError(“Video stream is disconnected“)

异常 Video stream is disconnected代码详情&#xff0c;scrcpy-client 使用0.4.7版本 import time import scrcpy from adbutils import adb import cv2def on_frame(frame):# If you set non-blocking (default) in constructor, the frame event receiver# may receive No…

新的服务器Centos7.6 安装基础的环境配置(新服务器可直接粘贴使用配置)

常见的基础服务器配置之Centos命令 正常来说都是安装一个docker基本上很多问题都可以解决了&#xff0c;我基本上都是通过docker去管理一些容器如&#xff1a;mysql、redis、mongoDB等之类的镜像&#xff0c;还有一些中间件如kafka。下面就安装一个 docker 和 nginx 的相关配置…

wordpress搭建主题可配置json

网站首页展示 在线访问链接 http://dahua.bloggo.chat/ 配置json文件 我使用的是argon主题&#xff0c;你需要先安装好主题&#xff0c;然后可以导入我的json文件一键配置。 需要json界面配置文件的&#xff0c;可以在评论区回复&#xff0c;看见评论我会私发给你。~

VMware Workstation Pro 最新版下载路径图示

从 2024 年 5 月开始&#xff0c;VMware Workstation Pro 宣布免费供个人使用。这意味着我们可以在无需许可证密钥或任何持续费用的前提下&#xff0c;在 Windows 或 Linux 上下载并使用这款强大的虚拟机软件的全部功能。 1、进入官网 你会发现找不到VMware workstation Pro 的…

【软件测试】设计测试用例的万能公式

文章目录 概念设计测试用例的万能公式常规思考逆向思维发散性思维万能公式水杯测试弱网测试如何进行弱网测试 安装卸载测试 概念 什么是测试用例&#xff1f; 测试⽤例&#xff08;Test Case&#xff09;是为了实施测试⽽向被测试的系统提供的⼀组集合&#xff0c;这组集合包…

linux命令详解,ssh服务+远程拷贝

ssh服务 ssh&#xff08;Secure Shell&#xff09;命令用于安全地远程登录到另一台计算机&#xff0c;并执行命令和传输文件。ssh 提供了加密的通信通道&#xff0c;确保数据传输的安全性。 ssh [选项] [用户]主机 [命令]常用选项 -V&#xff1a;显示 ssh 版本信息。-v&…

“高级Java编程复习指南:深入理解并发编程、JVM优化与分布式系统架构“

我的个人主页 接下来我将方享四道由易到难的编程题&#xff0c;进入我们的JavaSE复习之旅。 1&#xff1a;大小写转换------题目链接 解题思路&#xff1a; 在ASCII码表中&#xff0c;⼤写字⺟A-Z的Ascii码值为65- 90&#xff0c;⼩写字⺟a-z的Ascii码值为97-122。每个字 ⺟…

SQL面试题——飞猪SQL面试 重点用户

飞猪SQL面试题—重点用户 在一些场景中我们经常听到这样的一些描述&#xff0c;例如20%的用户贡献了80%的销售额&#xff0c;或者是20%的人拥有着80%的财富&#xff0c;你知道这样的数据是怎么算出来的吗 数据如下,uid 是用户的id ,amount是用户的消费金额 |uid|amount| ---…

操作系统OS--进程

目录 操作系统是什么 进程 进程的状态 1.并行和并发 2.时间片 进程优先级 进程切换 task_struct内容分类&#xff1a; 操作系统是什么 操作系统本质上是一款纯正的“搞管理”的软件 你的程序不能直接写入硬件&#xff0c;都必须通过操作系统 对软硬件之间进行交互&…

Spring——容器:IoC

容器&#xff1a;IoC IoC 是 Inversion of Control 的简写&#xff0c;译为“控制反转”&#xff0c;它不是一门技术&#xff0c;而是一种设计思想&#xff0c;是一个重要的面向对象编程法则&#xff0c;能够指导我们如何设计出松耦合、更优良的程序。 Spring 通过 IoC 容器来…

全自动火腿肉馅斩拌机:

全自动火腿肉馅斩拌机通过斩切作用提高产品的细密度和弹性&#xff0c;广泛应用于肉制品的深加工制作&#xff0c;如制作肉丸、香肠等。其工作原理是利用斩刀高速旋转的斩切作用&#xff0c;将原料进行斩切和乳化处理&#xff0c;从而提高产品的细腻度和弹性。斩拌机具有以下特…

音视频入门基础:MPEG2-TS专题(3)——TS Header简介

注&#xff1a;本文有部分内容引用了维基百科&#xff1a;https://zh.wikipedia.org/wiki/MPEG2-TS 一、引言 本文对MPEG2-TS格式的TS Header进行简介。 进行简介之前&#xff0c;请各位先下载MPEG2-TS的官方文档。ITU-T和ISO/IEC都分别提供MPEG2-TS的官方文档。但是ITU提供的…

NCC前端调用查询弹框

系统自带的查询模板 弹框 调启使用默认的 查询模板 是在 单据模板的 列表模板中&#xff0c;有个查询区域 &#xff0c;查询区域就是查询模板内容如果在列表页做客开 新增按钮 调启查询模板 无问题&#xff0c;但是目前需求是需要再卡片页面下调启系统标准的调启模板代码 //调…

第8章 利用CSS制作导航菜单

8.1 水平顶部导航栏 水平菜单导航栏是网站设计中应用范围最广的导航设计&#xff0c;一般放置在页面的顶部。水平导航适用性强&#xff0c;几乎所有类型的网站都可以使用&#xff0c;设计难度较低。 8.1.1 简单水平导航栏的设计与实现 8.1.1.1导航栏的创建 <nav>标签…

labview拆解日期字符串

今天在写测试时&#xff0c;发现有些时候需要把日期和时间拆分开来&#xff0c;由于项目采集到的日期是一个数字字符串&#xff0c;需要把他们转换成带日期格式的字符串分别显示&#xff0c;这里还是用到了数组到电子表格字符串转换的函数。 下面示例如下&#xff0c;首先我们…

Kafka - 启用安全通信和认证机制_SSL + SASL

文章目录 官方资料概述制作kakfa证书1.1 openssl 生成CA1.2 生成server端秘钥对以及证书仓库1.3 CA 签名证书1.4 服务端秘钥库导入签名证书以及CA根证书1.5 生成服务端信任库并导入CA根数据1.6 生成客户端信任库并导入CA根证书 2 配置zookeeper SASL认证2.1 编写zk_server_jass…

Ubuntu22.04安装DataEase

看到DataEase的驾驶舱&#xff0c;感觉比PowerBI要好用一点&#xff0c;于是搭建起来玩玩。Dataease推荐的操作系统是Ubuntu22.04/Centos 7。 下载了Ubuntu22.04和DataEase 最新版本的离线安装包 一.安装ubuntu22.04 在安装的时候&#xff0c;没有顺手设置IP地址信息&#xff…

使用iviewui组件库的坑

背景 使用view-design组件库的Input组件的时候&#xff0c;按照产品的要求&#xff0c;输入框中只能键入正整数。 使用效果 如果直接使用组件的type属性&#xff0c;设置类型为number时&#xff0c;乍一看没啥问题&#xff0c;但是当我们键入 小数点(.) 或者 e/E 后面没有跟任…