前面的系列文章介绍了:
通过这些内容,我们已经可以进行一些简单的数据对话分析,覆盖了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 Trigger
和Awel Layout Agent

进行工作流连线编排

重复上面2步,构建如下的工作流。
分别需要点击+拖入画布中的算子有:AWEL Agent Resource Knowledge
、AWEL Agent LLM Config
、Default 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工作流。

进入应用进行对话。
