1.进入实验平台
环境部署在本地docker
在浏览器输入127.0.0.1/apps进入平台
输入提供的账号密码
2.配置环境
进入dify平台后点右上角我的,然后配置模型
然后再系统模型设置里,按以下要求设置保存
3.时间查询
如下位置
新建 Chatbot → 取名「TimeBot」,logo不用换,然后点创建
然后是工具配置
提示词:
你是一个专业的时间查询助手,会根据用户的输入和给定的时间工具查询当前实时的时间信息,并正确返回结果
格式:yyyy-MM-dd HH:mm:ss E
示例:2025-12-07 15:20:30 星期六
你是一个专业的时间查询助手,会根据用户的输入和给定的时间工具查询当前实时的时间信息,并根据用户的提问精准正确的返回结果。
然后就可以在右侧的调试与预览界面提问:今天是星期几,几时几分
可以关闭思考模式
注意设置一下时区,免得弄错了
做完之后需要发布
4.数据库智能代理工作流
先创建工作流
节点1
创建节点1
配置好数据库设置,其中,实验环境中的数据库地址需要在任务管理器中去找(应该找WIFI的网卡)
如图
然后节点1的sql查询语句这里,需要获取整个数据库的表的结构信息,比如表名和字段信息等,这一步可以找AI
带别名
SELECT TABLE_NAME AS tbl,
COLUMN_NAME AS col,
ORDINAL_POSITION AS col_order,
COLUMN_TYPE AS col_type,
COLUMN_COMMENT AS col_comment,
CASE WHEN COLUMN_KEY = 'PRI' THEN 1 ELSE 0 END AS is_pk
FROM information_schema.COLUMNS
WHERE TABLE_SCHEMA = 'emp'
ORDER BY TABLE_NAME, ORDINAL_POSITION;
不带别名
SELECT TABLE_SCHEMA,
TABLE_NAME,
COLUMN_NAME,
ORDINAL_POSITION,
COLUMN_TYPE,
COLUMN_COMMENT,
CASE WHEN COLUMN_KEY = 'PRI' THEN 1 ELSE 0 END AS is_pk
FROM information_schema.COLUMNS
WHERE TABLE_SCHEMA = 'emp'
ORDER BY TABLE_NAME, ORDINAL_POSITION;
然后运行测试一下,确保无误
这一步过后,相当于告诉了大模型我们需要查询的这个数据库的表名和字段名等信息,方便我们后续继续用大模型对这个数据库进行操作
节点2
需要LLM大模型节点
这个节点作用是基于上一步我们给定的数据库结构信息和用户的要求生成一个sql语句
提示词:
你是一个专业的数据库专家,请根据用户的输入和sql查询的表结构信息,生成一个正确的可运行的sql语句。
# 要求
1.必须是select语句,不能是DML语句
2.必须是安全可运行的select语句
3.结构必须和给定的表结构匹配
# 输出格式:
必须是完整可运行的sql语句,不能有其他额外的信息。
用户的数据:{{#sys.query#}}
sql查询的表结构:{{#1765047547597.text#}}
-----------------------------------------------------------
你是一名资深数据库专家,会根据用户的输入和sql查询的表结构信息生成安全、只读的 SELECT 语句。
# 要求:
1. 仅输出一条标准的 SELECT 语句,禁止 INSERT/UPDATE/DELETE/CREATE/DROP/TRUNCATE/ALTER。
2. 字段、表名必须与结构完全一致,区分大小写,保留字加反引号。
3. 日期字段用 DATE() 截断;动态时间一律用 DATE_SUB(CURDATE(),INTERVAL n DAY/MONTH/QUARTER)。
4. 度量可能为 NULL 时包 IFNULL(x,0);GROUP 字段放在 SELECT 列表。
5. 多表 JOIN 先 ON 后主表;复杂逻辑可写子查询再 JOIN。
7. 返回 JSON 且仅 JSON:{"sql":"...","unit":"元/条/%","comment":"口径一句话"}
8. 你要正确理解表名和字段名的含义,避免出现歧义.
用户的数据:{{#sys.query#}}
sql查询的表结构:{{#1765047547597.text#}}
你是一个专业的数据库专家,请根据用户的输入和sql查询的表结构信息,生成一个正确的,满足用户需求的,可运行的sql语句。
# 要求
1.必须是select语句,不能是DML语句
2.必须是安全可运行的select语句
3.结构必须和给定的表结构匹配
4.要是能够满足客户需求的,能正确运行的select语句
# 输出格式: 必须是完整可运行的sql语句,不能有其他额外的信息。
用户的数据:{{#sys.query#}}
sql查询的表结构:{{#1765376903495.text#}}
要求
1.必须是select语句,不能是DML语句
2.必须是安全可运行的select语句
3.结构必须和给定的表结构匹配
4.要是能够满足客户需求的,能正确运行的select语句
输出格式: 必须是完整可运行的sql语句,不能有其他额外的信息。
用户的数据:
sql查询的表结构:
要求
1.必须是select语句,不能是DML语句
2.必须是安全可运行的select语句
3.结构必须和给定的表结构匹配
4.要是能够满足客户需求的,能正确运行的select语句
输出格式: 必须是完整可运行的sql语句,不能有其他额外的信息。
用户的数据:
sql查询的表结构:
节点3
通过上一节点已经生成了一条sql语句,现在需要将这条sql语句交给SQL查询工具进行查询
注意这个节点的sql查询语句是来自上一个LLM节点的变量
这一步没有问题的话就会正确输出查询的结果了
节点4
这一步需要将查询出来的数据做成可视化的报表
用到的可视化工具是echarts
相当于要对上一节点查询出的结果进行处理,让数据的格式转化为echarts可识别的类型
在上一SQL查询工具节点后新建一个LLM节点
提示词:
你是一个数据报表可视化专家,根据用户的输入和sql查询结果,可以将结果转换成可视化报表的格式,用json输出。
json的格式是:{"category":["A","B","C"], values:[1,2.3]}
两个数组的位置是一一对应的。
# 要求:
必须是json格式输出,不能有json以外的其他标识信息
用户的输入:
sql查询结果:(上一节点的查询结果)
然后对当前这个大模型节点的输出内容做一个结构化输出
然后测试看看输出是否结构化
节点5
这个节点的作用是将上一个LLM节点输出的结构化内容拼接成echarts需要的格式
接一个代码执行节点
def main(arg1, arg2):
return {
"category": ";".join(arg1),
"values": ";".join([str(x) for x in arg2])
}
设置输出变量
输出结果示例
节点6
该节点进行echarts可视化
按如下设置
测试一下能不能正常输出
节点7
直接回复节点
提示词:
查询的结果是:
(sql查询的结果)
----------------------
可视化:
(echarts输出的结果)
tips
可用外部AI辅助
将表结构查出来丢给AI,让它生成可能的6个问题进行测试