☘️ 目标

在本案例中,我们的目标是构建一个数据助手类应用,包含以下三个方面的能力:

  1. 根据文档进行智能问答
  2. 根据数据库进行数据对话
  3. 根据工具插件进行互联网搜索

这三类能力,可以基于DB-GPT提供的意图识别的能力,在一个对话中使用。数据助手会根据用户的问题匹配适合的子智能体应用来回答对应领域的问题。

:::warning ⚠️ 注意: 本案例主要用于应用构建的演示目的,实际应用在生产环境还需要针对领域数据与场景做进一步优化。

:::

前置准备

在开始构建应用之前,首先需要完成项目的安装部署,相关教程可以参考部署文档

子智能应用构建

首先我们需要分别创建三个子智能应用,在通过AppLink提供的意图识别的能力将智能应用集成到一个统一的智能体中,统一对话交互入口。

基于RAG的问答助手构建

基于RAG的问答助手我们采用DB-GPT提供的Agent模块进行构建。DB-GPT中内置了一些智能体,如

  • 意图识别智能体(Intent Recognition Expert)
  • 代码智能体(CodeEnginner)
  • 报告生成智能体(Reporter)
  • 数据分析智能体(DataScientist)
  • 文档总结智能体(Summarizer)
  • 工具专家智能体(ToolExpert)

在本案例中智能问答主要依赖的是领域知识库跟文档总结智能体(Summarizer), 所以首先我们需要构建领域知识库。 流程如下:

画板

领域知识整理构建

领域知识的整理加工是一个非常重要的工作,对最终的效果有非常重要的影响,大家需要自己实际的应用对文档进行必要的整理、清洗。 在本案例中,我们就用默认的PDF进行上传使用。我们准备的是OceanBase官方文档作为演示素材。

创建知识库

在产品界面,选择知识库,点击右上角的【创建知识库】,填写对应的参数。 在存储类型我们提供了多种方式。1. Embedding向量 2. 知识图谱 3. 全文。 此案例中,我们采用Embedding的方案进行构建。

应用开发 - 图2

填写好对应参数之后,点击【下一步】选择文档类型,进行文档上传。

应用开发 - 图3

选择合适的切片方式,等文档上传完成。至此我们知识库构建完成,可以进行后续的智能问答应用构建。

应用开发 - 图4

创建问答应用

选择【应用管理】 -> 【创建应用】, 在弹出对话框中,选择单一智能体模式。 应用开发 - 图5

点击【确定】, 在弹出对话框中:

  1. 选择Summarizer智能体。
  2. 提示词默认为空,如果需要修改,可以先自定义Prompt, Prompt定义教程参见文档
  3. 模型策略: 支持多种模型策略,如果有多个模型,可以按照优先级进行配置。
  4. 添加资源: 在本案例中,我们依赖先前创建的知识库,所以选择资源类型【knowledge】 参数为刚刚创建的知识库名称。
  5. 添加一个推荐的提问问题, 【是否生效】来控制推荐问题的生效。

应用开发 - 图6

点击【保存】,即完成了智能应用的创建。

开始对话

应用开发 - 图7

:::warning 说明: 本教程中展示的智能体应用是基于Summarizer智能体进行构建的,Summarizer智能体是DB-GPT内置的智能体,相关代码实现见源码, 在实际使用中,可以根据具体的场景对相关代码做进一步的定制与优化。或者基于此案例自定义智能体。

:::

数据对话助手

同理,可以根据类似的思路构建数据对话助手,数据对话助手是可以基于一个数据库进行简单的数据对话,并绘制相应的图表。 主要包含以下步骤:

画板

数据准备

数据准备可以参考文档中的数据准备部分。

创建数据源

准备好数据之后,需要将数据库添加到数据源中,供后续使用。选择【应用管理】-> 【数据库】-> 【添加数据源】

应用开发 - 图9

创建数据应用

如下图所示,选择【应用管理】-> 【应用程序】-> 【创建应用】,选择单一智能体应用,填写对应的参数,点击确定。

应用开发 - 图10

依次选择对应的参数:

  • 智能体:选择【DataScientist】智能体
  • 提示词: 默认为空,自定义可以参见Prompt管理教程
  • 模型策略: 这里选择了优先级策略,可以按照优先级使用proxyllm、tongyi_proxyllm两个模型。
  • 可用资源: 资源类型选择数据库类型,参数选择我们之前添加的数据库
  • 推荐问题: 可以根据数据情况来设定默认问题。

