1. 为什么需要NL2SQL?
在企业数据分析场景中,SQL是连接数据库的核心工具,但其语法门槛让非技术人员望而却步。自然语言转SQL(NL2SQL) 技术的出现,打破了这一限制。用户只需输入"帮我查一下本月产品销售额排名"这类口语化指令,系统即可自动生成对应SQL语句并返回可视化结果,大幅提升数据利用效率。
阿里云 AppFlow 平台通过DMS+百炼平台,将NL2SQL功能深度融入企业流程,助力用户实现:
- 零代码数据查询:无需编写SQL,通过对话即可获取数据洞察
- 多系统无缝集成:支持钉钉等办公场景的数据交互
- 可视化结果展示:自动将查询结果转化为直观图表

2. 前期准备
- 将您的数据库使用阿里云DMS托管,如果没有,可以参考下列文档进行托管
-
- 阿里云数据库导入DMS中 实例管理_数据管理(兼容数据库备份)(DMS)-阿里云帮助中心
- 他云或自建数据库录入 实例管理_数据管理(兼容数据库备份)(DMS)-阿里云帮助中心
- 预加载数据库Schema信息
访问DMS控制台,左侧选择您的数据库实例。点击Copilot按钮,等待"数据初始化中"消失即可。此时,数据库NL2SQL将会按照您当前的数据库进行生成。

3. 整体流程介绍

4. 配置教程
4.1 百炼应用搭建
- 进入百炼控制台的应用列表, 在页面右侧点击新增应用 。在对话框中选择智能体应用 ,点击立即创建。

-
根据需要选择模型。模型参数无特殊需要保持默认即可。
-
复制如下Prompt到提示词框
角色
- 你是一个数据可视化分析专家,善于对人类给出的数据进行分析、整理以及可视化
要求
- 仔细阅读和理解人类给出的数据库查询结果
- 根据数据特点选择最适合展示的图表类型,例如饼图、折线图、柱状图等各类图表
- 使用可视化图表工具生成图表
数据示例
[{"type":"研发","count":"56"},{"age":"产品","count":"44"}]
数据中每一个对象元素代表数据库查询结果的一行,Json对象的Key表示列标题,Value表示当前列的值

-
找到技能-MCP服务,开通并添加"AntV 可视化图表" MCP服务。
-
点击发布按钮
-
获取调用 API 所需的应用ID和API-Key。为了在后续通过 API 调用大模型应用的能力,我们需要获取一个百炼应用的 API-KEY 和应用 ID。
-
在应用列表中可以查看所有百炼应用 ID。保存应用 ID 到本地用于后续配置。
-
在我的API-KEY页面右侧,点击创建我的API-KEY,在弹出窗口中创建一个新 API-KEY。保存 API-KEY 到本地用于后续配置。
4.2 创建钉钉应用
创建应用
- 访问钉钉开放平台,点击上部应用开发。

- 在应用开发的左侧导航栏中,点击钉钉应用 ,在钉钉应用 页面右上角点击创建应用。

- 在创建应用 面板,填写应用名称 和应用描述 ,上传应用图标,完成后点击保存。

查看应用 Client ID 和 Client Secret
在左侧菜单选择凭证与基础信息,复制 Client ID 和 Client Secret,用于下一步创建连接流。

创建消息卡片
钉钉机器人通过卡片消息支持流式返回结果,您需要创建卡片模板供消息发送使用。
- 访问卡片平台,点击新建模板。

- 在创建模板输入框,填入模板信息。

- 在模拟编辑页面,保存 并发布 模板。然后点击返回模板列表页面。

- 复制模板ID,用于创建钉钉连接流使用。

授予应用发送卡片消息权限
创建卡片后,您需要给应用授予发送卡片消息的权限。
- 访问钉钉应用列表。找到刚刚创建的应用,点击应用名称进入详情页面。
- 在左侧菜单选择开发配置 > 权限管理 ,在左侧搜索框分别输入
Card.Streaming.Write
和Card.Instance.Write
,并在操作列点击申请权限。

4.3 AppFlow连接流配置
步骤1:钉钉机器人:收到文本消息
- 访问AppFlow控制台,在点击左侧菜单栏"连接流",选择"创建连接流",填写当前连接流的基本信息。

