DEV Community

addtoken
addtoken

Posted on

为什么 AI Agent 都离不开 Workflow?看懂现代 AI 应用的底层设计

博客 / 为什么 AI Agent 都离不开 Workflow?看懂现代 AI 应用的底层设计

为什么 AI Agent 都离不开 Workflow?本文从 Prompt、Workflow 到 Agent 的演进过程,结合 LangGraph、n8n 等主流方案,讲清现代 AI 工作流设计思路,并通过代码示例理解 Agent 的运行机制。

阅读约 12 分钟|适合希望系统理解 AI Agent、Workflow 与 LangGraph 的开发者。

一、Prompt 和 Workflow 的根本区别

让 AI 总结一篇文章,效果不错,然后想能不能先抓网页、再总结、再翻译、再发邮件? 你把所有要求塞进一个 prompt 里,让它一次干完。结果它忘了翻译,邮件格式也错了。 你以为这是 prompt 没写好,其实是结构性问题。你需要的不是 prompt,而是一个 workflow。 这篇讲清楚 prompt 和 workflow 的区别,以及怎么设计一个真正能跑起来的 AI Agent 工作流。

Prompt 是一次对话。 你说一句,AI 回一句。

Workflow 是多次对话的组合。 把一个复杂任务拆成几个步骤,每步用一个 prompt,前一步的输出当后一步的输入,串成一条流水线。

举个最简单的例子: 如果把一篇英文文章翻译成中文,利用prompt一次性能搞定。 如果每天抓 10 个英文科技博客的新文章,翻译成中文,提取关键词,按主题分类,生成摘要,发到飞书群。 这就不是一句 prompt 能解决的了。你需要:

1. 抓文章(脚本) 2. 翻译(AI) 3. 提关键词(AI) 4. 分类(AI) 5. 生成摘要(AI) 6. 发飞书(脚本)

每一步都是一个独立任务,有自己的输入输出。这就是 workflow。

判断标准很简单

- 任务一步就能完成 → Prompt - 任务需要多步,每步有明确的输入输出 → Workflow - 任务需要根据上一步结果决定下一步做什么 → Workflow(带条件分支)

二、Workflow 的四个核心组件

不管用什么工具(LangChain、Dify、n8n、Coze、自写代码),workflow 都由这四个组件构成:

1. 节点(Node)

一个节点干一件事。可以是调 AI,也可以是调脚本、查数据库、发请求。

每个节点有三个要素: - 输入:从哪拿数据 - 处理:干什么活 - 输出:给下一节点什么

2. 连接(Edge)

节点之间的数据流。A 的输出接到 B 的输入。

3. 条件(Condition)

根据上一步结果决定走哪条路。比如"如果摘要长度 > 200 字,走精简分支;否则走原文分支"。

4. 循环(Loop)

对一批数据重复执行同一段流程。比如"对 10 篇文章逐篇执行翻译+摘要"。

记住这四个,所有 workflow 工具都是它们的变体。

三、一个完整的 Workflow 示例

需求:每天早上 8 点,抓 3 个科技博客的最新文章,翻译成中文,生成摘要,按质量打分(1-5),高于 3 分的发飞书,低于的存档。

用文字画出来:

[定时触发] 
    ↓
[抓取文章] ← 脚本节点,不是 AI
    ↓
[循环: 对每篇文章执行 ↓]
    ├── [翻译] ← AI 节点
    ├── [生成摘要] ← AI 节点
    ├── [质量打分] ← AI 节点
    └── [条件判断]
         ├── 分数 > 3 → [发飞书]
         └── 分数 ≤ 3 → [存档]
Enter fullscreen mode Exit fullscreen mode

如果用一个 prompt 做,会有什么问题?

- 不可靠。让 AI 一次干 5 件事,它经常漏掉一两件。 - 没法复用。改"打分标准"要重写整个 prompt;拆开的话只改打分节点就行。 - 没法调试。出错时不知道是翻译错了还是打分错了;拆开后每步都能单独测。 - 没法并行。3 篇文章拆成 3 条并行流水线,速度 3 倍;塞一个 prompt 里只能串行。

