Dify — Workflow - 数据可视化 Workflow -- 一次返回结果Chatflow -- 支持多次对话多次返回结果维度ChatflowWorkflow定位对话式应用如客服、问答助手自动化批处理 / 数据处理流程交互方式用户 ↔ AI 多轮对话触发式执行API、定时、webhook是否保留上下文✅ 支持对话记忆会话级❌ 每次运行独立无会话历史输入输出用户问题 可选变量 → 自然语言回复结构化数据 → 结构化结果典型节点意图识别、回复生成、问答检索HTTP 请求、代码节点、参数提取、条件分支适用场景智能客服、Copilot、教育问答数据清洗、报表生成、内容审核、定时任务更直观的理解Chatflow用户主动发问AI 像人一样“聊回去”过程中能记住之前说了什么。Workflow更像一个数据处理管道给它输入它跑完逻辑返回结果每次请求都是“失忆”的。选择建议需要与用户多轮对话、记住上下文→ 选Chatflow需要批量处理数据、API 集成、无人值守自动化→ 选Workflow两者可以配合使用例如 Workflow 做后台数据处理再由 Chatflow 提供给用户查询入口。注意点ECharts(需要CSV)需要LLM 整理数据格式deepseek-chat 模型对 ECharts 所需的数据处理比较有好不要直接选用推理模型费token效果还不好推理在工具里面应用效果不是很好在自己开发大模型的时候推理比较准确(Langgraph、LangChain、MCP、SpringAI、Embedd创建工作流创建工作流添加变量添加文档提取器添加大模型将文件里的数据进行格式整理span stylecolor:#333333span stylebackground-color:#ffffffcode classlanguage-undefined将{{上下文}}中的数据整理成csv格式并输出只需要输出结果不需要输出额外解释内容。 /code/span/span选择 deepseek-chat 模型有助于输入图标添加代码执行span stylecolor:#333333span stylebackground-color:#ffffffcode classlanguage-pythonspan stylecolor:#0000ffimport/span csv span stylecolor:#0000ffimport/span json span stylecolor:#0000fffrom/span collections span stylecolor:#0000ffimport/span defaultdict span stylecolor:#0000ffdef/span span stylecolor:#a31515main/span(csv_string): span stylecolor:#008000# 解析 CSV 数据/span lines csv_string.strip().split(span stylecolor:#a31515\n/span) reader csv.reader(lines) headers span stylecolor:#0000ffnext/span(reader) data [row span stylecolor:#0000fffor/span row span stylecolor:#0000ffin/span reader] span stylecolor:#008000# 提取列名/span category_col, subcategory_col, value_col headers span stylecolor:#008000# 构建数据字典/span data_dict defaultdict(span stylecolor:#0000fflambda/span: defaultdict(span stylecolor:#0000fffloat/span)) span stylecolor:#0000fffor/span row span stylecolor:#0000ffin/span data: category, subcategory, value row data_dict[category][subcategory] span stylecolor:#0000fffloat/span(value) span stylecolor:#008000# 获取所有类别和子类别/span categories span stylecolor:#0000fflist/span(data_dict.keys()) subcategories span stylecolor:#0000fflist/span({subcat span stylecolor:#0000fffor/span subcats span stylecolor:#0000ffin/span data_dict.values() span stylecolor:#0000fffor/span subcat span stylecolor:#0000ffin/span subcats}) span stylecolor:#008000# 构建 ECharts 配置/span echarts_config { span stylecolor:#a31515tooltip/span: {span stylecolor:#a31515trigger/span: span stylecolor:#a31515axis/span}, span stylecolor:#a31515legend/span: {span stylecolor:#a31515data/span: subcategories}, span stylecolor:#a31515xAxis/span: {span stylecolor:#a31515type/span: span stylecolor:#a31515category/span, span stylecolor:#a31515data/span: categories}, span stylecolor:#a31515yAxis/span: {span stylecolor:#a31515type/span: span stylecolor:#a31515value/span}, span stylecolor:#a31515series/span: [ { span stylecolor:#a31515name/span: subcategory, span stylecolor:#a31515type/span: span stylecolor:#a31515bar/span, span stylecolor:#a31515data/span: [data_dict[category].get(subcategory, span stylecolor:#8800000/span) span stylecolor:#0000fffor/span category span stylecolor:#0000ffin/span categories] } span stylecolor:#0000fffor/span subcategory span stylecolor:#0000ffin/span subcategories ] } output span stylecolor:#a31515\necharts\n/span json.dumps(echarts_config, indentspan stylecolor:#8800002/span, ensure_asciispan stylecolor:#a31515False/span) span stylecolor:#a31515\n/span span stylecolor:#0000ffreturn/span {span stylecolor:#a31515output/span: output} /code/span/span添加结束节点测试运行