- "选择触发事件",找到并点击选择"钉钉机器人",触发事件选择"收到文本消息时",点击"保存,进入下一步"。

步骤2:DMS数据管理:NL2SQL

- 搜索并选择"DMS数据管理"连接器,执行动作选择"NL2SQL",点击下一步
- 添加鉴权凭证,按照界面提示选择符合要求的RAM角色,或新建RAM角色
- 在DMS页面可获取如下信息,从左到右依次为:数据库名、数据库连接地址、数据库连接端口号

|----------|--------------------|------------------------------|
| 参数名称 | 值 | 示例 |
| 数据库连接地址 | 上图第二个红框值 | rm-xx.mysql.rds.aliyuncs.com |
| 数据库端口号 | 上图第三个红框值 | 3306 |
| 数据库名 | 上图第一个红框值 | app_001 |
| 问题 | 插入变量-节点1-会话消息-消息内容 | {{Node1.text.content}} |
- 点击"+"进行下一节点配置
步骤3:DMS数据管理:执行SQL语句

- 搜索并选择"DMS数据管理"连接器,执行动作选择"执行SQL语句",点击下一步
- 添加鉴权凭证,按照界面提示选择符合要求的RAM角色,或新建RAM角色
|----------|-----------------|------------------------------|
| 参数名称 | 值 | 示例 |
| 数据库连接地址 | 上图第二个红框值 | rm-xx.mysql.rds.aliyuncs.com |
| 数据库端口号 | 上图第三个红框值 | 3306 |
| 数据库名 | 上图第一个红框值 | app_001 |
| SQL查询语句 | 插入变量-节点2-生成的SQL | {{Node2.sql}} |
步骤4:阿里云百炼:百炼应用(流式)

- 选择"阿里云百炼"连接器,执行动作选择"百炼应用",点击下一步
- 根据前面步骤保存的API Key创建连接凭证
- 填写应用Id和Prompt提示词
|-----------|----------------|----------------------------------|
| 参数名称 | 值 | 示例 |
| 应用ID | 百炼应用ID | 06d2daf4175145c4aed068f4af8c815a |
| Prompt提示词 | 插入变量-节点3-查询结果集 | {{Node3.rows}} |
步骤5:钉钉应用机器人:发送AI卡片消息

- 选择"钉钉应用机器人"连接器,执行动作选择"发送AI卡片消息"
- 使用在之前获取的钉钉应用的Client ID 和 Client Secret创建鉴权凭证
- 填写如下参数
|----------|------------------|--------------------------|
| 参数名称 | 值 | 示例 |
| 模版ID | 之前步骤创建的钉钉卡片模版ID | xxx-xx-xxx.schema |
| 机器人Code | 插入变量-节点1-机器人代码 | {{Node1.robotCode}} |
| 字段Key | content | content |
| 内容 | 插入变量-节点4-输出结果 | {{Node4.text}} |
| 群聊Id | 插入变量-节点1-会话ID | {{Node1.conversationId}} |
| 用户Id | 插入变量-节点1-消息发送人ID | {{Node1.senderStaffId}} |
- 完成后点击完成并保存流程
- 选择发布连接流,复制 Webhook Url后续配置使用
4.4 配置钉钉机器人
-
访问钉钉应用列表。找到刚刚创建的应用,点击应用名称进入详情页面。
-
在添加应用能力 页面,找到机器人卡片,点击添加 。
-
在机器人配置页面,打开机器人配置 开关,您可以参考下图完成配置。消息接收模式 请选择HTTP模式 ,消息接收地址 为刚刚的 WebhookUrl 。然后点击发布。

发布应用版本
应用创建完成后,如果需要将应用供企业内其他用户使用,需要发布一个版本。
-
点击应用开发 ,在钉钉应用 页面,点击目标应用。
-
在目标应用开发导航栏,点击版本管理与发布 ,在版本管理与发布 页面,点击创建新版本 。进入版本详情页面,输入应用版本号 和版本描述 信息,选择合适的应用可见范围 ,完成后点击保存 。并在弹窗中点击直接发布 。
-
完成后,在钉钉中搜索应用或将应用加入群聊即可与应用进行对话了
-
在钉钉群中@机器人,进行交流互动