这是 workflow 最核心的价值:把不可靠的"全能 prompt",拆成可靠的"专项节点"。

四、设计 Workflow 的 5 条原则

原则 1:能不用 AI 就不用 AI

不是所有节点都要调 AI。抓网页、发消息、查数据库、算数学——这些用脚本更快更准更便宜。

新手最常犯的错:什么都让 AI 干。让 AI 算订单总价、让 AI 拼 SQL、让 AI 格式化日期。这些确定性任务,脚本一行搞定,AI 反而容易出错。

判断标准:如果这个任务的输出有唯一正确答案,别用 AI。AI 适合"模糊的、需要理解的、有创造性的"任务。

原则 2:每个 AI 节点只干一件事

一个节点 = 一个职责。

差的设计:

[AI 节点: 翻译 + 摘要 + 打分 + 分类]
Enter fullscreen mode Exit fullscreen mode

好的设计:

[AI 节点: 翻译] → [AI 节点: 摘要] → [AI 节点: 打分] → [AI 节点: 分类]
Enter fullscreen mode Exit fullscreen mode

拆开后: - 每个节点的 prompt 更短更准 - 单独测试更容易 - 出错时能定位到具体节点 - 可以并行执行(翻译和打分可以同时跑)

原则 3:节点之间用结构化数据传递

节点之间的数据格式要明确。推荐用 JSON。

差的设计:让 AI 输出一段自然语言,下一个 AI 节点再去"理解"这段话。

好的设计:

// 翻译节点的输出
{
  "original_title": "GPT-5 Released",
  "translated_title": "GPT-5 发布",
  "content": "..."
}
Enter fullscreen mode Exit fullscreen mode

下一个节点直接读 JSON 字段,不用"理解"。

配合 Function Calling 或 JSON Mode 使用效果最好。让 AI 强制输出 JSON,而不是自然语言里夹带 JSON。

原则 4:每个节点都要有"失败处理"

AI 会失败。超时、限流、输出格式错、内容被拦截。你的 workflow 必须能处理这些情况。

最简单的做法:每个 AI 节点配一个重试 + 兜底。

[AI 节点] 
  ├── 成功 → 继续
  ├── 失败 → 重试 3 次
  └── 3 次都失败 → 兜底(用默认值 / 跳过 / 报警)
Enter fullscreen mode Exit fullscreen mode

不设计失败处理的 workflow,跑两次就崩。

原则 5:能并行就并行

串行慢,并行快。能同时跑的节点就别排队。

# 串行(慢)
[翻译] → [摘要] → [打分] → [分类]   总耗时 12 秒

# 并行(快)
[翻译] ──┬── [摘要] ──┐
         ├── [打分]  ──┼── [汇总]
         └── [分类]  ──┘            总耗时 5 秒
Enter fullscreen mode Exit fullscreen mode

翻译完后,摘要、打分、分类三个节点互不依赖,可以同时跑。

不是所有节点都能并行——有依赖关系的必须串行。但只要没有依赖,就并行。

五、Workflow 工具怎么选

按使用门槛从低到高:

1. 可视化工具(Dify、Coze、FastGPT)

拖拽节点连线,不用写代码。适合非技术人员、快速验证想法。缺点是复杂逻辑难表达,被工具能力限制。

2. 自动化工具(n8n、Make、Zapier)

更偏"连接各种服务"。AI 只是其中一个节点类型。适合"AI + 现有系统"的集成场景。

3. 代码框架(LangChain、LangGraph、LlamaIndex)

写代码控制每一步。最灵活,但门槛最高。适合需要精细控制和长期维护的项目。

4. 自写代码

直接调 API,自己写流程控制。最简单直接,适合简单 workflow。不依赖框架,没有学习成本。

我的建议:从自写代码开始。想清楚后再上框架,别让框架替你想。

六、一个最小可跑的代码示例

用 Python + OpenAI SDK 写前面那个"翻译 + 摘要 + 打分"的 workflow,不到 50 行:

from openai import OpenAI
import json

