Dify全自动数据分析与图表生成应用构建指南
Dify通过集成文档解析插件与ECharts可视化组件,即可构建一条全自动化的Excel数据分析流水线。核心链路是:上传文件→表格结构提取→LLM意图识别→图表参数结构化抽取→条件验证→动态图表渲染与自然语言解读,全程无需人工介入。
这套方案的本质在于:由Dify自主完成从原始表格解析到智能图表生成的全部环节,过程中既不需要编写代码,也无需手动调整配置参数。你只需上传Excel文件并描述分析需求,后续所有操作由系统接管。
环境搭建与插件部署
登录Dify工作台,进入应用项目编辑界面。在左侧菜单栏找到「插件市场」,检索并安装官方认证的“ECharts图表生成工具”插件。同步安装“文档解析器”插件——该组件专门负责解析Excel、CSV等结构化表格文件。该插件属于必装项,否则LLM无法有效读取表格数据。
安装完成后,返回项目画布,确认左侧组件面板中已出现“ECharts图表”和“文档解析器”两个分类节点。若未显示,请刷新页面或重新检查插件安装状态。
Chatflow主干链路搭建
点击「新建应用」,选择「Chatflow」模板,设定应用名称为“Excel智能图表助手”。
在画布上依次添加以下节点:开始节点 → 文档解析器 → LLM节点 → 参数提取器 → 条件分支节点 → ECharts图表节点 → 回复节点。
关键注意事项:文档解析器节点必须紧跟在开始节点之后。因为Dify的文件上传功能默认挂载在开始节点上,跳过此顺序会导致后续分析基于空数据运行,整个流程将失效。
文档解析器与数据理解配置
选中“文档解析器”节点,在其右侧配置面板中勾选「启用表格结构识别」和「保留原始行列信息」。
这一设置决定了LLM能否准确理解诸如“第3列对应销售额”“A1:E100是销售明细表”这类空间语义。若未开启结构识别,模型将面对混乱的纯文本拼接,分析结果将严重失真。
随后,将文档解析器的输出字段「content」连接至下一个LLM节点的输入变量。
LLM节点智能分析配置
在LLM节点中,通过系统提示词(System Prompt)明确定义模型角色:
“你是一位资深数据分析师。仅根据用户上传的表格内容及其自然语言请求进行分析。禁止编造数据、禁止猜测缺失字段含义、禁止输出代码或SQL。所有结论必须基于解析器提供的真实字段名称与样例值。”
用户提示词(User Prompt)设置为:“请分析以下数据:{{content}}。用户需求为:{{query}}。请使用中文分点说明关键发现,并以JSON格式输出图表所需参数,字段包含chart_type、title、xaxis、series四个必填项。”
chart_type必须限定为'line'、'bar'或'pie'三者之一,否则ECharts插件将无法正常渲染。
参数提取器精确捕获图表结构
添加「参数提取器」节点,接收LLM节点的输出文本。
在提取规则中填写正则表达式:{(?:[^{}]|(?R))*}(支持嵌套JSON),并勾选「只提取首个匹配块」。
此步骤是整条链路成败的临界点。LLM经常在JSON前后附加解释性文本,例如“以下是您需要的图表参数:{...}。如有其他需求可继续提问。”若不使用正则过滤,ECharts插件会因接收到非法JSON而报错中断。
将提取结果映射为新的变量「chart_config」,供后续节点调用。
条件分支机制保障流程稳健性
在参数提取器后添加「条件分支」节点,设置判断逻辑为:{{chart_config}} != null && Object.keys({{chart_config}}).length > 0。
分支一(真条件):连接ECharts图表节点 → 回复节点;
分支二(假条件):连接一个备用LLM节点,提示词为:“图表参数提取失败,请用更明确的语言重述您的可视化需求,例如‘用柱状图展示各地区销售额对比’。” → 回复节点。
此分支绝非装饰性的兜底策略,而是在实际运行中会被高频触发的容错机制。例如用户输入“查看数据趋势”,模型可能默认输出折线图;但如果数据字段全为文本类别,ECharts会静默失败。借助该分支,用户能即时获得可操作的反馈指令,避免面对空白页面的无效等待。
ECharts图表节点可视化输出配置
选中ECharts图表节点,在右侧配置面板中将「图表类型」设为动态字段:{{chart_config.chart_type}};
「标题」设为:{{chart_config.title}};
「X轴数据」设为:{{chart_config.xaxis}};
「系列数据」设为:{{chart_config.series}}。
保存配置后,点击右上角的「调试」按钮,上传一份包含“月份”和“销售额”两列的Excel文件,输入“用柱状图展示每月销售额”,即可实时看到渲染完毕的图表与分析文本一同返回。整条流程验证通过后,后续工作仅需根据实际业务需求微调提示词与图表参数。
