超越 Prompt Engineering:Agent 开发中的 Flow Engineering 方法论详解

元数据

  • 标题:超越 Prompt Engineering:Agent 开发中的 Flow Engineering 方法论详解
  • 关键词:Flow Engineering(流工程)、Autonomous Agent(自主智能体)、Prompt Engineering(提示工程)、感知-决策-行动(PDA)闭环、工具调用编排、多智能体协作流、长上下文管理、Agent 架构设计
  • 摘要:在 LLM 驱动的 Autonomous Agent 技术浪潮中,Prompt Engineering(PE)曾是实现单点智能交互的核心手段,但随着 Agent 从“单次问答工具”向“自主任务完成系统”的演进,PE 因上下文局限、流程不可控、协作成本高、可扩展性差等瓶颈逐渐失效。本文从 Agent 的第一性原理(感知-决策-行动闭环的信息流动与能量耗散) 出发,系统阐述 Flow Engineering(流工程) ——一种专门针对 Agent 全生命周期(设计、编排、优化、部署、运营)的结构化方法论,全面覆盖流的“设计原则、理论框架、架构模型、实现机制、实际应用、安全与伦理”等核心维度。本文不仅提供了数学化的流定义、复杂度分析工具,还给出了生产级的 Python 实现代码、Mermaid 架构/流程图、多场景案例研究,并通过与 PE 的全方位对比、行业发展脉络梳理,为开发者提供从 PE 到 FE 的完整迁移路径与最佳实践。

1. 概念基础:从 PE 的天花板到 FE 的新范式

1.1 领域背景化:LLM 与 Agent 技术的演进轨迹

自 2020 年 GPT-3 首次展示“大语言模型的 Few-Shot/Zero-Shot 学习能力”以来,LLM 经历了从“文本生成工具”(GPT-3 早期、BLOOM)到“代码/多模态理解工具”(Codex、GPT-4V、Claude 3 Opus),再到“Autonomous Agent 的核心大脑”的三次关键跃迁。在第三次跃迁中,Agent 技术的成熟标志从“能否调用工具”(如 LangChain 0.1.x 的 AgentExecutor、OpenAI 的 Assistants API 早期版)转向“能否自主完成复杂、多步骤、长周期、多约束的任务”——如金融分析师完成季度财报分析报告、软件工程师从需求文档生成可部署的微服务系统、智能家居管家协调 10+ 设备完成老人的日常护理流程。

然而,在这一转向过程中,PE 很快遇到了无法突破的天花板:

  1. 单点决策的不可靠性:PE 依赖单个 LLM 调用解决复杂问题,但 LLM 存在幻觉、逻辑跳变、工具调用错误率高等问题,尤其是在涉及多步骤推理或跨领域知识整合时,单次调用的正确率通常不足 30%(OpenAI 2024 年第一季度 Assistants API 白皮书数据);
  2. 上下文的有限性:即使是 Claude 3 Opus 这样支持 200K 上下文的模型,也无法完全容纳“老人 30 天的健康数据、智能家居 10+ 设备的实时状态、护理流程的 50+ 分支规则、家属的个性化要求”等复杂长上下文信息——PE 要么需要手动压缩/分块,要么导致 LLM 忽略关键信息,正确率进一步下降;
  3. 流程的不可控性:PE 很难显性化、结构化地定义任务流程——比如“季度财报分析”需要“爬取财报 PDF→提取结构化数据→构建财务模型→对比行业数据→生成风险提示→撰写报告初稿→审核报告→优化报告→生成最终报告”等 10+ 步骤,但如果用 PE 定义,可能只是一段几百字的自然语言提示,LLM 可能会跳过“构建财务模型”或“审核报告”等关键步骤,或者重复执行某些步骤;
  4. 协作成本的高企:当需要多个 Agent 协作完成任务时(如“软件开发”需要需求分析 Agent、架构设计 Agent、代码生成 Agent、测试 Agent、部署 Agent),PE 很难定义 Agent 之间的通信协议、协作规则、任务分配机制——通常需要开发者为每个 Agent 写一段冗长的、相互依赖的自然语言提示,一旦某个 Agent 的提示发生变化,其他所有 Agent 的提示都需要调整,维护成本极高;
  5. 可扩展性的缺失:PE 的优化通常是“针对特定任务的微调式优化”——比如为了让“金融分析师 Agent”更好地处理季度财报,开发者需要不断调整提示语,但当需要让这个 Agent 处理年度财报或半年报时,之前的优化几乎全部失效,需要重新写提示、重新测试;同时,PE 也很难支持“动态任务扩展”——比如当老人的健康数据突然出现异常时,智能家居管家需要临时调用“远程医疗咨询 Agent”和“家属通知 Agent”,但 PE 很难在自然语言提示中定义这种“动态分支触发机制”。

