dify可通过安装文档提取器和echarts图表插件,构建全自动excel分析工作流:上传文件→结构化解析→llm理解意图→json参数提取→条件校验→图表渲染与文字解读。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

你需要让Dify自动读取用户上传的Excel文件,理解自然语言查询意图,清洗数据、执行分析,并生成带文字解读的ECharts图表——整个流程不需人工干预,也不依赖外部代码或手动配置。
准备基础环境与插件
登录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,输入“用柱状图展示每月销售额”,即可实时看到渲染图表与分析文字一同返回。










