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

进入应用进行对话。

相关推荐
保持学习ing21 分钟前
day1--项目搭建and内容管理模块
java·数据库·后端·docker·虚拟机
发仔1231 小时前
Oracle与MySQL核心差异对比
mysql·oracle
宇钶宇夕1 小时前
EPLAN 电气制图:建立自己的部件库,添加部件-加SQL Server安装教程(三)上
运维·服务器·数据库·程序人生·自动化
爱可生开源社区1 小时前
SQLShift 重磅更新:支持 SQL Server 存储过程转换至 GaussDB!
数据库
贾修行2 小时前
SQL Server 空间函数从入门到精通:原理、实战与多数据库性能对比
数据库·sqlserver
傲祥Ax2 小时前
Redis总结
数据库·redis·redis重点总结
椰椰椰耶2 小时前
【MyBatis】XML实现,配置方法和增、删、改、查
xml·oracle·mybatis
一屉大大大花卷3 小时前
初识Neo4j之入门介绍(一)
数据库·neo4j
周胡杰3 小时前
鸿蒙arkts使用关系型数据库,使用DB Browser for SQLite连接和查看数据库数据?使用TaskPool进行频繁数据库操作
前端·数据库·华为·harmonyos·鸿蒙·鸿蒙系统
wkj0013 小时前
navicate如何设置数据库引擎
数据库·mysql