正是在这样的背景下,Flow Engineering(流工程) 应运而生——它不再把 Agent 看作“单个 LLM 调用的容器”,而是看作“由多个组件(感知组件、推理组件、工具组件、存储组件、协作组件)组成的、信息在其中有序流动的闭环系统”,其核心目标是通过结构化的流程设计、显性化的规则定义、自动化的组件编排、可量化的性能优化,实现 Agent 系统的高可靠性、高可控性、高可扩展性、低维护成本

1.2 历史轨迹:从软件工程到流工程的范式迁移

为了更好地理解 FE 的本质,我们可以将其与软件工程中的几个关键范式进行对比——Agent 技术的演进本质上是“软件开发范式在 LLM 时代的重构”:

范式名称 核心目标 核心方法 核心工具/平台 适用场景 局限性
瀑布式开发 固定需求下的高质量交付 需求分析→设计→编码→测试→部署 Excel(需求文档)、Visio(架构图)、Word(测试报告) 需求完全固定的项目(如政府IT系统) 无法应对需求变化,迭代周期长
敏捷开发 快速迭代以应对需求变化 Scrum(冲刺、每日站会、回顾会)、Kanban(看板) Jira(任务管理)、GitHub(代码管理)、Slack(沟通) 需求频繁变化的项目(如互联网产品) 缺乏对系统架构的长期规划,协作成本高
DevOps 缩短开发到部署的周期 CI/CD(持续集成/持续部署)、自动化测试 Jenkins(CI/CD)、Docker(容器)、Kubernetes(编排) 大规模互联网应用的部署与运营 主要关注“代码的部署与运营”,不关注“代码的逻辑结构”
Prompt Engineering 优化单个 LLM 调用的输出质量 提示词模板、Few-Shot/Zero-Shot学习、思维链(CoT)、思维树(ToT) LangChain Templates、PromptFlow、OpenAI Playground 单次问答、简单工具调用的任务 单点决策不可靠、上下文有限、流程不可控、协作成本高、可扩展性差
Flow Engineering 优化 Agent 系统的全生命周期 流的设计原则、理论框架、架构模型、实现机制、优化方法 LangGraph、AutoGen、Prefect 2.0、Temporal、FlowiseAI 复杂、多步骤、长周期、多约束的自主任务完成系统 学习曲线相对陡峭,需要开发者同时掌握 LLM 技术和软件工程技术

从上面的对比可以看出,FE 并不是对 PE 的否定,而是对 PE 的超越与扩展——PE 仍然是 FE 中“优化单个推理组件(通常是 LLM 调用)输出质量”的重要工具,但 FE 关注的是“整个系统的信息流动与能量耗散”,而非“单个组件的性能”。

FE 的历史可以追溯到 2023 年中期——当时 LangChain 团队发现,越来越多的开发者开始使用 LangChain 的 Chain 组件构建“结构化的任务流程”,但 Chain 组件存在“无法处理动态分支、无法支持循环、无法实现多 Agent 协作”等问题。因此,LangChain 团队在 2023 年 10 月发布了 LangGraph——一个专门用于构建 Agent 流的框架,这标志着 FE 从“零散的开发者实践”走向“正式的方法论与工具链”。

此后,越来越多的 FE 工具与平台涌现:

  • AutoGen:微软在 2023 年 11 月发布的多 Agent 协作流框架,支持“角色扮演式协作”和“工具共享式协作”;
  • FlowiseAI:2023 年 12 月发布的可视化 FE 平台,支持“拖拽式流设计”和“一键部署到云端”;
  • Prefect 2.0:一个通用的工作流编排框架,但在 2024 年 1 月加入了“LLM 原生支持”,可以用于构建 Agent 流;
  • Temporal:一个通用的持久化工作流编排框架,在 2024 年 2 月加入了“OpenAI Assistants API 集成”,可以用于构建长周期的 Agent 流。

同时,学术界也开始关注 FE——2024 年 3 月,斯坦福大学 AI 实验室发布了《Flow Engineering: A New Paradigm for Building Autonomous Agents》的论文,首次系统阐述了 FE 的理论框架与设计原则;2024 年 4 月,麻省理工学院 CSAIL 实验室发布了《Multi-Agent Flow Orchestration: Theory and Practice》的论文,进一步扩展了 FE 到多 Agent 协作场景。

1.3 问题空间定义:FE 要解决的 8 个核心问题

