成都地区的中考内卷程度是全国出了名的。孩子升上初中后,周考和月考增加,很多家长每次考完试后,都关注自己孩子在班上优生中的成绩排名。
老师把成绩单发布到群之后,假设家长拿到的是这样的文本数据:
title:英语单元过关单 郝宇:80 汪子熙:90 赵轩:80 王程:90 余星:93 张宇:89家长希望根据上面的数据自动生成一张柱状图,X 轴是学生姓名,Y 轴是学生成绩。
在过去这个需求可以轻易在 Excel 里实现,不过需要若干次鼠标的点击。
AI 工具普及之后,我们当然也可以把上面的数据,发给大模型,然后编写一些提示词,让大模型生成柱状图。
这种方式理论上可行,但是存在两个弊端:
- 每次使用都需要编写提示词,浪费时间
- 更大的问题是,大语言模型完成这种柱状图生成任务时仍然存在幻觉,会出现生成的图表数据紊乱的情况
更高效准确的做法当然是使用扣子工作流。
笔者已经开发了一个这样的工作流,源代码下载链接:
使用方法也很简单,输入数据:
title:英语单元过关单 郝宇:80 汪子熙:90 赵轩:80 王程:90 余星:93 张宇:89点击试运行按钮:
最后生成的柱状图图片链接如下:
下面是这个工作流详细的拆解。
首先是信息提取节点,这个节点的职责,是将用户输入的以换行符号分隔的每个学生的姓名和成绩做处理,让它们成为柱状图生成节点所能接收的数据输入格式。
这个节点不需要写代码实现这些格式处理,用大模型来处理就足够了。大模型类型还是选择豆包·1.5:
系统提示词:
用户输入的内容为字符串,每一行都是形如A:B的字符串,通过换行符号区分行与行。 第一行的A固定为 title,B为 title 的值。 从第二行开始,每一行的A代表学生姓名,B代表学生成绩。 请你将第一行的 title 值提取出来,存储到输出变量 title 中。 从第二行开始的学生姓名,按照顺序插入到输出变量 names 中。 输出变量 names 的初始值是 "[]". 假设第一个插入的学生姓名是 A,插入之后,names 的值变成了 "["A"]", 再插入第二个值 B,names 的值就是 "["A", "B"]", 以此类推。 从第二行开始的学生成绩,按照顺序插入到输出变量 scores 中。 输出变量 scores 的初始值是 "[]". 假设第一个插入的学生成绩是 89,插入之后,scores 的值变成了 "[89]", 再插入第二个值 100,scores 的值就是 "[89, 100]", 以此类推。用户提示词:
定义三个输出变量:
- title:存放柱状图图片
- names:字符串,存放所有的学生姓名,像这种格式:[“张三”,“李三”,“王二”]。为什么要这种格式?因为后面的柱状图生成节点需要这种格式。
- scores:字符串,存放所有的学生成绩,像这种格式:[98,100,99]。
看一个输出的例子:
接下来我们选择添加节点->插件:
搜索栏里输入关键字图表,然后搜索结果里看到图表大师这个插件:
单击,选择下面的子类bar_charts,再点击添加即可。
点击查看示例,可以看到这个插件接收的输入参数的格式:
因为我们第一个信息提取的节点,只提取了全部的学生姓名和成绩,格式和这个柱状图生成节点需要的输入格式有差异,因此我们再使用一个代码节点,进行格式转换操作。
新建一个代码节点,定义names和scores两个输入参数,绑定到前一个名叫信息提取的大模型节点的同名输出参数上。
这个代码节点的输出参数定义,其实就是比照着柱状图生成节点需要的输入参数的格式来定的:
代码:
// 在这里,您可以通过 'params' 获取节点中的输入变量,并通过 'ret' 输出结果// 'params' 已经被正确地注入到环境中// 下面是一个示例,获取节点输入中参数名为'input'的值:// const input = params.input;// 下面是一个示例,输出一个包含多种数据类型的 'ret' 对象:// const ret = { "name": '小明', "hobbies": ["看书", "旅游"] };asyncfunctionmain({params}:Args):Promise<Output>{// 构建输出对象constret={"data":params.scores,"legend":1,"xAxis":{"data":params.names,"name":"姓名","type":"category"},"yAxis":{// 输出一个Object"name":"分数","type":"value"},};returnret;}下面是这个代码节点的一个输出例子:
图表生成
最后使用刚刚添加的图表生成的节点,完成柱状图的生成。这个节点的输入参数我们不用手动定义,直接将它们逐一绑定到前一个代码节点的同名输出参数即可。
该节点的输出参数是生成柱状图的 url.
至此这个工作流就拆解完毕了,希望对大家有用。