ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

智能体三层架构拆解:从感知规划到执行,突破通用AI五成任务瓶颈

智能体三层架构拆解:从感知规划到执行,突破通用AI五成任务瓶颈 智能体这个概念这两年被聊烂了但我发现很多人的理解还停在“给大模型套个壳”或者“写段Prompt让它自己规划”的阶段。真正把智能体拆开做过工程化落地的人都会承认一个扎心的事实通用AI对话模型看起来什么都能聊但真放到业务里去接活大约五成核心任务它是接不住的——不是回答得不好而是从根本上没法完成。这个“五成”不是拍脑袋是我在多个项目里实测后的体感凡是需要状态保持、工具调用、结果校验、跨系统协作的任务通用AI裸奔基本就是摆设。而智能体的价值恰恰是把这五成“接不住”的任务通过三层架构重新接住。这篇文章我想用比较接地气的方式拆一拆智能体内部到底分了哪三层每一层在解决什么具体问题为什么缺了哪层都会导致任务失败以及我自己在Coze平台和用Python手写两条路线上分别踩过的坑。不管你是刚接触Agent的新手还是已经在做智能体开发的工程师这篇文章应该都能给你一点参考。1. 先搞清楚通用AI到底卡在哪五成任务上1.1 通用AI的四个天花板先别急着谈智能体我们把通用AI就是你现在打开ChatGPT、文心一言、Kimi能直接聊天的那个东西的边界画清楚。它本质上是一个“文本接龙大师”干的是根据上文预测下一个词的事。这种架构决定了它有四个绕不开的天花板。第一是状态丢失。通用AI没有记忆体的概念你关掉对话窗口再打开它对你的任务上下文一无所知。业务场景里最典型的就是多轮表单填写用户在第三步回答完系统因为网络抖动断了重连之后AI完全不知道前面填了什么。这不是产品体验问题是架构缺陷。第二是没有行动能力。它只能输出文本不能真的去查数据库、调API、发请求、改状态。你说“帮我查一下这个订单的物流状态”它只能给你一段“建议你登录后台查看”之类的废话或者编一个看起来像模像样的物流轨迹。这在to B场景里是不可接受的因为业务系统需要的是原子操作不是一段文字。第三是信息时效性。模型训练数据是有截止日期的你问“今天某某股票的价格”它有90%的概率在胡编。凡是依赖实时数据的任务通用AI天然接不住。第四是幻觉缺乏校验。它对自己不知道的事情会非常自信地编答案。做闲聊没问题做客服、做数据分析、做医疗辅助编错一个数字就是事故。你没法让它“知道自己不知道”因为它没有校验机制。这四个天花板叠加起来你去看业务场景里的需求会惊愕地发现至少一半的任务撞在墙上查实时库存、改订单状态、发通知消息、跨系统同步数据、执行多步有状态流程……通用AI全都接不住。1.2 哪些任务属于“通用AI接不住的50%”我给这五成任务归纳了一个分类清单你可以对照自己的业务看看是不是这么回事实时型任务查天气、查股价、查库存、查物流轨迹。数据在API里不在模型参数里。操作型任务发送邮件、修改工单状态、创建订单、更新CRM记录。业务系统需要的是写操作不是读操作。流程型任务需要保持步骤状态、按前置条件逐级推进的多步流程比如审批流、开户流程、售后处理SOP。确定性任务批量计算、数据清洗、格式转换。这些任务要求结果100%准确不允许“大概”“可能”。跨域协调任务既要查知识库又要调业务API还要把结果推送给人或者另一个系统。单一模型没有这种协调能力。反过来看通用AI擅长的是剩下那五成开放式问答、文本总结、翻译润色、头脑风暴、初稿生成。这些任务不需要外部动作不需要状态不需要确定性模型自己就能完成。所以“五成”这个数字本质上是在说如果你的业务只需要“聊”通用AI够了如果你的业务需要“做”你就需要智能体。2. 智能体的三层拆解感知、规划、执行2.1 整体架构给大模型装上眼睛、大脑和手脚智能体Agent说白了就一句话在通用AI的语言能力之上补上感知、规划、执行三层能力让它从“会说话”变成“会干活”。我用请助理这个例子来类比。你打电话给前台说“帮我订一家明天晚上6点的日料4个人预算人均300左右”。一个只会聊天的人通用AI会回答你“好的您可以去大众点评搜索日料店建议选择评分高的。”——这就是典型的“道理都懂事办不了”。而一个合格的助理智能体会做三件事先听清楚你的需求感知层然后规划出要查哪些店、对比评分和人均、选出备选、再确认是否需要预订规划层最后真的打开App查店、给餐厅打电话订座、订完回你一条确认消息执行层。这三件事对应到技术架构上就是三层感知与意图解析层负责理解用户输入提取关键信息识别意图。规划与决策层负责把目标拆解成可执行的步骤决定先做什么、后做什么要不要调用工具。工具调用与执行层负责真正去调API、操作外部系统、完成动作并把结果返回给上层。下面我逐层展开讲顺便解释层与层之间是怎么协作的。2.2 第一层感知与意图解析层这一层通常由一个LLM大语言模型承担它做的事情是“听懂话”。但注意这里的“听懂”不是闲聊式的理解而是结构化解析。什么叫结构化解析举个例子。用户说“我上周买的一个充电宝坏了想退货订单号好像是20240615后面的那串”。通用AI听了会理解这句人话但智能体的第一层要输出的是这样一份结构化结果{ intent: after_sale_return, order_id: 202406157898, confidence: 0.87, slots: { product: 充电宝, issue: 损坏, channel: online } }这份结构化数据是给第二层规划用的。意图识别错了后面全错参数提取漏了后面没法执行。所以这一层的工程重点根本不是“模型会不会聊天”而是Prompt怎么写才能稳定输出JSON、字段怎么定义才能不漏信息、置信度阈值设多少才不会被低质量输入带偏。我自己的经验是这一层最容易被低估。很多人觉得“不就是让模型读懂话嘛GPT-4o不是随随便便就懂了”但实际上真实业务里的用户输入噪声极大口语化、错别字、信息不全、多轮追问后的信息修补。要做到90%以上的稳定解析往往需要做意图分类的few-shot示例、定义slot抽取的Prompt模板甚至要配合正则和词典做兜底。这一层做不好后面的规划层和执行层再强也是空中楼阁。2.3 第二层规划与决策层第二层是智能体最核心、也是最难做的一层。它负责回答一个问题“要做成这件事我需要分几步每一步用什么工具顺序是什么”这一层有两种典型实现路线对应着完全不同的工程哲学。路线A是硬编码工作流Workflow也就是你在Coze、Dify这类平台上拖拽出来的那种节点图。人把步骤定义死先判断意图再查订单再判断是否在退款期内然后生成回复。每个节点做什么、下一步去哪都是写死的。这种方式的优点是可控、稳定、好排查缺点是灵活性差遇到预设之外的情况就断了。路线B是模型自主规划ReAct / Plan-and-Execute让模型自己“想一步、做一步”Thought: 用户想退货我需要先查订单状态 Action: query_order(order_id202406157898) Observation: 订单状态为已签收签收时间15天 Thought: 已超出自营7天无理由退货期但商品有保修可以走保修流程 Action: query_warranty(product充电宝) Observation: 商品在保修期内 Thought: 可以受理保修退货 Action: create_return_order(order_id202406157898, reason保修退货)这种方式非常灵活模型可以即兴发挥遇到异常情况也能临时转弯。但坑也很明显模型可能因为幻觉规划出错误的步骤可能在工具调用之间反复横跳可能出现死循环。所以做规划层我强烈建议以硬编码工作流为骨架把高风险路径全部写死只在分叉口给模型一点自主选择空间。你想象成单位里的新员工重要流程还是要按SOP走只有SOP没覆盖的例外情况才允许他去请示和发挥。在具体实现上规划层的两个关键参数是最大步数限制和终止条件。不限制步数的自主规划就是一个灾难模型会一直“思考”下去把Token烧光。我一般把最大迭代次数设在5到8次超过就算失败转人工。终止条件则必须明确要么返回了用户可接受的最终答案要么把问题升级给人。2.4 第三层工具调用与执行层第三层是智能体“动手”的一层也是和通用AI拉开差距最明显的一层。它的本质是函数调用Function Calling把外部API、数据库操作、消息发送、文件读写等能力封装成一个个“工具函数”让规划层决定调哪个、传什么参数然后真的去执行。一个工具函数长这样以Python为例def query_order_api(order_id: str) - dict: 查询订单信息的工具返回订单状态、物流信息等 url fhttps://api.example.com/orders/{order_id} resp requests.get(url, headersAUTH_HEADERS, timeout5) if resp.status_code 200: return resp.json() else: return {error: fAPI调用失败状态码{resp.status_code}}这里面的工程细节非常多。工具函数的输入必须结构化不能靠模型“自由发挥”传参数输出必须统一格式JSON最好还要做好超时、重试、异常捕获。因为智能体的执行层是面对外部真实世界的外部API可能挂了、可能响应慢、可能返回的不是你预期的结构。如果执行层不做容错一个API超时就会让整个Agent流程崩溃。还有一点我必须强调执行层应该把“动作”和“动作结果”都记录下来。这是智能体行为审计的基础。谁在什么时间调了什么工具、传了什么参数、得到了什么结果这些日志在线上出问题的时候就是救命稻草。另外执行层很现实的问题就是权限与安全。给Agent开的每一个工具都要扪心自问这个工具如果被恶意利用会怎样我见过有人给Agent开了“执行任意SQL”的权限结果Agent在一次误操作里删了整张表。在toB场景里工具权限要遵循最小授权原则写操作要做二次确认危险操作要加人工审批卡口。3. 实操对比平台搭建 vs Python自建3.1 为什么有两条路线怎么选聊完三层架构我们落到选型。现在搭智能体主要有两条路线一是用低代码平台Coze扣子、Dify、Flowise这类二是直接用代码自建Python LangChain/LlamaIndex或者干脆裸写。我先摆结论没有绝对优劣取决于你的业务诉求和团队的工程能力。平台路线适合这几类场景业务方想快速验证Agent能不能解决实际问题团队没有专职AI工程师需要大量非技术同事参与维护和迭代。我自己用Coze搭过几个客服类的Agent是真的快一个下午就能出一个能跑的Demo里面的人设、知识库、工具插件、多轮对话管理都是现成的。对业务验证来说平台路线的效率是代码自建的十倍不止。代码路线适合的场景是Agent要深度嵌入现有业务系统对性能、延迟、并发有硬性要求需要精细控制工具的输入输出和容错需要完整的行为审计和二次开发。比如我之前做一个电网设备工单自动处理Agent需要在内部系统上跑数据不能出内网还必须对接一堆老旧的内部接口这种场景平台根本接不住只能自己写。我给自己定的选型标准很朴素如果你的Agent主要是“打电话订餐厅”这种松散任务平台够了如果你的Agent是“给企业跑关键业务”这种严肃任务别省那点开发时间老老实实上代码。3.2 平台路线以Coze为例的搭建要点平台路线的核心操作是建Bot、配人设Prompt、接插件工具、搭工作流。这里面最容易踩的坑有三个。第一个坑是把整个逻辑全塞进Prompt。很多人用Coze直接在“人设与回复逻辑”里写一大段“你要先判断用户意图然后调用工具A如果A失败就调用B……”——这不叫智能体这叫一坨不可维护的Prompt。正确做法是用平台的工作流节点把步骤拆开意图识别节点、工具调用节点、条件分支节点、结果生成节点每一步可视化、可单独调试。Coze的底层本质也是节点化的执行图你非要用Prompt去模拟图逻辑结果一定是又慢又不稳定。第二个坑是插件参数不校验。平台插件封装好了API调用但很多插件对输入参数没有强校验。比如日期格式、字符串长度、枚举值这些插件层的校验往往很宽松脏数据进到API里就报错。我的办法是在调用插件之前加一个“参数清洗”节点用一个轻量LLM调用或规则脚本把参数格式统一。第三个坑是没有兜底分支。很多搭出来的Agent一遇到没见过的输入就进入死胡同一直报错。正经做法是每个节点后面都加一个“兜底”分支识别失败、调用失败、规划超限各自对应一条降级回复或转人工的路径。我见过做得好的案例甚至把“兜底回复”也分了三级轻问题给FAQ话术中问题提供人工客服二维码重问题7×24直接短信通知值班人员。3.3 Python自建的核心框架与细节代码自建路线框架上我目前用得最顺的是LangChain FastAPI的组合但说实话LangChain最近版本迭代太快接口三天两头变你要是没精力追更新用裸代码加几个基础类也行。核心模块就四个LLM封装、工具注册表、规划器、执行器。工具注册表是自建路线里容易做好也容易做烂的模块。它的职责是维护一个“工具名到函数”的映射并且提供工具的JSON Schema描述给模型看。模型决策要调什么工具就是靠读这些Schema。所以Schema写得好不好直接决定模型工具调用的准不准。描述要写清楚这个工具是干嘛的、参数是什么类型、有什么限制。比如register_tool( namequery_order_api, description按订单号查询订单状态返回status、logistics、create_time等字段, parameters{ type: object, properties: { order_id: {type: string, description: 订单号纯数字字符串} }, required: [order_id] }, funcquery_order_api )规划器的实现新手最容易上头去搞“让模型自由规划”的ReAct模式但实际生产里我更推荐先写死主流程DAG每个节点绑死一个工具节点之间定义转移条件只有当某个节点出现“条件不满足”时才允许模型做一次临场规划。这种“白90%黑10%”的设计兼顾了效率和可控性。说白了业务流程在大部分行业里是相对固定的没必要让模型每次都在同一条路上重新发明轮子。执行器的重点就是容错。我自建Agent时给执行器加了三层保护超时中断每个工具调用设timeout默认5秒、重试背压对幂等工具最多重试2次非幂等工具绝不重试因为重复调用可能产生重复订单、异常兜底工具抛异常时统一封装成“Observation: 工具执行失败原因XXX”把控制权交回规划层让它决定换方案还是终止。4. 从0到1搭一个“售后工单智能体”的完整过程4.1 确定需求和定义工具这部分我拿一个真实做过的项目来讲需求很常见某电商品牌的售后工单每天几百条用户消息各式各样客服人力跟不上。智能体的目标是把工单自动“接住”理解用户诉求、查订单、判断是否可退换、生成回复、需要时报修CRM。第一步不是写代码是把业务规则搞清楚。我画了一张表这里我不画流程图直接列表说明输入用户原始消息工具1query_order查订单状态工具2query_warranty查保修期工具3check_refund_rule查退货政策工具4create_work_order建售后工单输出给用户的回复文本注意业务规则写清楚签收7天内可无理由退货超7天且在保修期内走保修流程超出保修期仅提供维修报价。规则就是硬编码工作流的“骨架”Agent再聪明也不能违反业务规则这是底线。4.2 搭建三层逻辑我在Coze上搭这个Agent时也顺手用Python重写过一版核心逻辑如下。感知层Prompt我设计了带few-shot示例的结构化输出要求模型输出JSON格式这样{ intent: 退货|维修|换货|咨询, order_id: 从消息中提取的订单号, issue_category: 质量问题|物流问题|商品损坏|其他, emotional_intensity: 1-5 }为什么要加emotional_intensity这个字段因为最后给用户生成回复的时候语气要根据用户的情绪调整。用户已经骂街了Agent就不能冷冰冰念政策原文。规划层我用的硬编码工作流方式意图识别节点调用感知层查订单节点调用query_order工具条件判断节点订单状态正常是否签收签收时间是否在7天内分支A7天内走无理由退货流程创建退货工单分支B超7天但在保走保修流程创建维修工单分支C超保或异常转人工并给出原因说明回复生成节点基于工单创建结果以合适语气生成用户回复执行层就是四个工具函数。这里有个细节create_work_order是写操作我给它加了“人工确认开关”——当工单类型是“退货退款”时Agent生成的工单只是暂存需要客服一键确认才真正写入CRM。这样可以防止Agent误判给用户开了错误承诺。4.3 参数设计与调优记录这里分享几个具体参数值都是我实测下来比较稳的模型选择感知层和回复生成用强模型类GPT-4o档位规划层其实用不到最强的因为逻辑已经硬编码了弱模型跑分支判断反而便宜又稳定。温度temperature感知层设0要的是确定性输出回复生成层设0.4到0.6兼顾自然和稳定规划分支判断设0。最大Token限制感知层输出JSON给256足够回复生成给512。工具调用超时统一5秒重试1次重试间隔500毫秒。调优过程中的一个经验感知层的few-shot示例一定要用真实用户消息不要自己编“标准话术”。我最初用编的示例线上识别准确率只有62%因为口语化表达的多样性和编出来的完全不一样。后来直接从真实工单里抽了30条做few-shot准确率直接拉到89%。这件事花了我一个下午但回报极其明显。上线前的评测也提一嘴。我在一个包含200条真实工单的测试集上测了三个指标意图识别准确率、工具调用正确率、最终回复可接受率由客服标注。第一版跑出来分别是82%、74%、68%迭代调优以后到94%、91%、87%。召回率能做到91%量级这和华为云码道那个检视修复智能体的“召回率91.3%”给我的体感一致在工具调用这个环节结构化设计的提升空间比换模型大得多。4.4 效果复盘五成任务怎么被接住的这个售后工单智能体上线后我统计了一个月的运营数据纯规则匹配接不住、需要多轮理解工具调用的工单大约占52%和“五成”这个判断高度吻合。Agent独立处理了其中约81%剩下19%转人工主要是情绪过激、涉及赔付金额高、政策边界模糊的场景。客服人均日处理量提升了约3倍。最有意思的是我发现整套流程里业务方最满意的不是“AI能说话”而是每个工单都有完整的行为审计轨迹用户讲了什么、Agent判断成什么意图、调了哪个工具、为什么走这个分支、最后回复了什么全程可回溯。这其实是智能体工程里特别容易忽略、又特别值钱的东西——在toB场景里可解释性往往比智能本身更打动人。5. 智能体场景里的高频问题和避坑清单5.1 面试和方案设计里最常见的几个判断最近帮朋友模拟面试智能体方向的面试题翻来覆去就那几个核心命题整理出来给大家参考。第一题“平台搭建的智能体和Python搭建的智能体有什么不一样”本质是考你架构理解不是考你工具对比。答要分三层开发效率上平台快但定制性弱运行时平台上平台受厂商约束、数据走第三方链路自建可以完全私有化工具生态上平台插件开箱即用但都是通用型自建可以对接任何内部系统。答到这三点面试官基本满意。第二题“为什么智能体不能用一个大模型直接干所有事”答案是“没有外部状态和工具权限模型单点做不了确定性操作”。我自己线下沟通时的说法是模型是脑子不是手脚更不是眼睛它产生意图但产生不了真实世界的返回值。第三题“智能体的行为审计是什么意思”。这个题答完基本就能筛掉一半人。行为审计指的是对Agent的每一步推理、工具调用、参数传递、结果反馈做全量记录并且能够按条件检索、复盘和追责。落地怎么做就是我在执行层说的每个Action和Observation都必须写日志库配上trace_id贯穿全链路线上问题退回去能重放。5.2 工程实践里的十个典型坑我把实际做Agent过程中踩过的坑汇总一下按踩坑频率排个序上下文爆炸多轮工具调用结果全部塞进上下文导致一次对话烧掉几万Token、响应越来越慢。解法只保留最近两轮的Observation摘要长文本工具结果只在需要时再查。工具死循环Agent在A工具返回异常后不停重试A或切换到B再切回A进入环。解法限制最大步数并且每个工具的失败都往决策层返回“结构化失败信息”而不是让它自由发挥。参数幻觉模型调用工具时编造一个不存在的参数。解法工具函数入口做严格Schema校验参数不合法直接拒调。未经二次确认的写操作Agent直接把订单取消了、把用户拉黑了。解法所有高危写操作默认加人工确认闸门。知识库陈旧放进去的文档半年不更新Agent一本正经用旧政策回答问题。解法知识库挂更新时间和置信度打分过期内容自动降权。测试集过拟合评测集就那几十条调来调去全记住了上线一测真实数据就崩。解法评测集分“过拟合探测集”和“线上回流集”两套分开。情绪识别缺失用户已经炸了Agent还在念“根据我们的政策……”经过售后场景测试这是差评率最高的死法。解法感知层输出情绪分高分直接触发转人工。权限放大给Agent的工具权限比给内部员工的还大。解法工具授权矩阵备案按员工权限标准给Agent授权。日志不足出了问题没法复盘不知道Agent当时脑子里发生了什么。解法所有Thought、Action、Observation全量打日志。没有降级方案Agent挂的时候用户找不到人。解法独立的降级开关Agent故障自动切人工或静态FAQ。5.3 评估智能体效果的个人方法论最后聊评估。智能体不是一个“答案生成器”评估不能只看回答漂不漂亮要看任务完成率。我自己用一套极简单的方法论四步走定义任务清单把线上真实任务按类型归类区分简单问答、工具调用、多步流程、协作任务。抽样回流每周从线上抽50条真实会话由业务人员标注“任务是否达成”。失职归因每条失败任务都要归到具体层——感知层没听懂规划层走错分支执行层工具挂掉分层迭代哪层问题多就迭代哪层不盲目换大模型。这个方法论的价值在于它能让团队的优化动作很聚焦。过去大家一遇到Agent效果不好就喊“换个更强的模型”但很多时候问题根本不在模型而在Prompt结构化、工具Schema、容错逻辑这些工程细节上。分层归因之后你会发现至少有一半的失败是可以通过工程手段修复的根本不烧钱。6. 我用这套思路摸出的几条土经验聊到最后分享几条我做智能体这几年最想告诉后来人的实操心得。第一条别迷信“模型越强Agent越强”。智能体的能力上限取决于最弱的那一层。你换个顶级模型感知层准确率可能从88%涨到90%但如果执行层的工具Schema写成一坨屎整体完成率还是卡在75%。把工程细节做到位收益比换模型高得多。第二条“五成核心任务”不是一个耻辱标记反而是智能体存在的意义。通用AI接不住不要紧它本来就是聊天用的。真正该反思的是你设计的智能体有没有把那五成接好——如果接得好你就是把AI从“陪聊”变成了“干活”如果接不好老老实实回去打磨三层里的每一层。第三条一定要给Agent设计俯卧撑式的“复盘机制”。上线第一个月我每周都拉一份失败案例清单一条条看Agent是怎么死的。看得多了你会发现大多数失败根本不是技术性失败而是设计时没想清楚边界——比如业务上不允许的事Agent不知道工具能做的事Prompt没告诉它。边界画清楚了Agent的可靠性会有肉眼可见的提升。最后再送一个小技巧给Agent的所有工具调用都打上业务语义标签。比如query_order这个工具日志里除了记录调用了它还要记录“这次调用是为退货流程取证据”。这样事后的行为审计才能还原业务原貌而不只是一堆冷冰冰的函数调用记录。这个小习惯我在多个项目里受益排查线上问题的时候它帮你省下的时间不是一两个小时是一整天。这行里的水深不深关键看你有没有真的在海里游过。把三层拆清楚、把每一层的坑填平你的智能体才能从“演示视频”真正走到“生产可用”。
返回列表