Dify实战:用工作流搭建ECharts数据可视化助手

用Dify工作流串联文档提取、大模型转换与代码执行,自动将上传数据渲染为ECharts图表。
本文拆解了一个基于Dify工作流的ECharts可视化助手搭建方案。核心思路是将数据处理链路拆分为职责单一的节点:开始节点接收文件上传(建议用Markdown/PDF规避Dify读取Excel为空的bug),文档提取器无模型地读取文件内容,大模型驱动的格式转换节点将原始数据统一转为CSV,参数提取器将CSV存入变量,代码执行节点再将其拼接为符合ECharts规范的代码块(`echarts` 关键字加三个反引号包裹),最终由Dify前端自动渲染为可视化图表。整个案例的价值不在于单一节点的复杂性,而在于展示了"拆解基础功能逐个实现再组合"的工作流方法论,为开发者提供可复用的企业级AI应用搭建思路。
在使用大模型处理业务数据时,纯文本或表格的呈现方式往往难以让统计信息一目了然。对于票房、销量这类带有时间和排名维度的数据,图表才是更直观的选择。本文基于B站一则Dify实战教程,拆解如何用Dify工作流搭建一个ECharts可视化助手——上传数据文件后,自动生成柱状图、折线图等可视化图表。
为什么需要ECharts可视化助手
实际业务场景中,我们经常会拿到一批统计数据。以视频中的案例为例,作者整理了过去几年春节档的票房冠军数据,如果只用表格罗列,读者需要逐行阅读才能理解趋势;而借助ECharts的柱状图或折线图,票房走势和排名对比会瞬间清晰起来。
对程序员而言,ECharts是数据可视化的常见选择。这个案例的核心目标,就是把Dify作为编排层,让用户上传原始数据,系统自动完成解析、格式转换,最终输出符合ECharts规范的图表代码并渲染呈现。
ECharts(Enterprise Charts)是百度开源的 JavaScript 数据可视化库,基于 Canvas 和 SVG 渲染,支持折线图、柱状图、散点图、饼图、地图等数十种图表类型。它通过一个 JSON 格式的配置项(option)描述图表的数据与样式,开发者只需传入符合规范的配置对象,ECharts 便能自动完成渲染。这套"配置驱动渲染"的机制,使它成为前端数据可视化的主流选择之一,也是本工作流最终要输出的目标格式。在 Dify 的渲染层,只要代码块以指定关键字(echarts)开头并以三个反引号包裹,前端即可识别并调用 ECharts 引擎完成图表渲染,无需用户自行编写任何前端代码。
工作流的整体设计
整个应用建立在Dify的工作流之上,节点串联的逻辑清晰。从开始节点上传文件,到文档提取、格式转换、参数提取、代码执行,最后直接回复输出,每一步各司其职。

作者强调了一个思路:把复杂业务拆解成基础功能逐个实现。教程中的很多案例都是先讲透单个基础节点,再将它们组合起来。掌握这些基础模块后,就能在企业环境里落地相对复杂的业务流程。
Dify 工作流(Workflow)是 Dify 平台提供的一种可视化编排能力,允许开发者将 LLM 调用、代码执行、文档处理、HTTP 请求等能力以节点(Node)的形式拖拽连接,形成有向无环图(DAG)结构的执行链路。与直接调用单个大模型相比,工作流的优势在于可以把复杂任务拆分为职责单一的步骤,每一步的输入输出都可以被检查和调试,降低了整体的不确定性。每个节点只处理自己负责的转换逻辑,上下游通过变量引用传递数据,整条链路无需手写任何编排代码,非常适合将数据清洗、模型推理、格式输出等异构操作整合为一个可重复运行的自动化流程。
关键节点逐个拆解
开始节点与文件上传
开始节点接收一个文件类型的输入,支持Excel、Markdown、PDF、HTML等多种格式。这里有一个必须注意的坑:Dify在读取Excel文件时存在bug,读出来会是空内容。因此作者建议把数据放在Markdown或PDF文件里,绕开这个问题。

