LLM和Agent——专题3: Agentic Workflow 入门(1)

从传统自动化到智能体协作------Agentic Workflow 核心概念解析

传统自动化像一条流水线,每一步都写死在代码里;Agentic Workflow 则像一个会思考、会使用工具、会自我纠错的团队。本文带你建立对 Agentic Workflow 的完整认知框架。

一、引言

2024 年下半年,Andrew Ng 在多个场合反复提到一个词------"Agentic Workflow"。他在演讲中展示了一组数据:在 HumanEval 基准测试中,GPT-3.5 使用 Agentic Workflow 后的表现,甚至可以超越 GPT-4 的零样本结果。这让整个行业开始重新审视一个根本性问题:我们是不是用错了大模型?

过去两年,大多数开发者使用 LLM 的方式是"输入 prompt → 等待输出"的零样本模式。这种方式下,模型就像一个被问完问题就必须立刻给出最终答案的考生------没有草稿纸、不能查资料、不许改答案。

而 Agentic Workflow 的核心思想完全不同:让模型像人类专家一样工作------先规划、再执行、边做边反思、必要时调用工具、甚至可以多个模型协作。
Agentic Workflow
不满意
满意
用户输入
规划
执行/工具调用
反思
输出结果
零样本模式
用户输入
LLM 单次推理
输出结果

图:零样本模式(一步到位)vs Agentic Workflow(迭代优化)

本文将带你从零理解 Agentic Workflow 的来龙去脉、核心组件和设计哲学,为后续深入实践打下基础。

二、什么是 Agentic Workflow

2.1 一个直观的类比

想象你要写一篇技术博客。

传统方式(零样本):你坐在桌前,一口气从头写到尾,中间不能查资料,不能修改,写完就交。结果可想而知------文章结构可能松散,细节可能不准确,甚至可能跑题。

Agentic Workflow 方式:你先花 5 分钟列出大纲(Planning),然后开始写初稿,写到某个技术细节时你 Google 了一下最新文档(Tool Use),写完一段回头读发现逻辑不顺,于是调整了段落顺序(Reflection),最后你让两个同事分别审校技术准确性和可读性(Multi-Agent)。最终交付的文章质量自然高出很多。
Agentic Workflow 方式(像专业写作)
不满意
满意
规划大纲
分段撰写
查阅资料

Tool Use
自我审校

Reflection
同事审阅

Multi-Agent
定稿发布
传统零样本方式(像即兴演讲)
接到任务
一气呵成
不能修改

不能查资料
质量不稳定

图:写作类比------Agentic Workflow 让你像专业作者一样迭代产出高质量内容

2.2 正式定义

Agentic Workflow 是指将大语言模型(LLM)置于一个具有自主决策能力的智能体(Agent)角色中,通过组合规划、工具调用、自我反思和多智能体协作等机制,让模型在多次迭代中逐步完成复杂任务的工作流模式。

核心关键词是三个:

  1. 迭代(Iterative):不是一次生成,而是多轮交互、逐步逼近
  2. 自主(Autonomous):模型自行判断何时停止、何时调整、何时求助
  3. 工具增强(Tool-Augmented):模型可以调用外部工具获取信息或执行操作

2.3 从传统自动化到 Agentic Automation

传统自动化(RPA、CI/CD Pipeline、Cron Job)的本质是规则驱动------"如果 A 则 B",每一条路径都是预先定义好的。它的优点是确定性强,缺点是完全没有灵活性。一旦遇到预料之外的情况,整个流程就会中断。

Agentic Workflow 则不同:

维度 传统自动化 Agentic Workflow
决策方式 预定义规则 LLM 动态推理
适应性 仅处理已知场景 可应对未知输入
工具使用 固定 API 调用 动态选择和组合工具
纠错能力 人工介入 自动反思和重试
复杂度上限 受规则数量限制 受模型能力限制

Gen 3: Agentic AI
Gen 2: AI 增强自动化
Gen 1: RPA 机器人
演进
演进
固定规则
结构化数据
无学习能力
RPA + ML/NLP
半结构化数据
模式识别
目标驱动
多模态数据
持续学习与自适应

图:从传统自动化到智能体的三代演进

三、Agentic Workflow 的核心组件

