DBD Copilot LLM 规范实践

DBD Copilot 已能通过自然语言显著提升操作效率,但用户往往会用更口语化表达设计需求。而口语的随意性往往导致指令解析不准确。为此,润乾定义了DBD 汉语命令 LLM 规范,确保每一条指令都能精准映射为生成组件、设计布局等具体 API 调用。同时这也为我们提供了熟悉汉语命令的途径。

1,LLM 规范的使用和配置方法

当我们新增命令时,可以看到语句后面这个图标,如果命令是自然语言,我们就需要这个按钮来使用LLM 规范功能,将它翻译为规范的汉语命令。

..

..

这个功能是通过LLM 引擎智能识别功能和转换命令的,这就需要配置我们的模型。模型的配置存在 raqsoft/guide/dbd2.0/js/funcs.js 文件中。修改三个核心参数即可启用此功能:

llmUrl:填写所选大模型的 API 接口地址。

requestJSON:配置 LLM 的调用参数,如模型名称等。

keyFile:指定存储 API 密钥的本地文本文件名(如 deepseek.txt),将对应服务的密钥存入该文件即可。

..上图中我们配置了deepseek 的 API 接口地址,配置了模型为 deepseek-chat 模型,以及最大 token 量等参数,并将自己的 APIKey 填入 deepseek.txt 文档,放在 WEB-INF 目录下。

我们用下面的设计例子来探索自然语言创建一个DBD 的做法。

2,生成报表

当需要生成一个报表组件,汉语命令需要用这样的格式书写:

创建报表组件:报表 命名为组件名称 数据集 数据集名称

表设计:左表头 字段名,... 指标 字段名,... 数据项 汇总 汇总方式

而业务人员可能更熟悉这样的描述方式:
用订单数据集生成一个报表组件命名为订单分布汇总

按地区分组各年的销售业绩,只看汇总数据

新增命令输入“用订单数据集生成一个报表组件命名为订单分布汇总”,点击文本后面的LLM 规范按钮,自然语言通过 LLM 引擎解析成格式规范的汉语命令,追加显示到自然语言的后面。

规范结果:

报表 数据集 订单数据集 命名为 订单分布汇总

..

..

再点击执行。

..

同样的方式我们规范和执行第二句,“按地区分组各年的销售业绩,只看汇总数据”

规范结果:

左表头 货主地区 订购年 指标 订单金额 数据项 订单金额 汇总 求和 隐藏明细

..

这个网格式报表就创建出来了。


3,生成统计图

添加一个柱形图,名为大区销售统计图,使用订单数据集

规范结果:

统计图 类型 柱形图 命名为 大区销售统计图 数据集 订单数据集

..

设置大区销售统计图的系列值为订单金额求和,分类为地区,系列为订购年

规范结果:

修改 大区销售统计图 系列值 订单金额 汇总 求和 分类 货主地区 系列 订购年

..

我们也可以对当前选中的统计图进行设计修改,比如
把大区销售统计图的系列值汇总改为计数

规范结果:

修改 大区销售统计图 系列值 订单ID 汇总 计数

..

4,数据过滤

上述统计图中,货主地区华中的数据只有2012 年的,且数据量过小,我们不想在其中显示华中,这时候需要过滤语句来进行筛选。

..

而用汉语命令可以这样写:
不显示地区为华中的数据

规范结果:

过滤 货主地区 不等于 “华中”

..

5,生成指标卡片

指标卡片

添加一个指标卡片:销售同比指标,用销售订单同比数据集做比例计算

规范结果:

指标卡片 命名为 销售同比指标 数据集 销售订单同比数据集 指标卡类型 比例计算

..

添加一个指标卡片:本月销售额,用销售汇总数据集的数据,图标用红色火箭

规范结果:

指标卡片 命名为 本月销售额 数据集 销售汇总数据集 指标卡类型 单值 指标卡图标 “火箭” 图标颜色 红色

..

6,生成按钮组,绑定事件

创建按钮组,命名为toggle 操作,包括按钮显示明细和和关闭明细

规范结果:

事件 命名为 toggle 操作 事件文本 “显示明细,关闭明细”

..

给按钮组toggle 操作增加事件,点击时显示组件订单分布汇总

规范结果:

绑定 toggle 操作 点击时 显示 对象 订单分布汇总

..

给按钮组toggle 操作增加事件,点击时隐藏组件订单分布汇总

规范结果:

绑定 toggle 操作 点击时 隐藏 对象 订单分布汇总

..


7,设计布局

增加上下结构布局,名为销售统计面板,上面是toggle 操作组件,下面是大区销售统计图

规范结果:

上下布局 销售统计面板 上 toggle 操作 下 大区销售统计图