文档提取器与格式转换
文档提取器负责把上传文件中的信息读取出来,这一步不涉及大模型。提取出的原始数据接着进入格式转换节点,这个节点由大模型驱动。它的提示词描述比较简洁:设定角色为「数据整理专家,擅长数据格式的整理与转换」,任务是把数据转换成CSV格式。

参数提取与代码执行
格式转换后的数据通过参数提取器,被抽取到一个自定义变量(如CSV data)中。随后代码执行节点接手,把这些数据转换成ECharts能接受的格式。
代码的处理逻辑是:先把CSV数据按行切割,读取每行信息,将行数据转为列结构后循环处理,再拼接组装成ECharts所需的图表配置格式。
Dify 的参数提取器(Parameter Extractor)节点本质上是一个结构化输出工具:它接收非结构化或半结构化文本,由大模型按照开发者预先定义的字段名和类型将目标信息抽取出来,存入可被后续节点引用的变量。在本流程中,经大模型转换后的 CSV 文本被抽取进 csv_data 变量,后续代码执行节点可以直接以变量名调用,而无需再做字符串解析。代码执行节点则支持 Python 或 JavaScript,运行于沙箱环境,用于完成纯逻辑性的数据处理任务——这类任务交给确定性代码比交给大模型更可靠、更快速,也更容易验证正确性。两者的配合体现了"大模型负责语义理解,代码负责精确变换"的分工原则。
输出为符合规范的ECharts格式
拼接完成的数据最终要包裹成符合ECharts渲染规范的形式——以特定关键字加三个反引号的代码块包裹。只有满足这个规范,Dify在展示时才能把它渲染成对应的可视化图表。

直接回复节点会输出两部分内容:一是参数提取器读取到的CSV数据,二是代码执行器返回的ECharts图表。
实际运行效果
配置完成后即可测试。新建对话,从本地上传准备好的票房数据MD文件,输入任意信息后点击开始。工作流会依次执行:文档提取、格式转换(这一步交给大模型,需要稍作等待)、参数提取、代码执行。
运行结束后,页面上半部分显示转换成CSV后的数据,下半部分则是根据数据生成的ECharts图表,展示片名、票房均价以及按年份对应的排名。相比纯文本或普通表格,这种可视化呈现方式显然更能让客户满意。
小结
这个ECharts可视化助手案例的价值,不在于某个单一节点有多复杂,而在于展示了Dify工作流「拆解-实现-组合」的方法论。文档提取、大模型格式转换、参数提取、代码执行这些基础能力组合起来,就能解决数据可视化这类实际需求。对于希望用Dify落地企业级AI应用的开发者,这类案例提供了可复用的搭建思路。需要注意的两个实操要点是:避开Excel读取为空的bug,以及严格遵守ECharts输出的代码块规范。
相关推荐

Anthropic Fable 5.2实测:一句话生成3A游戏与Excel克隆
Anthropic Fable 5.2实测:三行提示词生成可玩《战争机器》克隆、完整Excel和DaVinci Resolve克隆,解析基准测试、Ultra Code模式、token成本与定价策略,评估它是否值得替代Opus 5.5。

赛博寻书:BT社区如何「劫走」塞林格遗作
塞林格未发表的《The Ocean Full of Bowling Balls》仅存于大学图书馆且禁止复制。一个私密BT tracker悬赏六TB上传积分,社区从背诵接力到eBay买书扫描,最终成功让文本流出,却因传播过快被管理员删种。本文复盘这场赛博寻书行动及其讽刺结局。

弹劾防长赫格塞斯?五角大楼战争与中期选举风暴
五角大楼气氛紧张,伊朗战事持续八个月仍无退出方案。评论分析赫格塞斯弹劾动议的真实动机:不是罢免,而是留下政治记录,并剖析战争如何通过油价与生活成本影响中期选举选情。