为了明确 FE 的研究范围与应用场景,我们可以将 FE 要解决的核心问题定义为以下 8 个:

  1. 流的设计问题:如何为特定的 Agent 任务设计一个“高可靠性、高可控性、高可扩展性”的流?
  2. 流的建模问题:如何用数学化的语言或可视化的工具对流进行建模?
  3. 流的组件问题:如何设计、实现、测试 Agent 流中的各个组件(感知组件、推理组件、工具组件、存储组件、协作组件)?
  4. 流的编排问题:如何自动化地执行 Agent 流中的各个组件,处理组件之间的依赖关系、动态分支、循环、异常?
  5. 流的优化问题:如何量化 Agent 流的性能,并根据性能数据对流程设计、组件实现、提示词进行优化?
  6. 流的安全问题:如何确保 Agent 流的安全性(如防止工具滥用、防止数据泄露、防止幻觉传播)?
  7. 流的伦理问题:如何确保 Agent 流的伦理合规性(如避免偏见、保护隐私、确保透明度)?
  8. 流的运营问题:如何监控、调试、维护、升级生产环境中的 Agent 流?

1.4 术语精确性:FE 中的核心术语定义

为了避免概念混淆,我们需要对 FE 中的核心术语进行精确的定义:

1.4.1 核心系统术语
  • Autonomous Agent(自主智能体):一个能够感知环境、自主决策、执行行动、反馈学习的闭环系统,其核心大脑通常是 LLM,但也可以是其他 AI 模型(如强化学习模型、计算机视觉模型)。
  • Agent Flow(智能体流,简称流):Agent 系统中信息流动的结构化路径,由多个“节点(Node)”和“边(Edge)”组成——节点代表流中的“操作单元”(如感知环境、调用 LLM、执行工具、存储数据),边代表节点之间的“信息传递路径与触发条件”。
  • Node(节点):流中的“最小可执行操作单元”,分为以下 5 种类型:
    • Perception Node(感知节点):负责从环境中感知信息(如爬取网页、读取传感器数据、接收用户输入);
    • Reasoning Node(推理节点):负责对感知到的信息进行推理、决策(如调用 LLM、执行规则引擎、运行机器学习模型);
    • Action Node(行动节点):负责执行行动(如调用外部工具、修改系统状态、发送通知);
    • Storage Node(存储节点):负责存储或读取数据(如写入数据库、读取向量数据库、写入文件);
    • Collaboration Node(协作节点):负责与其他 Agent 进行通信、协作(如发送消息到其他 Agent、接收其他 Agent 的消息、分配任务给其他 Agent)。
  • Edge(边):节点之间的“信息传递路径与触发条件”,分为以下 4 种类型:
    • Sequential Edge(顺序边):当前一个节点执行成功后,自动执行下一个节点;
    • Conditional Edge(条件边):根据前一个节点的输出结果,选择执行不同的后续节点(即动态分支);
    • Loop Edge(循环边):重复执行当前节点或当前节点的子流程,直到满足某个条件为止;
    • Parallel Edge(并行边):同时执行多个后续节点,然后等待所有节点执行完成后再继续(即并行操作)。
1.4.2 核心性能术语
  • Flow Reliability(流可靠性):Agent 流在规定的时间内、规定的条件下,完成规定任务的概率——通常用“任务完成率(Task Completion Rate, TCR)”和“任务正确率(Task Accuracy Rate, TAR)”来衡量。
  • Flow Controllability(流可控性):开发者对流中信息流动的“干预能力”——通常用“流程显性化程度(Process Explicitness Degree, PED)”和“异常处理覆盖度(Exception Handling Coverage, EHC)”来衡量。
  • Flow Scalability(流可扩展性):Agent 流在“任务复杂度增加、任务数量增加、用户数量增加”的情况下,仍然能够保持高可靠性、高可控性、高性能的能力——通常用“水平可扩展性(Horizontal Scalability, HS)”和“垂直可扩展性(Vertical Scalability, VS)”来衡量。
  • Flow Maintainability(流可维护性):开发者对流进行“修改、调试、升级”的难易程度——通常用“代码可读性(Code Readability, CR)”、“模块化程度(Modularity Degree, MD)”和“文档完整性(Documentation Completeness, DC)”来衡量。
  • Flow Efficiency(流效率):Agent 流完成规定任务所需的“时间成本”和“资源成本(如 LLM API 调用次数、计算资源消耗)”——通常用“平均任务完成时间(Average Task Completion Time, ATCT)”和“平均 LLM API 调用次数(Average LLM API Calls, ALAC)”来衡量。

2. 理论框架:基于第一性原理的流定义与分析

2.1 第一性原理推导:Agent 流的本质是“信息处理系统的闭环反馈控制”

要理解 Agent 流的本质,我们可以从 控制论的第一性原理 出发——控制论的创始人诺伯特·维纳(Norbert Wiener)在《控制论:或关于在动物和机器中控制和通信的科学》一书中指出,任何自主系统的本质都是“闭环反馈控制系统”,其核心组成部分包括:

  1. 传感器(Sensor):负责从环境中感知信息;
  2. 控制器(Controller):负责根据感知到的信息和目标状态,计算控制信号;
  3. 执行器(Actuator):负责根据控制信号,执行行动,改变环境状态;
  4. 反馈通道(Feedback Channel):负责将执行器执行行动后的环境状态反馈给传感器。