一个完整的 Agentic Workflow 通常由四个核心组件构成,它们共同协作,形成"思考-行动-观察-反思"的闭环。
未达标
达标
用户输入目标

  1. Planning 规划模块
  2. Tool Use 工具调用模块
  3. Observation 观察结果
  4. Reflection 反思模块
    输出最终结果

图:Agentic Workflow 四大核心组件的协作闭环

3.1 规划模块(Planning)

规划模块负责将复杂目标分解为可执行的子任务序列。

关键能力:

  • 任务分解:将"帮我分析上季度的销售数据"分解为"查询数据库 → 清洗数据 → 绘制趋势图 → 撰写分析报告"
  • 依赖排序:识别哪些任务必须先完成,哪些可以并行
  • 动态重规划:当某个步骤失败时,重新调整后续计划

常见实现方式:

  • ReAct 模式:Reasoning + Acting,交替进行推理和行动

  • Plan-and-Execute:先制定完整计划,再逐步执行

  • Tree-of-Thought:探索多条可能路径,选择最优方案

    一个简单的规划 Prompt 示例

    system_prompt = """
    你是一个任务规划助手。请将用户的目标分解为 3-7 个可执行的步骤。
    每个步骤需要包含:

    1. 步骤描述
    2. 预期输出
    3. 所需工具或资源
    4. 与其他步骤的依赖关系
      """

3.2 工具调用(Tool Use)

工具调用让 Agent 具备了"动手能力"------它不再局限于生成文本,而是可以真正地与外部世界交互。

常见的工具类型:

工具类别 示例 用途
搜索工具 Google Search、Bing API 获取实时信息
代码执行 Python REPL、Shell 运行计算、操作文件
数据库 SQL 查询接口 存取结构化数据
API 调用 REST/GraphQL 接口 触发外部服务
文件系统 读/写本地文件 持久化中间结果

工具调用的关键设计:

  • 工具描述(Tool Description):清晰描述工具的功能和参数,模型需要根据描述自行决定何时调用哪个工具
  • 错误处理:工具调用失败时,将错误信息返回给模型,让它自行调整
  • 权限控制:区分只读和写入操作,敏感操作需要人工确认
python 复制代码
# 工具定义示例
tools = [
    {
        "name": "search_web",
        "description": "搜索互联网获取最新的信息。参数 query 为搜索关键词。",
        "parameters": {
            "type": "object",
            "properties": {
                "query": {"type": "string", "description": "搜索关键词"}
            },
            "required": ["query"]
        }
    },
    {
        "name": "execute_python",
        "description": "在沙箱中执行 Python 代码并返回结果。",
        "parameters": {
            "type": "object",
            "properties": {
                "code": {"type": "string", "description": "要执行的 Python 代码"}
            },
            "required": ["code"]
        }
    }
]

3.3 反思机制(Reflection)

反思是 Agentic Workflow 区别于传统自动化的最关键特征。它让 Agent 能够自我审视输出质量,并在发现问题时主动修正。

反思的三个层次:

  1. 表层反思:检查输出是否满足格式要求(如 JSON 是否合法、字数是否达标)
  2. 逻辑反思:检查推理链条是否有漏洞、前后是否矛盾
  3. 结果反思:执行结果反馈后,评估是否达到了预期目标
python 复制代码
# 反思循环的简化实现
def agentic_loop(task, max_iterations=5):
    result = None
    for i in range(max_iterations):
        # 执行
        result = agent.execute(task)
        # 反思
        critique = agent.reflect(result, task)
        if critique.score > 0.9:
            break
        # 修正
        task = critique.suggestions
    return result

一个典型的反思 Prompt 模板:

复制代码
请审视你刚才的输出,回答以下问题:
1. 是否完整回答了用户的原始问题?
2. 是否有任何事实性错误或遗漏?
3. 代码示例是否可以正常运行?
4. 是否有更优的解决方案?

如果发现问题,请直接给出修正后的版本。

3.4 多智能体协作(Multi-Agent)

当任务变得非常复杂时,单个 Agent 可能难以胜任。多智能体协作的思路是:让多个专门的 Agent 各司其职,通过通信和协调共同完成任务。

常见协作模式:

  • 顺序流水线:Agent A → Agent B → Agent C,每个 Agent 完成一个阶段
  • 辩论模式:两个 Agent 从不同角度论证,第三个 Agent 裁决
  • 层级模式:一个"管理者"Agent 分配任务给多个"执行者"Agent
  • 自由协作:Agent 之间自由对话,自发形成分工

