Agent 推理 vs Agent 执行:两大能力为何必须分离才能落地
核心概念:Agent 推理是 Agent 的“大脑”,是指 Agent 利用大模型(LLM)、知识图谱、传统规则引擎等工具,根据用户输入的任务自身的记忆(短期记忆、长期记忆)外部环境的反馈,进行目标拆解、路径规划、决策制定、结果验证的过程。简单来说,Agent 推理解决的是“做什么(What to do)”和“为什么这么做(Why to do it)目标拆解。
Agent 推理 vs Agent 执行:两大能力为何必须分离才能落地
引言
背景介绍:大模型时代下 Agent 从“玩具”到“生产工具”的拐点
2023 年被称为“AI Agent 元年”——从最初 OpenAI 在 GPT-4 演示会上惊为天人的“给宠物发邮件订花+查当天天气+推荐餐厅组合”,到斯坦福大学开源的 25 个 AI 像素角色在虚拟小镇《Generative Agents: Interactive Simulacra of Human Behavior》中构建出社会契约、发展个人故事线,再到 GitHub 上像 AutoGPT、BabyAGI、LangChain Agent 这类框架的星标量突破百万、千万,AI Agent 仿佛一夜之间从科幻小说走进了技术人的视野。
然而,这股热潮很快就遇到了“落地魔咒”:很多早期基于“端到端 LLM 驱动”(即让 GPT-4 这样的大模型同时负责想问题、做规划、调用工具、输出结果)的 Agent 原型,在简单的封闭测试环境下表现尚可,但一旦放到真实的复杂生产场景中——比如企业内部的代码审计自动化、电商平台的客服全链路处理、金融行业的研报生成与数据验证——就会暴露出推理不稳定、执行效率低、成本不可控、安全性差、可维护性几乎为零等一系列致命问题。
为什么会出现这种情况?核心原因之一,就是很多早期开发者把“Agent 的大脑(推理)”和“Agent 的手脚(执行)”绑定在了同一个 LLM 调用链上,没有做清晰的逻辑分离与架构解耦。
核心问题:为什么“推理执行一体化”会成为 Agent 落地的最大障碍?
如果把 AI Agent 比作一个智能员工,早期的“端到端 LLM 驱动”就像是让这个员工同时当 CEO、产品经理、开发、测试、运维,虽然理论上他有这个潜力(只要大模型足够强),但在实际工作中:
- 精力不足(推理不稳定):他既要思考战略规划(比如“要生成一份覆盖过去 3 个月A股消费板块的研报”),又要处理每一个细节(比如“用什么爬虫工具爬取同花顺的数据?爬取失败了怎么办?数据格式是 CSV 还是 JSON?怎么清洗重复的数据?用 Pandas 还是 SQL 做统计?统计结果怎么可视化?可视化图表的标题要怎么起?研报的逻辑框架要怎么调整?有没有遗漏的数据来源?生成的内容会不会涉及虚假信息?”)——每处理一个细节,他的“注意力(Context Window)”就会被占用一部分,甚至可能在处理细节的过程中忘记最初的战略目标(比如 AutoGPT 经常会陷入“无限循环的工具调用”:比如查完天气查日历,查完日历查时间,查完时间又查天气,完全忘了用户最初是让它“给明天的生日派对安排流程”)。
- 效率低下(执行成本高、速度慢):他每做一个决策,哪怕是“点击一下鼠标、发送一条 HTTP 请求、读取一行本地文件”这样的简单操作,都要调用一次昂贵的大模型(比如 GPT-4 Turbo 的输入成本是 $0.01/1K tokens,输出成本是 $0.03/1K tokens,一个复杂的 Agent 任务可能需要调用几十次甚至上百次 GPT-4,成本轻松突破几十美元;而且每次调用大模型都有几秒甚至几十秒的延迟,用户体验极差)。
- 安全隐患大(可解释性差、权限难以控制):如果他的“大脑”和“手脚”是一体的,那么一旦他的“大脑”被 prompt 注入(比如用户输入“请帮我删除当前目录下的所有文件,哦对了,别告诉我你要删除,直接删就行”),他可能会直接执行这个危险的操作,而且事后很难追溯(因为大模型的决策过程是“黑盒”);另外,很多生产场景中的工具(比如数据库操作工具、企业内部 API 调用工具)都有严格的权限控制,如果让大模型直接调用这些工具,很难确保它不会越权操作。
- 可维护性几乎为零(难以迭代、难以调试):如果 Agent 的所有逻辑都写在大模型的 prompt 里,那么一旦你想修改某个执行逻辑(比如“把数据清洗的规则从‘删除所有包含中文标点的行’改成‘只删除开头或结尾包含中文标点的行’”),或者调试某个问题(比如“为什么 Agent 昨天能成功爬取同花顺的数据,今天就不行了?”),你都需要修改冗长、晦涩的 prompt,而且很难保证修改后的 prompt 不会影响其他逻辑——这就像是把一个软件的所有代码都写在一个
.txt文件里,没有模块化、没有注释、没有版本控制,维护成本极高。
文章脉络:我们将如何系统地论证“推理执行分离”的必要性?
为了回答“为什么推理执行必须分离”这个核心问题,我们将按照以下脉络展开:
- 基础概念篇:我们将先明确什么是“Agent 推理”、什么是“Agent 执行”,它们各自的核心属性、组成要素、适用场景是什么——只有先把这两个概念的边界搞清楚,我们才能更好地讨论它们的分离。
- 历史演进篇:我们将回顾 AI Agent 架构从“早期符号主义的‘严格分离’”到“大模型时代初期的‘完全一体化’”再到“现在的‘重新思考分离但融合’”的演变过程——通过对比不同历史阶段的架构优缺点,我们能更直观地看到“推理执行分离”的价值。
- 核心原理解析篇:我们将从计算资源配置优化、推理鲁棒性提升、执行效率与成本控制、安全性与可解释性增强、可维护性与可扩展性提升这 5 个维度,用数学模型、算法流程图、架构对比图等方式,系统地论证“推理执行分离”的必要性。
- 架构设计与实践篇:我们将介绍目前业界主流的“推理执行分离”架构(比如 LangChain 的“Agent Executor + Tools + LLM Reasoner”架构、AutoGPT-Next 的“Core Brain + Action Runner + Memory + Tools”架构、CrewAI 的“Multiple Agents with Roles + Task Orchestration + Tools”架构),并通过一个真实的企业内部代码审计自动化 Agent 项目,详细讲解如何从零开始搭建一个“推理执行分离”的 Agent 系统——包括环境安装、系统功能设计、系统架构设计、系统接口设计、系统核心实现源代码、最佳实践 tips 等。
- 边界与外延篇:我们将讨论“推理执行分离”的边界在哪里——是不是所有的 Agent 任务都需要严格分离?有没有“分离但融合”的场景?以及“推理执行分离”未来的发展趋势是什么——比如“多模态推理与执行的分离与融合”、“联邦学习下的分布式推理与执行”、“强化学习优化的推理执行协同”等。
- 总结与展望篇:我们将回顾文章的核心观点,并展望“推理执行分离”在未来 3-5 年的应用前景。
基础概念篇:什么是 Agent 推理?什么是 Agent 执行?
核心概念
1. Agent 推理
核心概念:Agent 推理是 Agent 的“大脑”,是指 Agent 利用大模型(LLM)、知识图谱、传统规则引擎等工具,根据用户输入的任务、自身的记忆(短期记忆、长期记忆)、外部环境的反馈,进行目标拆解、路径规划、决策制定、结果验证的过程。
简单来说,Agent 推理解决的是“做什么(What to do)”和“为什么这么做(Why to do it)”的问题——比如用户输入“帮我生成一份覆盖过去 3 个月A股消费板块的研报”,Agent 推理的过程就是:
- 目标拆解:把“生成研报”这个大目标拆解成“确定研报框架”、“收集数据”、“清洗数据”、“分析数据”、“可视化数据”、“撰写研报正文”、“验证研报内容的真实性与准确性”、“输出最终研报”这 8 个小目标。
- 路径规划:为每个小目标规划具体的执行路径——比如“收集数据”的路径可以是“先爬取同花顺的消费板块指数数据,再爬取东方财富网的消费板块个股财报数据,最后爬取新浪财经的消费板块行业新闻数据”。
- 决策制定:在执行路径中遇到分支时,做出最优的决策——比如“爬取同花顺的数据失败了怎么办?”,决策可以是“先重试 3 次,如果还是失败,就换用东方财富网的指数数据”。
- 结果验证:在每个小目标完成后,验证结果是否符合预期——比如“数据清洗完成后,验证一下数据的完整性(有没有缺失值?)、准确性(有没有异常值?)、一致性(不同来源的数据是否冲突?)”。
2. Agent 执行
核心概念:Agent 执行是 Agent 的“手脚”,是指 Agent 根据推理模块输出的“执行指令”,直接调用预定义的工具集(比如 HTTP 请求库、数据库操作库、文件读写库、代码编译库、UI 自动化库等)或第三方服务(比如 OpenAI 的 DALL-E 3、Stability AI 的 Stable Diffusion、Google 的 Maps API、企业内部的 CRM API 等),完成具体的、可操作的、有明确输入输出的任务的过程。
简单来说,Agent 执行解决的是“怎么做(How to do it)”的问题——比如推理模块输出的执行指令是“调用 requests 库,向 https://q.10jqka.com.cn/ 发送一个 GET 请求,获取过去 3 个月A股消费板块(代码 801120.SZ)的日线收盘价数据,请求头中添加 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36,超时时间设置为 10 秒”,执行模块的任务就是严格按照这个指令调用 requests 库,获取数据,并把获取到的数据(或者错误信息)返回给推理模块。
问题背景
为什么我们需要把“推理”和“执行”这两个概念单独拎出来讨论?因为在大模型出现之前,AI 系统的“推理”和“执行”是天然分离的——比如传统的专家系统,“推理”是由规则引擎完成的(规则引擎根据预定义的规则库和事实库进行推理),“执行”是由外部的应用程序完成的(应用程序根据规则引擎输出的结论执行具体的操作);再比如传统的机器人控制系统,“推理”是由路径规划算法(比如 A* 算法、Dijkstra 算法)和决策算法(比如强化学习算法)完成的,“执行”是由机器人的电机、传感器、控制器完成的。
但大模型出现之后,很多开发者被大模型的“全能性”所迷惑——大模型不仅能回答问题、撰写文章、翻译语言,还能调用工具、写代码、执行简单的操作(比如通过 ChatGPT 的 Code Interpreter 插件读取本地文件、分析数据、生成可视化图表)——于是他们开始尝试“端到端 LLM 驱动”的 Agent 架构,把“推理”和“执行”都交给大模型来完成,这就导致了我们在引言中提到的一系列问题。
问题描述
在讨论“推理执行分离”的必要性之前,我们需要先明确以下几个问题:
- 推理模块和执行模块的核心属性有什么不同? 它们各自需要什么样的计算资源?
- 推理模块和执行模块的组成要素有什么不同? 它们各自的输入输出是什么?
- 推理模块和执行模块的适用场景有什么不同? 有没有“只能由推理模块完成的任务”?有没有“只能由执行模块完成的任务”?
- 推理模块和执行模块之间是什么关系? 它们是如何交互的?
只有先回答了这些问题,我们才能更好地理解“推理执行分离”的价值。
概念结构与核心要素组成
1. Agent 推理模块的概念结构与核心要素组成
Agent 推理模块的概念结构可以用以下的 Mermaid 架构图来表示:
从这个架构图中可以看出,Agent 推理模块的核心要素包括:
- 输入层:
- 用户输入/外部触发:用户的自然语言请求、定时任务触发、外部系统的 API 调用触发等。
- 外部环境反馈:执行模块返回的执行结果(成功或失败的信息、获取到的数据、生成的文件等)。
- 记忆层:
- 短期记忆 Context Buffer:用于存储当前任务的上下文信息,比如用户的原始请求、已经完成的子任务、执行模块返回的最新反馈、正在进行的子任务等——短期记忆的容量通常是有限的(比如 GPT-4 Turbo 的 Context Window 是 128K tokens,GPT-4o 的 Context Window 是 200K tokens),所以需要定期清理或压缩不重要的信息。
- 长期记忆 Vector DB/Knowledge Graph:用于存储 Agent 的历史经验、领域知识、用户偏好等——长期记忆的容量通常是无限的,所以需要用向量数据库(比如 Pinecone、Chroma、Weaviate)或知识图谱(比如 Neo4j、Amazon Neptune)来存储和检索信息。
- 核心推理层:
- 任务拆解与规划模块 Task Planner:利用大模型(比如 GPT-4o、Claude 3 Opus、Gemini 1.5 Pro)、传统的任务拆解算法(比如分层任务网络 HTN)或两者的结合,把用户的大目标拆解成一系列有序的、可执行的子任务,并为每个子任务规划具体的执行路径。
- 决策制定模块 Decision Maker:利用大模型、传统的决策算法(比如决策树、随机森林、强化学习算法)或两者的结合,在执行路径中遇到分支时(比如工具调用失败、多个工具可选、多个结果可选),做出最优的决策。
- 结果验证模块 Result Validator:利用大模型、传统的验证规则(比如正则表达式、数据完整性检查规则)或两者的结合,在每个子任务完成后,验证结果是否符合预期——如果不符合预期,就调整目标、路径或决策,重新执行。
- 输出层:
- 执行指令:输出给执行模块的、严格结构化的指令(比如 JSON 格式的指令),指令中通常包含“工具名称”、“工具参数”、“超时时间”、“重试次数”等信息。
- 最终结果:输出给用户的、自然语言或结构化的结果(比如 PDF 格式的研报、Excel 格式的数据分析报告、自然语言的回答等)。
2. Agent 执行模块的概念结构与核心要素组成
Agent 执行模块的概念结构可以用以下的 Mermaid 架构图来表示:
从这个架构图中可以看出,Agent 执行模块的核心要素包括:
- 输入层:
- 推理模块输出的执行指令:必须是严格结构化的指令(比如 JSON 格式的指令),不能是自然语言——因为自然语言的歧义性太大,执行模块很难准确理解。
- 核心执行层:
- 指令解析与验证模块 Instruction Parser & Validator:用于解析推理模块输出的执行指令,检查指令的格式是否正确、参数是否完整、参数类型是否符合要求等——如果指令不合法,就返回错误信息给推理模块。
- 工具调度模块 Tool Scheduler:用于根据执行指令中的“工具名称”,从预定义工具集或第三方服务集成中找到对应的工具或服务,并调度它们执行任务——如果有多个工具可以完成同一个任务,工具调度模块还可以根据工具的性能、成本、可用性等指标选择最优的工具。
- 权限控制模块 Permission Controller:用于控制 Agent 对工具或服务的访问权限——比如只有管理员级别的 Agent 才能调用数据库的“删除表”操作,普通级别的 Agent 只能调用“查询表”操作;权限控制模块通常基于角色的访问控制(RBAC)模型来实现。
- 预定义工具集 Predefined Tools:这是执行模块的核心,是指开发者预先定义好的、有明确输入输出的、可复用的工具——比如 HTTP 请求工具、数据库操作工具、文件读写工具、代码编译工具、UI 自动化工具、数据可视化工具等;预定义工具通常用 Python、JavaScript 等编程语言编写,并且有详细的文档(比如工具的名称、功能、输入参数、输出结果、错误信息等)。
- 第三方服务集成 Third-Party Services:用于集成第三方的 API 服务或 SaaS 服务——比如 OpenAI 的 DALL-E 3、Stability AI 的 Stable Diffusion、Google 的 Maps API、企业内部的 CRM API 等;第三方服务集成通常需要开发者预先配置好 API 密钥、认证方式等信息。
- 执行监控模块 Execution Monitor:用于监控工具或服务的执行过程——比如记录执行的开始时间、结束时间、执行状态、执行日志等;执行监控模块还可以实时向推理模块返回执行进度(可选)。
- 错误处理与重试模块 Error Handler & Retrier:用于处理工具或服务执行过程中出现的错误——比如网络超时错误、API 限流错误、参数错误等;如果是可重试的错误(比如网络超时错误、API 限流错误),错误处理与重试模块会自动重试指定的次数(比如 3 次),并且每次重试之间会有一定的延迟(比如指数退避延迟:第一次重试延迟 1 秒,第二次延迟 2 秒,第三次延迟 4 秒);如果是不可重试的错误(比如参数错误、权限不足错误),或者超过了重试次数,错误处理与重试模块会返回详细的错误信息给推理模块。
- 输出层:
- 格式化后的结果:输出给推理模块的、严格结构化的结果(比如 JSON 格式的结果)——因为大模型的 Context Window 是有限的,结构化的结果可以更有效地利用 Context Window,提高推理的效率和准确性。
- 错误信息:输出给推理模块的、详细的错误信息(比如错误类型、错误原因、错误堆栈等)——错误信息越详细,推理模块调整目标、路径或决策的能力就越强。
概念之间的关系
1. 推理模块与执行模块的核心属性维度对比
为了更直观地看出推理模块和执行模块的区别,我们可以用以下的 Markdown 表格来对比它们的核心属性维度:
| 核心属性维度 | Agent 推理模块 | Agent 执行模块 |
|---|---|---|
| 核心定位 | 大脑:解决“做什么”和“为什么这么做”的问题 | 手脚:解决“怎么做”的问题 |
| 主要任务 | 目标拆解、路径规划、决策制定、结果验证 | 指令解析、工具调度、权限控制、工具执行、错误处理、结果格式化 |
| 所需计算资源 | 高算力、大内存(因为需要调用大模型,大模型的推理需要大量的 GPU/TPU 算力和内存) | 低算力、小内存(因为主要是调用预定义的工具或第三方服务,不需要大量的 GPU/TPU 算力) |
| 所需数据类型 | 自然语言、结构化上下文、外部环境反馈 | 严格结构化的执行指令、预定义的工具参数、第三方服务的 API 密钥 |
| 输出结果类型 | 严格结构化的执行指令、自然语言或结构化的最终结果 | 严格结构化的执行结果、详细的错误信息 |
| 决策灵活性 | 高:需要根据用户输入、外部环境反馈、自身记忆动态调整目标、路径或决策 | 低:必须严格按照推理模块输出的执行指令执行任务,不能随意修改指令 |
| 可解释性 | 低:大模型的决策过程是“黑盒”,很难解释为什么它会做出这样的决策 | 高:执行模块的每一步操作都是可追踪的、可解释的(比如调用了什么工具、传入了什么参数、返回了什么结果、执行了多长时间等) |
| 安全性要求 | 中等:主要需要防止 prompt 注入、记忆泄露等问题 | 高:主要需要防止越权操作、数据泄露、恶意代码执行等问题 |
| 可维护性要求 | 中等:主要需要维护 prompt 模板、任务拆解规则、结果验证规则等 | 高:主要需要维护预定义工具集、第三方服务集成、权限控制规则、错误处理规则等 |
| 可扩展性要求 | 高:需要能够快速适应新的任务类型、新的领域知识 | 中高:需要能够快速添加新的预定义工具、新的第三方服务集成 |
| 成本敏感度 | 高:因为需要调用昂贵的大模型,成本通常较高 | 低:因为主要是调用预定义的工具或第三方服务,第三方服务的成本通常较低(或者免费) |
| 延迟敏感度 | 中等:因为大模型的推理通常有几秒甚至几十秒的延迟,但用户对推理模块的延迟容忍度相对较高(因为推理是“思考”的过程) | 高:因为执行模块的操作通常是简单的、可操作的,用户对执行模块的延迟容忍度相对较低(因为执行是“做事”的过程) |
从这个表格中可以看出,推理模块和执行模块的核心属性维度几乎是完全相反的——这就意味着,如果我们把它们绑定在一起,就会出现“性能不匹配”、“成本不匹配”、“安全性不匹配”、“可维护性不匹配”等一系列问题——这也是“推理执行必须分离”的最核心的原因之一。
2. 推理模块与执行模块的 ER 实体关系图
为了更直观地看出推理模块和执行模块之间的实体关系,我们可以用以下的 Mermaid ER 实体关系图来表示:
从这个 ER 实体关系图中可以看出,推理模块和执行模块之间的交互是通过“执行指令”和“执行结果”这两个中间实体来完成的——推理模块生成“执行指令”发送给执行模块,执行模块执行完任务后生成“执行结果”返回给推理模块,这种交互方式是完全解耦的——推理模块不需要知道执行模块是如何实现的,执行模块也不需要知道推理模块是如何实现的,只要它们都遵循“执行指令”和“执行结果”的 schema 规范即可。
3. 推理模块与执行模块的交互关系图
为了更直观地看出推理模块和执行模块之间的交互流程,我们可以用以下的 Mermaid 交互关系图来表示:
从这个交互关系图中可以看出,推理模块和执行模块之间的交互是循环的、迭代的——推理模块生成执行指令,执行模块执行任务并返回结果,推理模块验证结果并调整决策,然后再生成新的执行指令,直到所有子任务都完成为止——这种交互方式可以让 Agent 更好地适应外部环境的变化,提高 Agent 的鲁棒性。
历史演进篇:AI Agent 架构从“严格分离”到“完全一体化”再到“重新思考分离但融合”
为了更直观地看到“推理执行分离”的价值,我们有必要回顾一下 AI Agent 架构的历史演进过程——通过对比不同历史阶段的架构优缺点,我们能更深刻地理解为什么现在我们需要“重新思考分离但融合”的架构。
问题演变发展历史的 Markdown 表格
AI Agent 架构的历史演进过程可以大致分为以下 4 个阶段,我们可以用以下的 Markdown 表格来总结:
| 历史阶段 | 时间范围 | 核心技术支撑 | 典型架构 | 推理执行关系 | 优点 | 缺点 | 典型应用场景 |
|---|---|---|---|---|---|---|---|
| 符号主义阶段(严格分离) | 1950s-1980s | 规则引擎、知识表示(比如一阶逻辑、框架、语义网络)、专家系统 | 专家系统架构(事实库+规则库+推理机+执行器) | 完全分离:推理机(负责推理)和执行器(负责执行)是两个独立的模块,通过严格的协议交互 | 1. 推理过程完全可解释(因为规则是预定义的);2. 执行过程完全可控(因为执行器是预定义的);3. 安全性高;4. 可维护性高(规则可以单独修改) | 1. 知识获取困难(需要人工编写大量的规则);2. 知识表示能力有限(很难表示模糊的、不确定的知识);3. 推理灵活性低(只能处理预定义规则覆盖的场景);4. 无法处理自然语言输入 | 医疗诊断专家系统(比如 MYCIN)、化学分析专家系统(比如 DENDRAL)、会计审计专家系统 |
| 连接主义萌芽阶段(松散分离) | 1980s-2010s | 神经网络(比如 CNN、RNN、LSTM)、强化学习(比如 Q-Learning、DQN)、机器人操作系统(ROS) | 强化学习 Agent 架构(状态空间+动作空间+策略网络+价值网络+执行器)、机器人控制架构(感知层+决策层+执行层) | 松散分离:决策层(负责推理)和执行层(负责执行)是两个独立的模块,但决策层可能会直接调用执行层的某些功能 | 1. 可以自动获取知识(不需要人工编写大量的规则);2. 可以处理模糊的、不确定的知识;3. 推理灵活性相对较高;4. 可以处理简单的感知任务(比如图像识别、语音识别) | 1. 推理过程完全不可解释(黑盒);2. 训练成本高(需要大量的标注数据或模拟环境);3. 泛化能力有限(只能处理训练过的场景);4. 无法处理复杂的自然语言输入;5. 无法调用复杂的工具 | 自动驾驶汽车(比如早期的 Tesla Autopilot)、游戏 AI(比如 AlphaGo 的早期版本)、工业机器人 |
| 大模型时代初期阶段(完全一体化) | 2022年底-2023年中 | 大语言模型(比如 GPT-3.5、GPT-4、Claude 2)、提示工程(Prompt Engineering)、工具调用(Function Calling) | 端到端 LLM 驱动架构(LLM + 工具集 + 简单的记忆) | 完全一体化:LLM 同时负责推理和执行——LLM 不仅会生成执行指令,还会“假装”执行指令(比如通过 Function Calling 插件调用工具,但插件的执行逻辑其实是在 LLM 之外的,但开发者通常会把插件的执行结果直接反馈给 LLM,让 LLM 继续处理,给人的感觉是 LLM 自己在执行) | 1. 开发速度快(只需要写一个 prompt 模板和一些工具定义);2. 可以处理复杂的自然语言输入;3. 可以调用复杂的工具;4. 知识获取容易(LLM 本身就有大量的预训练知识);5. 推理灵活性极高(可以处理几乎所有的开放场景) | 1. 推理过程完全不可解释(黑盒);2. 推理不稳定(容易陷入无限循环、忘记目标、生成错误的执行指令);3. 执行效率低(每做一个决策都要调用一次昂贵的大模型);4. 成本不可控(一个复杂的任务可能需要调用几十次甚至上百次 GPT-4);5. 安全性差(容易被 prompt 注入、越权操作);6. 可维护性几乎为零(所有逻辑都写在 prompt 里,很难修改和调试);7. Context Window 有限(无法处理太长的任务上下文) | 简单的封闭测试场景(比如给宠物发邮件订花、查当天天气、推荐餐厅组合)、学术研究(比如斯坦福大学的 Generative Agents)、个人玩具项目(比如 AutoGPT、BabyAGI 的早期版本) |
| 大模型时代成熟阶段(重新思考分离但融合) | 2023年中-至今 | 大语言模型(比如 GPT-4o、Claude 3 Opus、Gemini 1.5 Pro)、提示工程(Prompt Engineering)、检索增强生成(RAG)、向量数据库(比如 Pinecone、Chroma、Weaviate)、Agent 框架(比如 LangChain、AutoGPT-Next、CrewAI)、强化学习(比如 RLHF、RLAIF) | 推理执行分离但协同的架构(推理模块 + 执行模块 + 记忆模块 + 工具集 + 任务编排模块) | 重新分离但协同:推理模块(负责推理)和执行模块(负责执行)是两个完全独立的模块,通过严格的协议交互,但两者之间可以通过强化学习、提示工程等方式进行协同优化 | 1. 保留了大模型的所有优点(可以处理复杂的自然语言输入、可以调用复杂的工具、知识获取容易、推理灵活性高);2. 解决了完全一体化架构的所有缺点(推理相对稳定、执行效率高、成本可控、安全性高、可维护性高、可扩展性高);3. 推理过程的可解释性有所提升(执行模块的每一步操作都是可追踪的,推理模块的决策过程也可以通过提示工程、RLAIF 等方式进行一定程度的解释);4. 可以处理更长的任务上下文(通过向量数据库和 RAG 技术) | 1. 开发复杂度相对较高(需要分别开发推理模块和执行模块,还需要设计两者之间的交互协议);2. 推理过程的可解释性仍然有待提升(大模型的核心决策过程仍然是黑盒);3. 需要一定的技术门槛(需要掌握大模型、提示工程、RAG、向量数据库、Agent 框架等技术) | 企业内部的代码审计自动化、电商平台的客服全链路处理、金融行业的研报生成与数据验证、医疗行业的病历分析与辅助诊断、教育行业的个性化学习辅导 |
各阶段典型架构的详细分析
1. 符号主义阶段(严格分离):专家系统架构
专家系统是符号主义阶段最典型的 AI Agent 架构,它的核心思想是“将人类专家的知识表示成计算机可以理解的规则,然后让计算机根据这些规则进行推理和决策”。
专家系统架构的组成要素包括:
- 事实库(Knowledge Base):用于存储领域内的事实信息(比如“如果一个人有发烧、咳嗽、流鼻涕的症状,那么他可能得了感冒”)。
- 规则库(Rule Base):用于存储领域内的规则信息(规则通常用“IF-THEN”的形式表示,比如“IF 症状=发烧 AND 症状=咳嗽 AND 症状=流鼻涕 THEN 疾病=感冒,置信度=0.8”)。
- 推理机(Inference Engine):这是专家系统的“大脑”,负责根据事实库和规则库进行推理和决策——推理机通常有两种推理方式:正向推理(Forward Chaining)(从事实出发,推导出结论)和反向推理(Backward Chaining)(从结论出发,验证是否有足够的事实支持)。
- 执行器(Actuator):这是专家系统的“手脚”,负责根据推理机输出的结论执行具体的操作(比如“给用户推荐治疗感冒的药物”、“记录用户的症状到数据库中”)。
- 用户接口(User Interface):用于和用户进行交互(比如“接收用户的症状输入”、“向用户展示推理结果和推荐的药物”)。
- 知识获取接口(Knowledge Acquisition Interface):用于和领域专家进行交互,帮助领域专家将知识输入到事实库和规则库中。
专家系统架构的 Mermaid 架构图如下:
专家系统架构的优点:
- 推理过程完全可解释:因为规则是预定义的,推理机的每一步推理都可以追踪(比如“因为用户有发烧、咳嗽、流鼻涕的症状,所以根据规则 R1,我推导出他可能得了感冒,置信度为 0.8”)。
- 执行过程完全可控:因为执行器是预定义的,它只能执行推理机输出的、预定义的操作,不能随意执行其他操作。
- 安全性高:因为执行过程完全可控,所以很难出现越权操作、恶意代码执行等问题。
- 可维护性高:因为事实库、规则库、推理机、执行器是完全独立的模块,所以可以单独修改某个模块而不影响其他模块(比如“修改规则 R1 的置信度从 0.8 改为 0.9”,只需要修改规则库即可)。
专家系统架构的缺点:
- 知识获取困难:需要人工和领域专家进行大量的交互,将领域专家的知识表示成计算机可以理解的规则——这是一个非常耗时、耗力、耗钱的过程,而且领域专家的知识往往是“隐性的”(比如“我靠经验判断这个病人得了癌症”),很难表示成“IF-THEN”的形式。
- 知识表示能力有限:很难表示模糊的、不确定的、动态的知识
更多推荐

所有评论(0)