从只会聊天的“鹦鹉”,到能规划、会执行、懂协作的智能同事,这背后是一场关于架构、工具与思想的深刻演进。

最近,随着各种AI Agent框架和应用的爆发,我花了些时间深入研究其技术脉络。我发现,AI Agent的发展史,本质上是如何为一个大语言模型(LLM)这个“最强大脑”逐步装配“身体器官”和“神经系统”,使其从空谈走向实干的过程。

本文将带你回顾这一历程,从最初的简单聊天,到工具调用,再到如今模块化、标准化的MCP与Skill体系,并剖析其中的关键架构思想。


第一阶段:单纯的LLM Chat——“聪明的鹦鹉”

最初的LLM,如早期的ChatGPT,是一个令人惊叹的文本生成器。它能聊天、写诗、总结、翻译,但其能力被严格限制在训练数据截止日期前的知识范围内,且没有与现实世界交互的任何“手脚”。它就像一个被关在信息茧房里的、学识渊博的鹦鹉,能复述知识,却无法执行任何具体操作。所有复杂任务都依赖其“即兴发挥”,导致输出不稳定且容易产生“幻觉”。

第二阶段:初始Agent——“长了手脚的鹦鹉”

为了解决“空谈”问题,业界引入了 “工具调用”(Function Calling) 能力。这标志着Agent时代的开端。其核心流程是:

  1. LLM分析:用户提问后,LLM分析需求。
  2. 决策与调用:若需外部能力,LLM输出一个结构化调用请求(如 {“name”: “get_weather”, “arguments”: {“location”: “北京”}})。
  3. 执行与回复:系统执行相应代码(如调用天气API),将结果返回给LLM,由LLM组织成自然语言回复。

“判断需调用工具”

“直接回答”

“用户:北京天气如何?”

拼接提示词
(系统指令+工具描述+历史+问题)

大语言模型 LLM

“LLM分析输出”

结构化工具调用请求
JSON

最终回答

系统执行真实函数/API

获取结果
“北京,晴,25°C”

回复用户

然而,这个阶段的架构很快暴露出痛点:

  • 工具集成地狱:每个项目都需重复编写工具连接代码,无法复用。
  • 上下文臃肿:冗长的工具描述占满Token,拖慢速度、增加成本。
  • 流程脆弱:LLM需临场规划多步工具调用,极易出错。
第三阶段:标准化协议(以MCP为代表)——“为世界装上统一插座”

为解决工具集成的混乱,出现了以 模型上下文协议(Model Context Protocol, MCP) 为代表的标准化协议。MCP的核心思想是将工具本身标准化和外部化。

它采用客户端-服务器模型:

  • MCP服务器:一个独立进程,专门负责连接某一类资源(如数据库、GitHub)。它对外暴露统一的接口。
  • MCP客户端(如Claude Desktop、Cursor IDE):只需实现一次协议对接,就能自动发现、加载和使用所有兼容的MCP服务器。

MCP 架构

JSON-RPC 2.0 协议

MCP Host
如: Claude Desktop

MCP Client

MCP Server
如: 文件系统服务

外部资源
如: 数据库, API

这就像为AI世界制定了USB-C标准。数据库专家写好一个MCP服务器后,任何支持MCP的AI应用都能直接使用,彻底解决了工具集成和移植的难题。MCP成为了Agent可靠的“手”。

第四阶段:Skills的提出——“拥有SOP的专家老师傅”

有了标准化的“手”(MCP),如何让它“会办事”?这就需要 Skills(技能)。Skills的核心是固化最佳实践和流程。

一个Skill通常包含:

  • 触发条件:当用户提到“画架构图”时触发。
  • 核心指令:分步骤的详细指导,告诉AI先做什么、后做什么,用什么格式。
  • 工具调用:明确指示在某一步调用哪个MCP工具。

Skills与MCP的关系:

  • MCP 是基础设施,解决“能力接入”(能干什么)。
  • Skills 是上层应用,解决“高质量执行”(该怎么干)。
  • Agent 是运行时,在Skills指导下,通过MCP调用工具完成任务。