LLM 驱动的 Autonomous Agent 就是一个典型的闭环反馈控制系统,我们可以将其与控制论的核心组成部分进行一一对应:

  • 传感器(Sensor)感知组件(Perception Component):负责从环境中感知信息(如用户输入、网页内容、传感器数据);
  • 控制器(Controller)推理组件(Reasoning Component):负责根据感知到的信息和目标状态,调用 LLM 或其他 AI 模型,计算控制信号(即“下一步要执行什么行动”);
  • 执行器(Actuator)行动组件(Action Component):负责根据控制信号,执行行动(如调用外部工具、发送通知、修改系统状态);
  • 反馈通道(Feedback Channel)存储组件(Storage Component) + 协作组件(Collaboration Component):负责将执行器执行行动后的环境状态(如工具的输出结果、用户的反馈、其他 Agent 的消息)存储起来,并反馈给感知组件或推理组件。

Agent Flow(智能体流) 则是这个闭环反馈控制系统中**“信息从传感器到控制器,再到执行器,最后通过反馈通道回到传感器”的结构化路径**——换句话说,流的本质是**“对闭环反馈控制系统中信息流动的结构化约束”,其核心目的是“减少信息流动的不确定性,提高系统的可靠性、可控性、可扩展性”**。

2.2 数学形式化:Agent 流的集合论定义与图论表示

为了更精确地分析 Agent 流,我们可以用 集合论 对其进行定义,用 图论 对其进行表示。

2.2.1 集合论定义

我们可以将 Agent 流定义为一个 六元组
F=⟨N,E,I,O,T,C⟩ \mathcal{F} = \langle \mathcal{N}, \mathcal{E}, \mathcal{I}, \mathcal{O}, \mathcal{T}, \mathcal{C} \rangle F=N,E,I,O,T,C
其中:

  1. N\mathcal{N}N:节点集合,N={n1,n2,...,nk}\mathcal{N} = \{n_1, n_2, ..., n_k\}N={n1,n2,...,nk},每个节点 ni∈Nn_i \in \mathcal{N}niN 是一个 四元组
    ni=⟨idi,typei,fi,configi⟩ n_i = \langle \text{id}_i, \text{type}_i, f_i, \text{config}_i \rangle ni=idi,typei,fi,configi

    • idi\text{id}_iidi:节点的唯一标识符;
    • typei\text{type}_itypei:节点的类型,typei∈{Perception,Reasoning,Action,Storage,Collaboration}\text{type}_i \in \{\text{Perception}, \text{Reasoning}, \text{Action}, \text{Storage}, \text{Collaboration}\}typei{Perception,Reasoning,Action,Storage,Collaboration}
    • fif_ifi:节点的执行函数,fi:Xi→Yif_i: \mathcal{X}_i \rightarrow \mathcal{Y}_ifi:XiYi,其中 Xi\mathcal{X}_iXi 是节点的输入空间,Yi\mathcal{Y}_iYi 是节点的输出空间;
    • configi\text{config}_iconfigi:节点的配置参数(如 LLM 的模型名称、温度参数、工具的 API 密钥)。
  2. E\mathcal{E}E:边集合,E={e1,e2,...,em}\mathcal{E} = \{e_1, e_2, ..., e_m\}E={e1,e2,...,em},每个边 ej∈Ee_j \in \mathcal{E}ejE 是一个 五元组
    ej=⟨idj,sourcej,targetj,typej,cj⟩ e_j = \langle \text{id}_j, \text{source}_j, \text{target}_j, \text{type}_j, c_j \rangle ej=idj,sourcej,targetj,typej,cj

    • idj\text{id}_jidj:边的唯一标识符;
    • sourcej\text{source}_jsourcej:边的源节点,sourcej∈N\text{source}_j \in \mathcal{N}sourcejN
    • targetj\text{target}_jtargetj:边的目标节点,targetj∈N\text{target}_j \in \mathcal{N}targetjN
    • typej\text{type}_jtypej:边的类型,typej∈{Sequential,Conditional,Loop,Parallel}\text{type}_j \in \{\text{Sequential}, \text{Conditional}, \text{Loop}, \text{Parallel}\}typej{Sequential,Conditional,Loop,Parallel}
    • cjc_jcj:边的触发条件,是一个布尔函数,cj:Ysourcej→{True,False}c_j: \mathcal{Y}_{\text{source}_j} \rightarrow \{\text{True}, \text{False}\}cj:Ysourcej{True,False}——对于 Sequential\text{Sequential}Sequential 类型的边,cjc_jcj 恒为 True\text{True}True;对于 Loop\text{Loop}Loop 类型的边,cjc_jcj 是“循环终止条件”的否定;对于 Conditional\text{Conditional}ConditionalParallel\text{Parallel}Parallel 类型的边,cjc_jcj 是开发者定义的触发条件。
  3. I\mathcal{I}I:流的初始状态集合,I={x1,x2,...,xp}\mathcal{I} = \{x_1, x_2, ..., x_p\}I={x1,x2,...,xp},每个初始状态 xl∈Ix_l \in \mathcal{I}xlI 是流的输入数据(如用户的任务请求、系统的初始配置)。

  4. O\mathcal{O}O:流的目标状态集合,O={y1,y2,...,yq}\mathcal{O} = \{y_1, y_2, ..., y_q\}O={y1,y2,...,yq},每个目标状态 yr∈Oy_r \in \mathcal{O}yrO 是流需要达到的输出结果(如任务完成报告、系统的目标状态)。

  5. T\mathcal{T}T:流的时间约束集合,T={t1,t2,...,ts}\mathcal{T} = \{t_1, t_2, ..., t_s\}T={t1,t2,...,ts},每个时间约束 tu∈Tt_u \in \mathcal{T}tuT 是对流的执行时间或某个节点的执行时间的约束(如“整个流必须在 10 分钟内完成”、“LLM 调用的超时时间为 30 秒”)。

  6. C\mathcal{C}C:流的资源约束集合,C={c1,c2,...,ct}\mathcal{C} = \{c_1, c_2, ..., c_t\}C={c1,c2,...,ct},每个资源约束 cv∈Cc_v \in \mathcal{C}cvC 是对流的资源消耗或某个节点的资源消耗的约束(如“整个流的 LLM API 调用次数不能超过 100 次”、“工具调用的 QPS 不能超过 10”)。