应用开发 - 图11

开始对话

点击开始对话,输入对应的问题进行数据问答。

应用开发 - 图12

搜索助手

天气助手需要调用搜索引擎查询相关信息,所以需要设计Tool调用,构建过程较为复杂。 这里为了简便应用创建,我们将相关的能力构建成了一个AWEL工作流,可以直接安装使用。

AWEL工作流安装

首先执行命令dbgpt app list-remote 查看远程仓库中所有的AWEL示例流程。awel-flow-web-info-search提供了搜索互联网的能力。

  1. dbgpt app list-remote
  2. ┏━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
  3. 存储库 类型 名称
  4. ┡━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┩
  5. csunny/dbgpts agents summarizer-agent-example
  6. csunny/dbgpts operators awel-simple-operator
  7. csunny/dbgpts resources jina-web-reader
  8. csunny/dbgpts resources simple-calculator-example
  9. csunny/dbgpts workflow all-in-one-entrance
  10. csunny/dbgpts workflow andrewyng-translation-agent
  11. csunny/dbgpts workflow awel-flow-example-chat
  12. csunny/dbgpts workflow awel-flow-rag-chat-example
  13. csunny/dbgpts workflow awel-flow-rag-summary-example
  14. csunny/dbgpts workflow awel-flow-simple-streaming-chat
  15. csunny/dbgpts workflow awel-flow-web-info-search
  16. csunny/dbgpts workflow db-expert-assisant
  17. csunny/dbgpts workflow financial-report-knowledge-factory
  18. csunny/dbgpts workflow financial-robot-app
  19. csunny/dbgpts workflow rag-save-url-to-vstore
  20. csunny/dbgpts workflow rag-url-knowledge-example
  21. eosphoros/dbgpts agents summarizer-agent-example
  22. eosphoros/dbgpts operators awel-simple-operator
  23. eosphoros/dbgpts resources jina-web-reader
  24. eosphoros/dbgpts resources simple-calculator-example
  25. eosphoros/dbgpts workflow all-in-one-entrance
  26. eosphoros/dbgpts workflow andrewyng-translation-agent
  27. eosphoros/dbgpts workflow awel-flow-example-chat
  28. eosphoros/dbgpts workflow awel-flow-rag-chat-example
  29. eosphoros/dbgpts workflow awel-flow-rag-summary-example
  30. eosphoros/dbgpts workflow awel-flow-simple-streaming-chat
  31. eosphoros/dbgpts workflow awel-flow-web-info-search
  32. eosphoros/dbgpts workflow db-expert-assisant
  33. eosphoros/dbgpts workflow financial-report-knowledge-factory
  34. eosphoros/dbgpts workflow financial-robot-app
  35. eosphoros/dbgpts workflow rag-save-url-to-vstore
  36. eosphoros/dbgpts workflow rag-url-knowledge-example
  37. └──────────────────┴───────────┴────────────────────────────────────┘

执行dbgpt app install awel-flow-web-info-search命令将其安装到本地。

  1. dbgpt app install awel-flow-web-info-search
  2. >
  3. Installing collected packages: awel-flow-web-info-search
  4. Successfully installed awel-flow-web-info-search-0.1.0
  5. Installed dbgpts at ~/.dbgpts/packages/ae442685cde998fe51eb565a23180544/awel-flow-web-info-search.
  6. dbgpts 'awel-flow-web-info-search' installed successfully.

刷新界面,在AWEL工作流界面,可以看到对应的workflow已经安装完成。

应用开发 - 图13

点开AWEL工作流,我们可以看到里面的内容,这里简要做个解读。

  1. Agent Resource: 智能体依赖的资源,本案例中是baidu_search
  2. ToolExpert: 工具专家, 用来实现工具的调用。
  3. Summarizer智能体: 用来对查询到的结果做总结。

综上: 本AWEL工作流中用到了两个智能体,ToolExpert和Summarizer, ToolExpert依赖baidu_search这个内置工具,Summarizer对工具专家执行的结果做进一步总结,生成最终回答。

应用开发 - 图14

创建搜索助手

同时,【创建应用】-> 【任务流编排模式

应用开发 - 图15

选择对应的工作流程,添加推荐问题,点击保存。

应用开发 - 图16

开始对话

应用开发 - 图17

统一智能应用构建