“用户请求
‘分析上季度销售数据’”

“匹配并激活
‘数据分析’ Skill”

“Skill指令分步执行:
1. 调用MCP工具A查数据
2. 调用MCP工具B制图
3. 按模板总结”

“最终生成
结构化报告”

使用Skills时,通常无需在对话中明确指出,系统会根据问题自动匹配调用,让AI如同一位经验丰富的老师傅,稳定输出高质量成果。

关键架构思想演进:从ReAct到Plan-and-Execute

在Agent内部,如何组织“思考”与“行动”也经历了演进,诞生了两种核心模式:

模式哲学工作流适用场景
ReAct
(推理与行动)
边想边做,敏捷探索思考 → 行动 → 观察 → 思考…开放探索性任务,如复杂调试、研究
Plan-and-Execute
(规划与执行)
先谋后动,严格执行规划者制定完整计划 → 执行者逐步执行目标明确、步骤清晰的任务,如数据ETL、报告生成

ReAct 像一个在迷宫中探索的人,每走一步都观察四周再做决定,灵活但可能效率低。Plan-and-Execute 则像按蓝图施工,先由资深工程师(规划者LLM)制定完整计划,再由工人(执行者)严格执行,高效但依赖初始计划质量。


Agent的工程核心:工具与上下文管理的实战剖析

如果说MCP和Skills定义了Agent的“身体”和“经验”,那么工具调用(Function Call)的精细调度和上下文(Context)的智能管理就是维持其高效、稳定运行的“血液循环系统”与“短期记忆”。它们是工程实践中成本、性能与可靠性的决定性因素。本章将深入探讨你在实践中关心的几个核心问题。

5.1 工具精选:从“全盘供给”到“按需检索”的三大方案

在第二阶段的Agent中,一个常见的误区是将所有工具描述一次性塞给LLM。现代最佳实践是进行工具精选,主要方案对比如下:

方案核心机制优点缺点适用场景
静态路由预先按业务场景绑定固定工具集。简单直接,零延迟。僵化,无法处理跨场景复杂请求。功能单一、固定的简单助手。
基于规则过滤使用关键词、正则表达式匹配用户输入和工具描述。速度快,成本低,确定性强。泛化能力差,维护负担随工具增多而剧增。工具少、意图表述标准化的内部系统。
动态意图识别与检索(主流)用轻量级LLM或向量检索,实时分析用户意图并召回相关工具。灵活、精准、泛化能力强,用户体验好。引入少量延迟和额外计算成本。绝大多数现代复杂Agent系统。

其中,动态意图识别与检索是最佳实践,其核心流程如同一个智能调度中心:

  1. 向量化知识库:将所有工具的功能描述转换为向量(Embedding),存入向量数据库。
  2. 意图检索:当用户提问时,将问题也向量化,并从工具库中实时检索出最相关的几个工具(通常为3-5个)。
  3. 精准投喂:只将这些少量高相关工具的描述注入本次对话的提示词中,供主LLM决策调用。

“方案1/2: 静态或规则”

“方案3: 动态检索(主流)”

“用户输入”

“意图识别层”

“识别方式?”

“直接路由到预设工具集”

“向量化检索
召回Top K个相关工具”

“将K个工具描述注入提示词”

“主LLM接收
(用户问题 + 精简后工具集)”

“主LLM判断并调用工具”

这确保了LLM总是在最清晰、最相关的选项下工作,显著提升了工具调用的准确率和效率。

5.2 意图识别:架构中的“前哨”与框架集成

意图识别是整个流程的**“前哨”,它发生在主LLM进行深度推理和工具调用之前**,核心任务是快速判断用户意图,为主LLM筛选出合适的工具或技能。

  • 是否必须集成在AI Agent框架中?
    并非必须,但高度推荐。现代框架(如LangChain、LlamaIndex)提供了成熟的工具路由(Tool Router)、智能工具选择等组件,能方便地与记忆、历史等模块集成,降低开发复杂度。当然,你也可以将其设计为独立的微服务,通过API与Agent核心通信,这在需要特定技术栈或极高定制化时是合理的选择。
