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

前面的系列文章介绍了:

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工作流。

进入应用进行对话。

相关推荐
梦想平凡2 小时前
PHP 微信棋牌开发全解析:高级教程
android·数据库·oracle
TianyaOAO2 小时前
mysql的事务控制和数据库的备份和恢复
数据库·mysql
Ewen Seong2 小时前
mysql系列5—Innodb的缓存
数据库·mysql·缓存
码农老起2 小时前
企业如何通过TDSQL实现高效数据库迁移与性能优化
数据库·性能优化
夏木~3 小时前
Oracle 中什么情况下 可以使用 EXISTS 替代 IN 提高查询效率
数据库·oracle
W21553 小时前
Liunx下MySQL:表的约束
数据库·mysql
黄名富4 小时前
Redis 附加功能(二)— 自动过期、流水线与事务及Lua脚本
java·数据库·redis·lua
言、雲4 小时前
从tryLock()源码来出发,解析Redisson的重试机制和看门狗机制
java·开发语言·数据库
一个程序员_zhangzhen4 小时前
sqlserver新建用户并分配对视图的只读权限
数据库·sqlserver
zfj3214 小时前
学技术学英文:代码中的锁:悲观锁和乐观锁
数据库·乐观锁··悲观锁·竞态条件