按照上述的流程,我们已经创建好了各个子场景的智能应用,但在实际的应用中。我们需要在一个入口完成所有的问答,因此需要将这些子领域的智能体进行整合。 通过AppLink与意图识别的能力,统一交互入口。

为了实现问题路由,一个核心的能力是意图识别与分类。 在设计上为了让应用构建更加灵活,我们提供了基于知识库跟Agent的意图识别与分类能力。并支持基于AWEL进行自定义。

意图知识库构建

要实现意图分类,将用户的问题路由到对应的智能应用,我们首先需要对每个应用的能力进行定义描述。 这里我们通过知识库的方式来进行构建。 如下是一个简单的意图定义文档,用来描述每个智能应用的能力。 主要有四类信息需要填写

  1. Intent: 意图类型
  2. App Code: 可以在应用界面复制。

应用开发 - 图18

  1. Describe: 描述智能体的能力。
  2. Slots: 槽位信息, 用来表示在实际问答中智能体依赖的参数,如天气查询中需要【时间】跟【位置】信息。
  1. #######################
  2. Intent:DB答疑 App Code:a41d0274-8ac4-11ef-8735-3ea07eeef889 Describe: 所有DB领域相关知识的咨询答疑,包含了日常DBAFAQ问题数据、OceanBase(OB)的官方文档手册,操作手册、问题排查手册、日常疑难问题的知识总结、可以进行专业的DBA领域知识答疑。 只要和DB相关的不属于其他应用负责范畴的都可以使用我来回答 问题范例: 1.怎么查看OB抖动? 2.DMS权限如何申请 3.如何确认xxxxx 类型:知识库咨询
  3. #######################
  4. Intent:数据对话 App Code:516963c4-8ac9-11ef-8735-3ea07eeef889 Describe: 通过SQL查询分析当前数据库(dbgpt-test:包含用户和用户销售订单数据的数据库) 类型:数据查询
  5. #######################
  6. Intent:天气检索助手 App Code:f93610cc-8acc-11ef-8735-3ea07eeef889 Describe: 可以进行天气查询 Slots:
  7. 位置: 要获取天气信息的具体位置
  8. 时间: 要获取的天气信息的时间,如果没有明确提到,使用当前时间

创建意图分类知识库

如下图所示,创建意图分类知识库。

应用开发 - 图19

需要注意,分隔符需要采用我们自定义的分隔符,即文档中的#进行分割。

应用开发 - 图20

AWEL工作流安装编辑

同样,为了简化使用。我们已经编写好了对应的意图识别的AWEL工作流,可以直接安装使用。

  1. dbgpt app install db-expert-assisant
  2. > Installing collected packages: db-expert-assisant
  3. Successfully installed db-expert-assisant-0.1.0
  4. Installed dbgpts at ~/.dbgpts/packages/ae442685cde998fe51eb565a23180544/db-expert-assisant.
  5. dbgpts 'db-expert-assisant' installed successfully.

打开前端界面,在AWEL工作流界面,我们可以看到db_expert_assisant,为了方便我们后续编辑,我们复制一个流程进行编辑。 点击右上角【复制】,自定义名称与描述,即可完成复制。

应用开发 - 图21

我们打开复制的AWEL流程, 这里我们的命名为db_expert_assistant_v1, 打开工作流。 我们可以看到如下的编排流程。 同样的,在本工作流程当中用到了以下几个智能体

  1. Intent Recognition Expert: 意图识别专家,专门用来做意图识别,其依赖一个知识库资源,即我们前面定义的意图识别的知识库资源。
  2. AppLauncher: 用来调用每个领域专家。
  3. Summarizer: 为整个问答兜底,如果所有的场景都没有路由,会根据数据库知识库给出一个默认回答。

应用开发 - 图22

应用创建

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

应用开发 - 图23

点击确定,选择工作流,输入推荐问题,保存。

应用开发 - 图24

开始对话

应用开发 - 图25

此处为语雀卡片,点击链接查看

说明

本案例主要展示了使用DB-GPT构建数据应用的样例,可以更加方便的了解DB-GPT的能力。本教程提供的案例主要是用于演示,还不具备生产使用的效果。 效果优化是一个系统且复杂的工作,DB-GPT提供了灵活的能力可以满足原生数据智能应用的构建,但结合领域知识跟场景在实际落地中,还有很多的工作要做。

我们也非常希望社区有更好的案例可以与我们一起分享交流~