5.3 意图识别是否使用LLM?两种路径的权衡

这是一个关键的架构决策。答案是:两种方案都存在,但使用(轻量级)LLM的方案正成为主流,因为它能更好地平衡成本与效果。

  1. 传统规则方案(早期/简单场景):

    • 做法:通过if-else、关键词、正则表达式判断。
    • 优点:速度极快、成本为零、完全可控。
    • 缺点:泛化能力差,无法理解复杂、模糊的用户表达,维护成本高。
  2. 使用LLM的方案(当前主流):

    • 做法:通常不是粗暴地将全部工具描述拼给LLM(Token成本高),而是采用更高效的方式:
      • 路径A(检索+LLM过滤):先通过向量检索快速从上百个工具中召回Top N个候选工具,再将这些候选工具的描述交给一个轻量级、快速的LLM(如GPT-3.5-Turbo)做最终筛选或分类。这是精度和成本的绝佳平衡。
      • 路径B(直接LLM分类):对于工具总数不多(例如少于50个)的场景,也可以直接将用户输入和工具分类描述交给小模型判断。
    • 优点:泛化能力强,能理解用户的各种自然语言表达,准确率高。
    • 结论:在专业的Agent系统中,意图识别层引入一次轻量级LLM调用,被认为是“值得的成本投入”,因为它能从根本上提升主流程的成功率,从整体上优化体验和成本。
5.4 复杂任务中的LLM调用循环:为何需要“两次”及以上的思考

在复杂任务处理中,你观察到的“至少两次LLM调用”的循环,是AI Agent从“理解”跨越到“执行”并最终“交付”的关键机制。这个 LLM → 工具执行 → LLM → ... 的链条,并非设计冗余,而是职责分离与工作流完整的必然要求。

为何需要多次LLM调用?

我们可以将一次完整的复杂任务分解为三个核心阶段,其工作流与数据转换过程如下图所示:

第三阶段: 综合与交付

第二阶段: 执行

第一阶段: 理解与规划

“用户输入
(自然语言)”

“第一次LLM调用
(指挥官)”

“输出: 结构化指令
(如 JSON Action)”

“系统执行工具
(代码/API)”

“输出: 原始结果
(如 数据、状态码)”

“第二次LLM调用
(分析师与发言人)”

“输出: 最终回答
(自然语言)”

这个流程的必要性,根植于每次调用不可替代的独特价值:

  1. 第一次调用:“指挥官”的价值(理解与规划)

    • 核心任务:将模糊、复杂的用户自然语言指令,翻译成明确、可执行的结构化计划。这本身就是一个高级的推理和决策过程。
    • 输出:决定调用哪个工具、参数是什么,在ReAct模式下还包括下一步的“思考”。
    • 不可替代性:只有LLM具备深度理解开放世界指令并做出初步规划的能力。系统代码无法直接“理解”用户意图。
  2. 第二次调用:“分析师与发言人”的价值(综合与交付)

    • 核心任务:将工具返回的原始、冰冷、非人性化的数据(如JSON、数据库记录、API响应码),转化、综合、组织成连贯、友好、有价值的自然语言回答。
    • 关键动作:
      • 信息综合:当任务涉及多个工具时(如先查天气再规划行程),LLM需要将多个结果融合成一个连贯叙述。
      • 推理与洞察:基于数据进行简单推理(如“因为销量增长了30%,所以建议增产”)。
      • 格式化与对齐:使回答符合对话历史、用户偏好及系统设定的语气风格。
    • 不可替代性:直接向用户抛出一段{“product”: “A”, “sales”: 10000}的JSON是糟糕的体验。LLM在此充当了至关重要的“人机界面”角色。

简单来说,第一次调用解决“做什么”,第二次调用解决“怎么说”。 对于多步骤任务,这个“规划-执行-总结”的循环可能会重复多次,形成更长的链条。

关于优化与成本的讨论

虽然多次调用增加了成本与延迟,但这是实现复杂功能的基础。优化的目标不是盲目减少调用次数,而是 “让每次调用都更具价值,并避免不必要的调用” 。前沿优化策略主要围绕以下三个方向展开:

优化方向具体策略预期效果
流程优化采用更高效的推理框架:如 Plan-and-Execute 让强大的LLM一次生成详细步骤计划,然后由廉价执行器按步执行,减少主LLM的反复调用。减少总调用次数,尤其是昂贵大模型的调用。
模型优化大小模型分工:意图识别、简单回复用轻量模型(如GPT-3.5-Turbo);深度规划、复杂生成用重型模型(如GPT-4)。此即 “Cascading” 或 “模型级联” 技术。显著降低单次任务平均成本。
架构优化结果缓存与模板化:对常见、确定性的查询(如“查询A产品的标准参数”),将“工具结果→最终回答”的映射固化,或缓存LLM生成的答案,跳过第二次调用。对特定高频任务实现近零延迟响应。
总结

因此,你对“至少需要两次LLM调用”的理解完全正确且深刻。这并非系统的低效,而是其能力强大的体现。它标志着AI Agent不再是简单的“问答机”,而是一个能够主动规划、与真实世界交互、并从交互中学习合成新知识的智能体。

未来Agent的智能化竞赛,将不仅是比拼核心LLM的能力,更是优化这一“思考-行动”循环效率的工程竞赛。 如何在保证任务完成质量的前提下,通过精妙的架构设计减少昂贵LLM的调用、降低延迟,是提升Agent实用性和经济性的关键。目前,Plan-and-Execute 模式与 大小模型分工 策略,正成为平衡性能与成本的主流选择。

5.5 RAG上下文管理:从“堆砌”到“精炼”的策略矩阵

对于RAG应用,上下文管理的目标是以最小成本提供最相关信息。以下是围绕检索流程的优化策略矩阵:

优化环节核心策略目的与效果推荐技术/工具
检索前
(Query阶段)
查询重写/扩展:用LLM基于对话历史重写问题,使其更准确。提升查询意图的清晰度。LangChain的 QueryTransformer
元数据过滤:根据文档来源、日期等属性预先筛选。缩小检索范围,提升相关性。向量数据库(如Weaviate, Pinecone)的过滤功能。
检索中
(Retrieval阶段)
混合检索:结合关键词(召回全)与向量检索(语义准)。兼顾召回率与准确率。LangChain的 EnsembleRetriever
分层检索:先检索粗粒度文档,再在其内部检索细粒度片段。提升精度,控制Token数。LlamaIndex的 SentenceWindowNodeParser
检索后
(Post-processing)
重新排序:用小模型对召回结果二次打分排序。让最相关文档排在最前。Cohere的 rerank API, LangChain的 LLMChainFilter
上下文压缩/提炼:用LLM从长文档中提取与问题最相关的片段。直接节省核心Token,是王牌策略。LangChain的 ContextualCompressionRetriever
系统级对话记忆摘要:将多轮对话总结成要点,替代原始历史。避免历史上下文无限膨胀。自定义摘要链或使用框架内存模块。
缓存机制:对常见问题缓存答案或上下文片段。减少重复检索与计算,提速降本。Redis, 或LangChain的缓存组件。

其核心理念是:将上下文视为宝贵资源,通过“检索前过滤+检索后精炼”的组合拳,确保最终交付给LLM的,是信息密度最高、相关度最强的“弹药”,从而以最小成本激发LLM的最大效能。


总结

通过对工具精选、意图识别、LLM调用循环和RAG优化的深入剖析,我们可以看到,现代AI Agent的成熟不仅体现在宏观架构(MCP/Skill)上,更依赖于这些微观工程实践的精雕细琢。让强大的LLM在清晰、精简、高相关性的信息和工具环境中工作,是构建高效、可靠、实用Agent的唯一路径。 这些实践共同构成了Agent从“玩具”走向“工具”的技术基石。

(本文是基于与deepseek的对话总结生成,其中包含了AI技术讨论与行业实践整理而成,旨在梳理核心脉络与解决方案,纯AI总结,自用。)

Logo

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

更多推荐