层级模式
管理者 Agent
执行者 A
执行者 B
执行者 C
辩论模式
Agent 正方
裁判 Agent
Agent 反方
顺序流水线
Agent A
Agent B
Agent C

图:三种常见的多智能体协作拓扑

多 Agent 系统的核心挑战:

  • 通信协议:Agent 之间如何交换信息(共享记忆 vs 消息传递)
  • 任务分配:如何自动将复杂任务分配给最合适的 Agent
  • 冲突解决:当两个 Agent 给出矛盾结果时如何处理
  • 成本控制:多 Agent 意味着多倍的 API 调用量

四、Agentic Workflow 的运行循环

将以上四个组件组合起来,就形成了一个经典的 Agentic 运行循环:

复制代码
┌─────────────────────────────────────────┐
│              用户输入目标                  │
└─────────────────┬───────────────────────┘
                  ▼
┌─────────────────────────────────────────┐
│         1. Planning(规划)               │
│     分解任务、确定步骤、分配资源             │
└─────────────────┬───────────────────────┘
                  ▼
┌─────────────────────────────────────────┐
│         2. Action(行动)                  │
│     调用工具、执行代码、查询数据             │
└─────────────────┬───────────────────────┘
                  ▼
┌─────────────────────────────────────────┐
│         3. Observation(观察)             │
│     收集执行结果、错误信息、外部反馈          │
└─────────────────┬───────────────────────┘
                  ▼
┌─────────────────────────────────────────┐
│         4. Reflection(反思)              │
│     评估结果、判断是否达标、决定下一步        │
└─────────────────┬───────────────────────┘
                  │
        ┌─────────┴─────────┐
        ▼                   ▼
   达到目标               未达到目标
        │                   │
        ▼                   │
   输出最终结果    ──────────┘
                  回到步骤 1 或 2

这个循环使得 Agent 的行为非常接近人类处理复杂问题的方式:做一点、看一下、想一想、调整一下、继续做

五、一个最小可运行的 Agent 示例

下面是一个不到 100 行的 Agentic Workflow 最小实现,展示了 Planning → Tool Use → Reflection 的完整循环:

python 复制代码
import json
import re
from openai import OpenAI

client = OpenAI()

# 定义工具
def calculator(expression: str) -> str:
    """安全地计算数学表达式"""
    try:
        # 只允许数字和基本运算符
        if not re.match(r'^[\d\+\-\*\/\(\)\.\s]+$', expression):
            return "错误:表达式包含非法字符"
        result = eval(expression)
        return str(result)
    except Exception as e:
        return f"计算错误:{str(e)}"

TOOLS = [
    {
        "type": "function",
        "function": {
            "name": "calculator",
            "description": "计算数学表达式,支持加减乘除和括号",
            "parameters": {
                "type": "object",
                "properties": {
                    "expression": {
                        "type": "string",
                        "description": "数学表达式,如 '(3+5)*2'"
                    }
                },
                "required": ["expression"]
            }
        }
    }
]

def run_agent(user_input: str, max_steps: int = 5):
    """运行一个简单的 Agentic 循环"""
    messages = [
        {"role": "system", "content": """你是一个具备计算能力的数学助手。
请遵循以下工作流程:
1. 分析问题,制定解题步骤
2. 必要时使用计算器工具
3. 每次计算后反思结果是否合理
4. 给出最终答案前,确认所有步骤都已完成

重要:每一步只做一件事,不要试图一次完成所有计算。"""},
        {"role": "user", "content": user_input}
    ]

    for step in range(max_steps):
        print(f"\n--- Step {step + 1} ---")

        response = client.chat.completions.create(
            model="gpt-4o",
            messages=messages,
            tools=TOOLS,
            tool_choice="auto"
        )

        assistant_msg = response.choices[0].message

        # 如果模型想调用工具
        if assistant_msg.tool_calls:
            tool_call = assistant_msg.tool_calls[0]
            func_name = tool_call.function.name
            func_args = json.loads(tool_call.function.arguments)

            print(f"🔧 调用工具: {func_name}({func_args})")

            # 执行工具
            if func_name == "calculator":
                result = calculator(func_args["expression"])
            else:
                result = f"未知工具: {func_name}"

            print(f"📊 工具返回: {result}")

            # 将工具调用和结果加入对话历史
            messages.append(assistant_msg)
            messages.append({
                "role": "tool",
                "tool_call_id": tool_call.id,
                "content": result
            })

        # 如果模型给出文本回复(不再调用工具)
        else:
            content = assistant_msg.content
            print(f"💬 Agent: {content[:200]}...")
            # 检查是否是最终答案
            if "最终答案" in content or "答案是" in content:
                return content
            messages.append(assistant_msg)
            messages.append({
                "role": "user",
                "content": "请继续,如果已经完成请给出最终答案。"
            })

    return "Agent 在最大步数内未能完成任务。"