client = OpenAI(
    base_url="https://api.example.com/v1",
    api_key="sk-xxx",
)

def call_llm(system, user, model="gpt-4o-mini"):
    resp = client.chat.completions.create(
        model=model,
        messages=[
            {"role": "system", "content": system},
            {"role": "user", "content": user},
        ],
        response_format={"type": "json_object"},
    )
    return json.loads(resp.choices[0].message.content)

def translate(text):
    return call_llm(
        "你是翻译。把英文翻译成中文。返回 JSON:{translated: string}",
        text,
    )["translated"]

def summarize(text):
    return call_llm(
        "你是摘要生成器。生成 100 字以内的摘要。返回 JSON:{summary: string}",
        text,
    )["summary"]

def score(text):
    return call_llm(
        "你是内容评审。给文章打 1-5 分。返回 JSON:{score: int}",
        text,
    )["score"]

def workflow(article):
    translated = translate(article)        # 翻译
    summary = summarize(translated)        # 摘要
    score_val = score(translated)          # 打分

    if score_val > 3:
        send_to_feishu(summary)            # 发飞书
    else:
        archive(summary)                   # 存档

workflow("OpenAI just released GPT-5...")
Enter fullscreen mode Exit fullscreen mode

每一步是独立函数,输入输出清晰,单独可测。改"打分标准"只动 score 函数,其他不受影响。

这就是 workflow 的本质:把大任务拆成小函数,每个函数干一件事,串起来。

本文示例使用 Token 补给站(https://addtoken.top)进行测试。平台提供 OpenAI 与 Anthropic 兼容 API,保持与官方协议一致,跑这个 workflow 时可以随时切换底层模型,方便对比 GPT、Claude、DeepSeek 在每个节点上的表现差异。

七、Workflow 的常见坑

坑 1:把 workflow 当 prompt 写

把所有逻辑塞进一个超长 prompt,让 AI 自己"决定"走哪步。结果不可预测,不可调试。记住:workflow 的核心是"你来控制流程",不是"让 AI 控制"。

坑 2:节点之间传结构化数据

A 节点输出一段话,B 节点再去理解这段话。每一步都有信息损失。用 JSON 传结构化数据。

坑 3:没有失败处理

AI 调用多次时肯定会有失败的情况。不加重试和兜底,workflow 上线很快就会崩。

坑 4:节点太碎

拆得太细也不行。一个 workflow 30 个节点,调试比写还难。原则:一个节点对应一个你能用一句话描述的职责。

坑 5:不记录中间结果

workflow 跑完后只看最终输出,中间节点的结果丢掉。出问题时没法回溯。建议把每个节点的输入输出都落日志。

八、Workflow vs Agent:再厘清一个概念

很多人把这两个词混着用,其实有区别:

Workflow:流程是你预先设计好的,节点和连接都是固定的。AI 只在每个节点里干活,不决定走哪条路。

Agent:流程是 AI 自己决定的。你给一个目标,AI 自己拆任务、调用工具、决定下一步干什么。

举例:

- Workflow:你设计了"翻译→摘要→打分→分发"这条线,AI 只负责每步的内容生成。 - Agent:你说"帮我把这篇文章处理一下发出去",AI 自己决定要先翻译、再摘要、再打分、再发,整个过程可能跟你想的不一样。

实际项目中,两者经常混用。主干用 workflow 保证可控,局部用 agent 处理不确定的子任务。

新手建议从 workflow 开始。Agent 看起来酷,但不可控、不可调试、不可复现。等 workflow 玩熟了,再在某些节点上引入 agent 能力。

结语

Prompt 是"一句话让 AI 干活",适合简单任务。 Workflow 是"设计一条流水线让 AI 在每个工位干活",适合复杂任务。

当你发现一个 prompt 怎么调都不稳定时,停下来问自己:这个任务是不是该拆成 workflow?

把任务拆开,每步简单可靠,串起来稳定可控——这就是 workflow 设计的精髓。

Top comments (1)

Collapse
 
addtoken521 profile image
addtoken

very good