2.2.2 图论表示

根据上面的集合论定义,Agent 流可以表示为一个 有向带权图(Directed Weighted Graph, DWG),其中:

  • 顶点(Vertex):对应节点集合 N\mathcal{N}N 中的节点;
  • 有向边(Directed Edge):对应边集合 E\mathcal{E}E 中的边;
  • 边的权重(Weight):可以是边的“触发概率”、“执行时间”、“资源消耗”等性能指标。

此外,Agent 流的图论表示还可以分为以下两种类型:

  1. 静态流图(Static Flow Graph):在流执行之前就已经确定的流图——适用于“任务流程完全固定”的场景(如季度财报分析);
  2. 动态流图(Dynamic Flow Graph):在流执行过程中根据环境状态动态生成的流图——适用于“任务流程需要根据环境变化动态调整”的场景(如智能家居管家的日常护理流程)。

2.3 理论局限性:FE 不是万能的

虽然 FE 可以解决 PE 中的大部分瓶颈,但 FE 也不是万能的,它存在以下几个理论局限性:

  1. FE 无法完全消除 LLM 的幻觉:FE 可以通过“多轮验证、工具交叉验证、反馈学习”等方法减少 LLM 的幻觉,但无法完全消除——因为 LLM 的幻觉本质上是“统计模型的固有缺陷”,只要 LLM 是基于统计概率生成文本的,就一定会存在幻觉;
  2. FE 无法应对完全未知的环境:FE 依赖“显性化的流程设计与规则定义”,但如果环境是“完全未知的”(如探索未知星球的机器人),开发者无法预先设计流程或定义规则,此时 FE 就会失效——这种情况下,可能需要结合“强化学习(Reinforcement Learning, RL)”或“进化算法(Evolutionary Algorithm, EA)”等方法;
  3. FE 的优化存在局部最优问题:FE 的优化通常是“基于梯度下降或启发式算法的局部优化”,很难找到“全局最优解”——比如为了减少 LLM API 调用次数,开发者可能会合并两个推理节点,但合并后的推理节点可能会导致 LLM 的幻觉率上升,从而降低流的可靠性;
  4. FE 的学习曲线相对陡峭:FE 需要开发者同时掌握“LLM 技术(如提示工程、向量数据库)”和“软件工程技术(如工作流编排、系统架构设计、测试与调试)”,学习曲线相对陡峭——对于刚接触 Agent 技术的开发者来说,可能需要一定的时间才能掌握 FE。

2.4 竞争范式分析:FE 与其他 Agent 开发范式的对比

除了 FE 之外,目前还有以下几种主流的 Agent 开发范式,我们可以对它们进行全方位的对比:

范式名称 核心思想 核心工具/平台 优点 缺点 适用场景
Prompt Engineering(PE) 优化单个 LLM 调用的输出质量 LangChain Templates、PromptFlow、OpenAI Playground 学习曲线平缓,开发速度快 单点决策不可靠、上下文有限、流程不可控、协作成本高、可扩展性差 单次问答、简单工具调用的任务
Flow Engineering(FE) 结构化设计与编排 Agent 系统的信息流动 LangGraph、AutoGen、Prefect 2.0、Temporal、FlowiseAI 高可靠性、高可控性、高可扩展性、低维护成本 学习曲线相对陡峭,开发速度相对较慢 复杂、多步骤、长周期、多约束的自主任务完成系统
Reinforcement Learning from Human Feedback(RLHF) 通过人类反馈训练 Agent 的决策策略 OpenAI RLHF 平台、Anthropic RLHF 平台、DeepMind RLHF 工具 可以应对完全未知的环境,可以优化长期目标 训练成本极高,训练周期极长,需要大量的人类反馈数据 需要优化长期目标的任务(如游戏玩家、机器人导航)
Evolutionary Algorithm(EA) 通过进化算法优化 Agent 的决策策略 DEAP、PyGMO、ECJ 可以应对完全未知的环境,可以找到全局最优解(概率意义上) 计算成本极高,优化周期极长,难以解释决策过程 需要找到全局最优解的任务(如工程设计、参数优化)
Symbolic AI(符号人工智能) 通过显性化的规则与逻辑推理实现 Agent Prolog、CLIPS、Drools 决策过程完全可控,完全消除幻觉 无法应对模糊、不确定的环境,规则定义成本极高 环境完全固定、规则完全明确的任务(如工业控制系统、税务计算系统)

从上面的对比可以看出,没有一种 Agent 开发范式是万能的——开发者需要根据“任务的复杂度、环境的确定性、目标的明确性、资源的充足性”等因素,选择合适的范式,或者将多种范式结合起来使用(比如用 FE 结构化设计流程,用 PE 优化单个推理节点,用 RLHF 优化长期决策策略)。


3. 架构设计:Agent 流的分层架构与组件交互模型

3.1 系统分解:Agent 流的五层分层架构

为了提高 Agent 流的模块化程度、可维护性、可扩展性,我们可以将 Agent 流的系统架构分为以下 五层

用户交互层
User Interaction Layer

流编排层
Flow Orchestration Layer

核心组件层
Core Component Layer

基础设施层
Infrastructure Layer

外部环境层
External Environment Layer

下面我们详细介绍每一层的功能、组成部分、关键技术:

3.1.1 用户交互层(User Interaction Layer)

用户交互层是 Agent 流与最终用户其他系统进行交互的接口层,其核心功能是:

  1. 接收用户输入:如自然语言文本、语音、图像、视频、文件等;
  2. 展示流的执行状态:如当前执行的节点、已完成的节点、剩余的节点、执行时间、资源消耗等;
  3. 展示流的输出结果:如自然语言文本、语音、图像、视频、文件、报告等;
  4. 接收用户的反馈:如“流的输出结果是否正确”、“流的执行速度是否满意”、“是否需要调整流程”等。

用户交互层的组成部分包括:

  1. Web 应用:如基于 React/Vue 的单页应用(SPA),用于与最终用户进行图形化交互;
  2. API 网关:如 Kong、Nginx、API Gateway,用于与其他系统进行 API 交互;
  3. 聊天机器人接口:如 Slack API、Discord API、微信公众号 API,用于与最终用户进行聊天式交互;
  4. 语音接口:如 OpenAI Whisper API、Google Speech-to-Text API、Amazon Alexa API,用于与最终用户进行语音交互;
  5. 多模态接口:如 GPT-4V API、Claude 3 Opus API,用于与最终用户进行多模态交互。
3.1.2 流编排层(Flow Orchestration Layer)

流编排层是 Agent 流的核心控制层,其核心功能是:

  1. 解析流的定义:如解析 LangGraph 的 JSON/YAML 定义、解析 FlowiseAI 的可视化流定义;
  2. 调度流的执行:如根据节点之间的依赖关系、触发条件,调度节点的执行;
  3. 处理流的异常:如节点执行失败时的重试、回滚、降级;
  4. 持久化流的状态:如将流的执行状态、节点的输入输出数据持久化到数据库或文件系统中,以便支持“断点续传”和“流的调试”;
  5. 监控流的性能:如收集流的执行时间、资源消耗、任务完成率、任务正确率等性能指标,并生成监控报告。

流编排层的组成部分包括:

  1. 流引擎(Flow Engine):如 LangGraph 的 StateGraph、Prefect 2.0 的 Flow、Temporal 的 Workflow,用于解析流的定义、调度流的执行、处理流的异常;
  2. 状态管理组件(State Management Component):如 LangGraph 的 State、Redis、PostgreSQL,用于持久化流的执行状态、节点的输入输出数据;
  3. 异常处理组件(Exception Handling Component):如 LangGraph 的 Interrupt、Prefect 2.0 的 TaskRetry、Temporal 的 RetryPolicy,用于处理流的异常;
  4. 监控组件(Monitoring Component):如 Prometheus、Grafana、LangSmith,用于收集流的性能指标、生成监控报告。
