这道题其实是在问,当我们说一个系统是AI [[Agent]]时,它到底比普通聊天机器人多了什么。我的理解是,Agent的核心是把大模型从被动的问答角色,变成了一个能主动拆解目标、调用外部资源、并自我纠错的决策执行体。它的架构我一般拆成四个组件:规划、记忆、工具、行动,但真正落地时这四个不是孤立的,而是通过一个循环串起来的。
先说规划。规划模块负责把用户的一个模糊目标,比如“帮我处理一笔退款”,拆成可执行的子步骤。常见做法有[[Chain-of-Thought]],就是让模型一步步想;还有[[ReAct]],推理和行动交替进行,每走一步看结果再决定下一步。这里有个边界要划清:CoT适合纯推理任务,比如数学题;但一旦涉及外部操作,比如查订单、调API,ReAct更靠谱,因为它每步都能观察反馈。实际落地时,我通常把两者结合,先CoT做整体规划,再ReAct执行每一步,这样既保证逻辑连贯,又允许动态调整。
然后是记忆。记忆分两种:短期记忆就是当前对话的上下文,靠[[System Prompt]]和多轮历史维护;长期记忆是跨会话的知识积累,比如用户的历史偏好或者企业政策,我一般用[[Vector Database]]加[[RAG]]来存和检索。这里有个常见的坑:很多人以为长期记忆只存事实就好,但其实要区分知识类型。比如客服场景,退款规则是静态知识,适合向量检索;但用户的历史行为是动态的,更适合用结构化数据库。所以真正落地时,我倾向于 混合记忆,短期靠Prompt,长期按类型选存储,而不是一刀切用向量库。
工具模块是Agent能力的放大器。大模型本身不会算数、不会查库存,所以通过[[Function Calling]]让模型输出结构化JSON来调用外部工具,比如计算器、搜索引擎、API。这里的关键是工具描述要写清楚:功能说明、参数Schema、返回值格式。我踩过一个坑:工具描述太模糊,模型会瞎调用,比如用户问“订单状态”,它去调了退款API。所以上线前我会特别关注 工具描述的精准度,并且加一层校验,防止模型[[幻觉]]导致错误调用。
行动模块就是执行规划的每一步,调用工具、拿回结果,然后形成“观察→推理→行动”的循环。这个循环不是一次性的,而是多轮迭代,直到任务完成或达到终止条件。比如客服退款场景:用户说“我买的东西没收到”,Agent先规划出查物流、查订单、判断责任、执行退款四步;然后第一步调物流API,发现显示已签收,那就需要推理矛盾,再调订单详情确认地址,最后决定是否升级人工。这个过程中,如果某步失败,比如API超时,Agent要能自我反思,重新规划或报错,而不是卡死。
讲到这,其实有个延伸点值得提:多Agent协作。单Agent在复杂任务里容易出幻觉或者规划死循环,所以业界开始用角色分工,比如一个规划Agent拆任务,一个执行Agent调工具,一个反思Agent检查结果。但多Agent的通信开销和一致性控制是新的挑战,不是所有场景都适合。我目前更倾向于在单Agent内把规划和工具闭环做扎实,再考虑多Agent,因为很多失败其实是基础组件没做好。
所以我的总结是:Agent不是简单的组件堆叠,而是 规划-记忆-工具-行动 的闭环设计。我会把重点放在规划与工具的闭环上,因为这是Agent区别于聊天机器人的本质。记忆和行动更多是支撑,但做不好同样会崩。真要上线,我会先确保工具调用的准确率,再优化规划的灵活性,否则空有规划但执行不了,就是画饼。