惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

V
V2EX
Y
Y Combinator Blog
博客园_首页
V
Visual Studio Blog
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
阮一峰的网络日志
阮一峰的网络日志
Hugging Face - Blog
Hugging Face - Blog
宝玉的分享
宝玉的分享
B
Blog
博客园 - 三生石上(FineUI控件)
小众软件
小众软件
WordPress大学
WordPress大学
L
LangChain Blog
爱范儿
爱范儿
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
P
Proofpoint News Feed
Blog — PlanetScale
Blog — PlanetScale
C
Check Point Blog
博客园 - 聂微东
云风的 BLOG
云风的 BLOG
Microsoft Security Blog
Microsoft Security Blog
博客园 - 叶小钗
酷 壳 – CoolShell
酷 壳 – CoolShell
H
Help Net Security

博客园_首页

Linux实操--组管理、权限管理和定时任务 Java + EasyExcel 实现单个接口导出多个Excel Mem0 源码解析系列(二):提示词工程的深度剖析 Openclaw TaskFlow究竟是什么?和普通Skill技能有什么区别 博文阅读密码验证 - 博客园 嘉立创开源:应该是全网MicroPython教程最多的开发板 Hermes Agent 集成实践:从协议到生产 2026年AI编程工具横评:Cursor、Codex、Claude Code、Zed、Windsurf Java程序员必看的RAG入门教程 2026 AI效率神器:Superpowers + Claude Code 保姆级教程 本地大模型部署全攻略:从 0 到 1 玩转 Ollama 【从0到1构建一个ClaudeAgent】内存管理-上下文压缩 .NET 高级开发 | 设计、实现一个事件总线框架 电子小白入门之NE555 3. WorkBuddy:隐藏玩法,一键召唤专家,让 AI 以"专家身份"给你干活 和AI一起搞事情#3:Claude Teammate 游戏开发翻车实录 【OpenClaw】通过 Nanobot 源码学习架构---(7)Memory C# .NET 周刊|2026年3月3期 我在 Debian 11 上把 K8s 单机搭起来了,过程没你想的那么顺(/opt 目录版) 深度学习进阶(七)Data-efficient Image Transformer CLI+Skill搭建浏览器AI自动化框架,告别一切重复枯燥任务 告别Token账单无底洞:OpenClaw本地部署,重塑企业数据主权的唯一解 FastAPI+Vue:文件分片上传+秒传+断点续传,这坑我帮你踩平了! SBTI 爆火后,我做了个程序员版的 CBTI。。已开源 + 附开发过程 多模态检索开始进入工程期:用 Sentence Transformers 搭建可落地的 Multimodal RAG 100多行代码实现一个最简单的Agent(用ReAct) Claude Code 通关手册(八):推荐 5 个 Hooks,代码质量提升 3 倍 老板:“有人截图了!”。安全部门:“收到,马上查暗水印!” - why技术 技术之外,皆是人间 C#/.NET/.NET Core技术前沿周刊 | 第 69 期(2026年4.01-4.12)
Dify — Workflow - 数据可视化
VipSoft · 2026-05-29 · via 博客园_首页

Dify — Windows 下 Docker 安装 Dify
Dify — 聊天助手 -- 知识库
Dify — 文本生成应用
Dify — Agent 智能体
Dify — Chatflow - 文档知识库
Dify — 连接MySQL配置
Dify — Chatflow - 数据库智能查询
Dify — Workflow - 数据可视化

Dify Workflow 与 Chatflow 的核心区别

Workflow -- 一次返回结果
Chatflow -- 支持多次对话,多次返回结果

维度 Chatflow Workflow
定位 对话式应用(如客服、问答助手) 自动化批处理 / 数据处理流程
交互方式 用户 ↔ AI 多轮对话 触发式执行(API、定时、webhook)
是否保留上下文 ✅ 支持对话记忆(会话级) ❌ 每次运行独立,无会话历史
输入输出 用户问题 + 可选变量 → 自然语言回复 结构化数据 → 结构化结果
典型节点 意图识别、回复生成、问答检索 HTTP 请求、代码节点、参数提取、条件分支
适用场景 智能客服、Copilot、教育问答 数据清洗、报表生成、内容审核、定时任务

更直观的理解

  • Chatflow:用户主动发问,AI 像人一样“聊回去”,过程中能记住之前说了什么。
  • Workflow:更像一个数据处理管道,给它输入,它跑完逻辑返回结果,每次请求都是“失忆”的。

选择建议

  • 需要与用户多轮对话记住上下文 → 选 Chatflow
  • 需要批量处理数据API 集成无人值守自动化 → 选 Workflow

两者可以配合使用,例如 Workflow 做后台数据处理,再由 Chatflow 提供给用户查询入口。

注意点:ECharts(需要CSV),需要LLM 整理数据格式,deepseek-chat 模型对 ECharts 所需的数据处理比较有好,不要直接选用推理模型,费token效果还不好

推理在工具里面应用效果不是很好, 在自己开发大模型的时候,推理比较准确(Langgraph、LangChain、MCP、SpringAI、Embedding...) AI大模型知识体系
比如:我只让大模型给我回复什么内容,赋值到什么样的变量里,自己控制节点A->B->C,A输出的内容,要在B节点用变量来接受,比如 Dify — Chatflow - 数据库智能查询

创建工作流

创建工作流
image

添加变量
image

添加文档提取器
image
image
添加大模型

将文件里的数据进行格式整理

将{{上下文}}中的数据整理成csv格式并输出,只需要输出结果,不需要输出额外解释内容。

image
image
选择 deepseek-chat 模型,有助于输入图标
image

添加代码执行
image
image

import csv
import json
from collections import defaultdict

def main(csv_string):
    # 解析 CSV 数据
    lines = csv_string.strip().split('\n')
    reader = csv.reader(lines)
    headers = next(reader)
    data = [row for row in reader]

    # 提取列名
    category_col, subcategory_col, value_col = headers

    # 构建数据字典
    data_dict = defaultdict(lambda: defaultdict(float))
    for row in data:
        category, subcategory, value = row
        data_dict[category][subcategory] += float(value)

    # 获取所有类别和子类别
    categories = list(data_dict.keys())
    subcategories = list({subcat for subcats in data_dict.values() for subcat in subcats})

    # 构建 ECharts 配置
    echarts_config = {
        "tooltip": {"trigger": "axis"},
        "legend": {"data": subcategories},
        "xAxis": {"type": "category", "data": categories},
        "yAxis": {"type": "value"},
        "series": [
            {
                "name": subcategory,
                "type": "bar",
                "data": [data_dict[category].get(subcategory, 0) for category in categories]
            }
            for subcategory in subcategories
        ]
    }

    output = "\n```echarts\n" + json.dumps(echarts_config, indent=2, ensure_ascii=False) + "\n```"
    return {"output": output}

添加结束节点

image
image
image

测试运行
image

上传文件
image