..

8,预览

最后对我们编辑的DBD 做点调整,就可以预览结果了
选择订单分布汇总组件,选择组件样式,初始化设置为隐藏

..

调整大小和摆放位置

..

点击导航栏的预览查看设计效果:

..

..

9,提示词

LLM 规范执行时,会附带提示词来约束功能识别和命令转换,让AI严格遵守纪律,告诉它应该怎么理解输入、处理,又怎么输出我们需要的汉语命令语句。

LLM 规范分为两步:功能识别和规范化。

1,功能识别

定义在类路径根目录下的nlr-prompt-main-dbd.md 文档中。AI 阅读此文档后,理解输入并转换为功能名称。这部分提示词会被经常复用,不会附带数据项,以减少 token 消耗。

2,规范化命令

定义在类路径根目录下的数个文档:

nlr-prompt-func-dbd-newreport.md(生成报表组件)

nlr-prompt-func-dbd-reportsetting.md(表设计)

nlr-prompt-func-dbd-fieldcalculation.md(字段计算)

nlr-prompt-func-dbd-filter.md(数据过滤)

nlr-prompt-func-dbd-newchart.md(生成统计图组件和修改统计图设计)

nlr-prompt-func-dbd-newvcard.md(生成指标卡组件)

nlr-prompt-func-dbd-event.md(生成按钮组和绑定事件)

nlr-prompt-func-dbd-newformitem.md(生成参数控件组件)

nlr-prompt-func-dbd-layout.md(生成和设计布局组件)
nlr-prompt-func-dbd-tab.md(生成和设计标签页组件)

根据第一步AI 识别的功能,选中对应的 md 文档,AI 阅读此文档后,理解输入并转换为规范化语句。

..


(1)功能识别

提示词nlr-prompt-main-dbd.md

内容概括:

1,输入定义:用户输入内容

2,功能识别规则:定义了 AI 的角色、工作清单和约束

3,输出定义:输出识别的功能名称

4,功能示例:识别功能举例

..

..

功能清单其中就列有:
1. 添加组件: 报表

向Dashboard 增加一个报表组件。

例如:明确提出是报表、网格、表格

2. 添加组件: 指标卡片

向Dashboard 增加一个指标卡片组件。

例如:明确提出是指标卡片、指标卡、指标、单值卡片、比例卡片

3. 统计图

向Dashboard 增加一个统计图组件,或修改统计图设置。

例如:明确提出是统计图、饼图、柱形图等图形,或提出修改统计图

4. 添加组件: 控件

向Dashboard 增加一个控件组件。

例如:明确提出是某个类型的表单控件,如单选、编辑器、滑块、日期时间等

5. 数据过滤操作

对当前选中报表做数据过滤。

例如:明确提出是查询、筛选、过滤,提出只显示某些条件的数据

6. 事件

向Dashboard 增加一个事件组件或给事件组件绑定事件。

例如:明确提出是事件组件、按钮组、绑定

7. 布局组件设置

向Dashboard 增加一个左右布局或上下布局组件,或给布局组件插入左右、上下内容。

例如:明确提出是左右布局,左右结构,上下布局,上下结构

8. 标签组件设置

向Dashboard 增加一个标签布局,或给标签布局插入新标签、新内容

例如:明确提出是标签组件、标签组

9. 表设计

对当前选中报表设置表头、指标、字段汇总、显示或隐藏明细

例如:明确设计表格布局结构

10. 字段计算

对某个字段设置字段的计算规则,可以是跨行计算概念、范围内的补充汇总、或行内计算式

例如:明确设置字段的计算规则

(2)命令转换功能举例展示

例如生成报表提示词nlr-prompt-func-dbd-newreport.md

此文档内容概括:

1,输入定义:用户输入内容

2,功能识别:定义了 AI 的角色、工作清单和约束

3,规范转换规则:包括字段数据项、词典的构成、工作细则。

4,示例集附录:各种输入情况举例。

..

..

其他功能的提示词与此结构基本一致。语句结构复杂或者比较灵活的情形下,提示词的叙述会更细致,区分开各类情况。比如:

生成报表提示词nlr-prompt-func-dbd-newchart.md 提到“功能是用给定的数据集新建统计图组件或修改已有的统计图设置”,这包含了两种不同语句。在该文档的规范化约束中就会看到“如果原句表明要修改某个统计图,才在语句中添加【修改】这参数个词”,等等更细致的提示描述。

..

总结:不同的大模型,对提示词的利用可能不同。如果遇到LLM 执行结果不理想的情况,可以根据情况和 LLM 特征对这些提示词进行适当改动,帮助模型在目标场景下更好地理解怎样处理能输出用户想要的结果。