# 运行示例
result = run_agent("一个长方形的长是 12 米,宽是 8 米,请计算它的面积和周长。")
print(f"\n=== 最终结果 ===\n{result}")

运行这个示例,你会发现 Agent 会先规划步骤、分别计算面积和周长、然后给出最终答案------而不是一次性把所有计算塞在一起。

六、Agentic Workflow 的适用场景

并不是所有场景都需要 Agentic Workflow。什么时候该用、什么时候不该用,是一个重要的判断力。

适合的场景

场景 为什么适合
复杂多步推理 需要分解任务、中间验证
需要外部信息 需要搜索、查数据库、调 API
输出质量要求高 反思和迭代能显著提升质量
任务变化大 无法预定义所有路径
需要代码执行 生成代码并验证结果

不适合的场景

场景 为什么不适合
简单分类/翻译 零样本就够,加 Agentic 画蛇添足
延迟敏感 多轮调用导致响应变慢
成本敏感 多轮调用 = 多倍 Token 消耗
严格确定性要求 Agent 有随机性,行为不完全可控

经验法则:如果一个中级工程师需要 30 分钟以上才能完成的任务,那么它可能适合用 Agentic Workflow 来处理。

七、主流框架一览

在进入实战之前,先了解一下目前主流的 Agentic Workflow 框架:

框架 特点 适合场景
LangGraph 基于状态图,精细控制力强 复杂、定制化的工作流
CrewAI 多 Agent 角色扮演,上手简单 需要多 Agent 协作的场景
AutoGen(微软) 对话驱动,支持人机协作 对话式多 Agent 场景
Dify 低代码/可视化,拖拽式搭建 非技术人员、快速原型
Coze(字节) 一站式 Agent 开发平台 快速部署到聊天平台

关于这些框架的深入对比和选型建议,请关注本系列的后续文章。

七、总结

本文从零开始,建立了对 Agentic Workflow 的认知基础:

  • Agentic Workflow 的本质:让 LLM 从"一步到位"变成"多步迭代",通过规划、使用工具、反思和协作来提升完成质量
  • 四大核心组件:Planning(规划)、Tool Use(工具调用)、Reflection(反思)、Multi-Agent(多智能体协作)
  • 运行循环:Planning → Action → Observation → Reflection,循环往复直到达成目标
  • 适用判断:不是什么场景都需要 Agentic,简单任务用零样本更高效
相关推荐
南境十里·墨染春水3 小时前
讲讲IO复用三个函数的底层逻辑
数据库
打小就很皮...3 小时前
基于 Python + LangChain + React 的 AI 流式对话与历史存储实战
人工智能·langchain·flask·react·sse
吴可可1233 小时前
Teigha处理CAD样条曲线的方法解析
数据库·算法·c#
小沈跨境3 小时前
Temu 运营进阶之路 工具选型与凌风体系分析
大数据·人工智能·产品运营·跨境电商·temu
迁移科技3 小时前
案例丨AI+3D视觉,赋能制药行业拆垛及破包更精准高效
人工智能·科技·3d·自动化·视觉检测
这个DBA有点耶3 小时前
数据迁移避坑指南:从Oracle到国产数据库的兼容性问题
数据库·数据仓库·sql·oracle·dba
NQBJT3 小时前
万字拆解 NeckFix:AI 脖子前倾检测的算法原理与工程实现
人工智能·算法
taocarts_bidfans3 小时前
反向海淘独立站搭建与全链路技术落地实战
大数据·跨境电商·独立站·反向海淘·taoify
数智工坊3 小时前
【Inner Monologue论文阅读】: 首次将大语言模型嵌入机器人控制闭环,实现自我反思和动态行为调整
论文阅读·人工智能·算法·语言模型·机器人·无人机