3.1.3 核心组件层(Core Component Layer)

核心组件层是 Agent 流的功能实现层,其核心功能是实现流中的各个节点(感知节点、推理节点、行动节点、存储节点、协作节点)。

核心组件层的组成部分包括:

  1. 感知组件(Perception Component)
    • 网页爬取组件:如 BeautifulSoup、Scrapy、Playwright,用于爬取网页内容;
    • 文件解析组件:如 PyPDF2、pdfplumber、python-docx、pandas,用于解析 PDF、Word、Excel 等文件;
    • 传感器数据读取组件:如 PySerial、MQTT,用于读取传感器数据;
    • 用户输入接收组件:如 FastAPI、Flask,用于接收用户的 API 输入;
    • 多模态感知组件:如 OpenAI Whisper API、GPT-4V API、Claude 3 Opus API,用于感知语音、图像、视频等多模态信息。
  2. 推理组件(Reasoning Component)
    • LLM 调用组件:如 LangChain 的 ChatOpenAIChatAnthropic,用于调用 LLM;
    • 提示词模板组件:如 LangChain 的 PromptTemplateFewShotPromptTemplate,用于生成提示词;
    • 思维链/思维树组件:如 LangChain 的 ChainOfThoughtTreeOfThought,用于实现多步推理;
    • 规则引擎组件:如 Drools、Pyke、EasyRules,用于实现显性化的规则推理;
    • 机器学习模型调用组件:如 TensorFlow Serving、PyTorch Serve,用于调用机器学习模型。
  3. 行动组件(Action Component)
    • 外部工具调用组件:如 LangChain 的 ToolToolkit,用于调用外部工具;
    • 系统状态修改组件:如 Paramiko、Fabric,用于修改远程系统的状态;
    • 通知发送组件:如 smtplib、Twilio API、Slack API,用于发送邮件、短信、Slack 消息等通知;
    • 文件生成组件:如 matplotlib、seaborn、ReportLab,用于生成图表、报告等文件。
  4. 存储组件(Storage Component)
    • 关系型数据库组件:如 PostgreSQL、MySQL,用于存储结构化数据;
    • 非关系型数据库组件:如 MongoDB、Redis,用于存储非结构化数据;
    • 向量数据库组件:如 Pinecone、ChromaDB、FAISS,用于存储向量数据,实现语义检索;
    • 文件系统组件:如 AWS S3、Google Cloud Storage、本地文件系统,用于存储文件。
  5. 协作组件(Collaboration Component)
    • 消息队列组件:如 RabbitMQ、Kafka、Redis Pub/Sub,用于实现 Agent 之间的异步通信;
    • 任务分配组件:如 Celery、RQ,用于实现 Agent 之间的任务分配;
    • 角色定义组件:如 AutoGen 的 AssistantAgentUserProxyAgent,用于定义 Agent 的角色与行为。
3.1.4 基础设施层(Infrastructure Layer)

基础设施层是 Agent 流的底层支撑层,其核心功能是为上层提供计算资源、存储资源、网络资源等基础设施服务。

基础设施层的组成部分包括:

  1. 计算资源服务:如 AWS EC2、Google Cloud Compute Engine、Kubernetes,用于提供虚拟机、容器等计算资源;
  2. 存储资源服务:如 AWS S3、Google Cloud Storage、PostgreSQL RDS,用于提供对象存储、关系型数据库等存储资源;
  3. 网络资源服务:如 AWS VPC、Google Cloud VPC、API Gateway,用于提供虚拟私有云、API 网关等网络资源;
  4. AI 模型服务:如 OpenAI API、Anthropic API、Azure OpenAI Service,用于提供 LLM、多模态模型等 AI 模型服务;
  5. 监控与日志服务:如 Prometheus、Grafana、ELK Stack(Elasticsearch、Logstash、Kibana),用于提供监控、日志等服务。
3.1.5 外部环境层(External Environment Layer)

外部环境层是 Agent 流需要感知或交互的外部系统或环境,其组成部分包括:

  1. 网页与应用:如 Google Search、Wikipedia、GitHub、企业内部应用;
  2. 设备与传感器:如智能家居设备、工业传感器、机器人;
  3. 用户与其他 Agent:如最终用户、其他 Autonomous Agent;
  4. 数据库与文件系统:如企业内部数据库、外部公开数据库、云存储服务。

3.2 组件交互模型:Agent 流的 PDA 闭环交互模型

根据控制论的第一性原理,Agent 流的核心组件交互模型是 PDA 闭环交互模型(Perception-Decision-Action Closed-Loop Interaction Model),其交互流程如下:

外部环境(执行目标) 行动组件 推理组件 状态管理组件 感知组件 用户/外部环境 外部环境(执行目标) 行动组件 推理组件 状态管理组件 感知组件 用户/外部环境 alt [达到目标状态] [未达到目标状态] 发送输入/感知环境 处理感知信息 写入感知状态 读取感知状态+历史状态+目标状态 调用 LLM/规则引擎进行推理 写入决策状态 读取决策状态 执行行动 返回行动结果 写入行动结果状态 读取行动结果状态 判断是否达到目标状态 写入完成状态 发送输出结果 触发新一轮感知

下面我们详细介绍 PDA 闭环交互模型的每一个阶段:

3.2.1 感知阶段(Perception Phase)

感知阶段的核心功能是从用户或外部环境中感知信息,并将感知到的信息处理成结构化的状态数据,其交互流程如下:

  1. 用户或外部环境向感知组件发送输入信息(如自然语言文本、网页 URL、传感器数据);
  2. 感知组件处理感知信息(如解析 PDF、爬取网页、转换语音为文本);
  3. 感知组件将处理后的感知信息写入状态管理组件;
  4. 状态管理组件将“感知信息+历史状态+目标状态”读取并发送给推理组件。
3.2.2 决策阶段(Decision Phase)

决策阶段的核心功能是根据感知到的信息、历史状态、目标状态,调用 LLM 或规则引擎进行推理,计算下一步要执行的行动,其交互流程如下:

  1. 推理组件接收状态管理组件发送的“感知信息+历史状态+目标状态”;
  2. 推理组件调用提示词模板组件生成提示词;
  3. 推理组件调用 LLM 或规则引擎进行推理;
  4. 推理组件将推理结果(即“下一步要执行的行动”)写入状态管理组件;
  5. 状态管理组件将推理结果读取并发送给行动组件。
3.2.3 行动阶段(Action Phase)

行动阶段的核心功能是根据推理组件的决策结果,执行行动,改变外部环境的状态,其交互流程如下:

  1. 行动组件接收状态管理组件发送的推理结果;
  2. 行动组件执行行动(如调用外部工具、发送通知、修改系统状态);
  3. 外部环境返回行动结果;
  4. 行动组件将行动结果写入状态管理组件。
3.2.4 反馈阶段(Feedback Phase)

反馈阶段的核心功能是根据行动结果,判断是否达到目标状态,如果达到目标状态,则向用户发送输出结果;如果未达到目标状态,则触发新一轮 PDA 闭环,其交互流程如下:

  1. 状态管理组件将行动结果读取并发送给推理组件;
  2. 推理组件判断是否达到目标状态;
  3. 如果达到目标状态,推理组件将“完成状态”写入状态管理组件,状态管理组件将输出结果发送给用户;
  4. 如果未达到目标状态,推理组件触发新一轮感知阶段。

3.3 可视化表示:复杂 Agent 流的 Mermaid 图表示

为了更直观地展示复杂 Agent 流的结构与交互流程,我们可以用 Mermaid 图 对其进行表示——Mermaid 支持多种类型的图,如流程图(Flowchart)、序列图(Sequence Diagram)、状态图(State Diagram)、实体关系图(Entity Relationship Diagram)等,其中最适合表示 Agent 流的是 流程图(Flowchart)状态图(State Diagram)

3.3.1 季度财报分析 Agent 流的 Mermaid 流程图表示

下面我们用 Mermaid 流程图表示一个 季度财报分析 Agent 流 的结构:

无效

有效

不完整

完整

不合格

合格

开始

接收用户输入
(公司名称、季度)

验证输入
是否有效?

显示错误信息

爬取季度财报 PDF

解析季度财报 PDF
提取结构化数据

检查数据
是否完整?

是否
重试?

构建财务模型
计算关键指标

爬取行业平均数据

对比公司数据
与行业平均数据

生成风险提示

撰写报告初稿

审核报告初稿
检查幻觉与错误

报告
是否合格?

优化报告

生成最终报告
(PDF + 图表)

发送报告给用户

结束

3.3.2 智能家居管家 Agent 流的 Mermaid 状态图表示

下面我们用 Mermaid 状态图表示一个 智能家居管家 Agent 流 的状态变化:

系统启动

用户启动日常护理模式

传感器检测到数据变化

数据正常

数据异常

继续监控

检查护理规则

需要远程医疗咨询

需要通知家属

需要调整智能家居设备

等待医疗 Agent 响应

医疗 Agent 响应

等待家属响应

家属响应

验证设备状态

设备状态正常

(可选)

Idle

Monitoring

AnalyzingData

NormalState

AbnormalState

CheckingRules

CallMedicalAgent

CallFamilyAgent

AdjustDevices

WaitingMedicalResponse

RecordingMedicalAdvice

WaitingFamilyResponse

RecordingFamilyResponse

VerifyingDeviceState

RecordingDeviceState

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