
最近不少读者在后台问我百度智能云组织调整的新闻到底该怎么看MaaS 划入基础设施、Agent 独立成军这两句话分开看都懂合在一起却容易让人犯迷糊。正好借这个话题我把 MaaS 和 Agent 这两条技术线完整拆一遍讲清楚它们是什么、彼此是什么关系、对开发者意味着什么以及如果想要转 Agent 开发应该按什么路线准备。就算你平时只用云服务器不碰大模型这篇文章也能帮你理解云上 AI 开发范式正在发生的变化。1. 背景一次组织调整背后的技术演进信号1.1 消息本身说了什么根据公开报道消息称百度智能云对平台产品事业部进行了拆分调整核心变化有两个MaaS 相关方向被划入基础设施部门。Agent 相关方向独立出来单独成军。需要说明的是这属于组织架构调整消息最终以官方正式信息为准。不过从技术演进角度看这两个方向本来就是当前云厂商布局的重点无论组织怎么变MaaS 和 Agent 都是开发者绕不开的话题。为什么这么说因为组织架构调整往往是业务重心的映射。MaaS 下沉到基础设施说明模型能力正在变成像计算、存储、网络一样的基础资源Agent 独立成军说明智能体已经从前沿概念走到了需要专门团队打磨产品的阶段。1.2 从 IaaS、PaaS 到 MaaS云服务的演进简史要理解这次调整先要把云服务的分层体系回忆一遍。最早大家接触的是 IaaS基础设施即服务云厂商提供虚拟机、硬盘、带宽开发者自己装系统、装中间件。后来有了 PaaS平台即服务云厂商把数据库、消息队列、容器编排这些中间件也托管了开发者只管写业务代码。再往上还有 SaaS软件即服务连业务软件都直接订阅使用。大模型爆发后出现了一个新的服务形态MaaSModel as a Service模型即服务。云厂商把大模型的推理能力、API、配套工具都封装好开发者不用部署 GPU 集群不用自己维护模型权重直接调用接口就能完成文本生成、对话、Embedding、多模态理解等任务。这里有个容易混淆的点MaaS 并不能简单放进原来的 IaaS、PaaS、SaaS 任意一层。它底层依赖 GPU 算力可以看成 IaaS中间有模型部署和推理框架可以看成 PaaS对外提供的是语义理解能力更接近 SaaS。所以业界经常把它单列为一种云服务模式。1.3 MaaS 为什么会被划入基础设施如果从开发者的使用习惯来看MaaS 和 IaaS 确实越来越像。想象一个传统的后端服务。你要上线一个功能只需要在云控制台开一台虚拟机、申请一个数据库实例然后部署代码。你不会关心虚拟机运行在哪台物理机上也不会关心数据库是如何做高可用的。MaaS 也是同样的逻辑。你需要一个对话能力开通一个模型服务的 API设置好 API Key然后调用接口。你不需要关心模型权重存在哪、推理用了几张卡、请求被调度到哪个节点。模型能力变成了一张“API 卡”用多少付多少这是典型的资源化特征。所以把 MaaS 划入基础设施技术上是自洽的模型推理能力正在被当成一种基础资源来供给。对开发者来说这意味着以后云平台上获取大模型能力会像获取存储、数据库一样简单不需要自己搭建模型推理环境。1.4 Agent 独立成军意味着什么Agent 和 MaaS 相反它不是基础资源而是需要复杂业务编排的应用层能力。一个 Agent 要用到模型推理但不只是调用一次模型 API。它要理解用户目标拆解任务调用外部工具记忆上下文处理中间错误最后把结果反馈给用户。这里面涉及规划、记忆、工具调用、安全控制、可观测性等一系列问题。如果 MaaS 是“水电煤”Agent 就是“整套智能家居系统”。水电煤可以放在基础设施部门统一供给但智能家居系统需要专门的产品和研发团队去打磨。所以“Agent 独立成军”这个信号很可能说明云厂商认为智能体已经进入了工程化和产品化的阶段需要独立团队来建设。对整个行业来说这也会加速 Agent 开发工具链和平台化服务的成熟。2. MaaS 概念拆解模型即服务到底怎么运作2.1 什么是 MaaSMaaS 的全称是 Model as a Service中文常翻译为“模型即服务”。它的核心思想是把大模型的训练、部署、推理、运维全部封装成服务开发者只通过 API 与模型交互。在没有 MaaS 的年代团队要做 AI 应用往往要先准备 GPU 机器安装 CUDA、PyTorch下载开源模型权重再写推理服务。这一套流程涉及硬件采购、环境配置、性能优化、弹性扩缩容无论是成本还是时间都不是小团队能承受的。MaaS 出现后这个过程被极大简化。你只需要完成三步在云平台开通模型服务。获取 API Key。调用接口传入参数得到模型输出。模型本身是否更新、推理服务器是否扩容这些都由 MaaS 平台处理。具体能力层面MaaS 通常包括大语言模型的对话补全Chat Completion。文本向量化Embedding。多模态理解与生成。Prompt 模板与提示词管理。模型效果评估与在线观测。内容安全审核。不同云厂商的 MaaS 产品名称和能力边界有差异但整体框架是接近的。2.2 MaaS 与 IaaS、PaaS、SaaS 的边界很多时候 MaaS 被误认为只是 PaaS 的一个子集其实两者有明显区别。服务模式核心交付物开发者关注点示例IaaS计算、存储、网络系统环境、网络规划云服务器、对象存储PaaS应用运行平台业务代码、中间件配置容器服务、云数据库SaaS完整业务软件业务流程、使用配置在线文档、CRMMaaS模型推理能力Prompt、模型参数、效果调优大模型 API、Embedding 服务PaaS 提供的是应用运行的“土壤”你在上面部署代码、连接数据库。MaaS 提供的是“大脑”的调用能力你不需要部署模型直接发送输入就能拿到智能输出。一个比较直观的理解传统的 PaaS 帮助你部署你的代码MaaS 帮助你调用别人的“智力”。两者可以组合使用但定位不一样。2.3 MaaS 平台背后的核心技术MaaS 平台看起来只是一个 API背后其实有一整套工程系统。第一层是 GPU 算力调度。大模型推理需要大量算力平台要通过资源池化、按需调度来提高 GPU 利用率降低成本。第二层是推理优化。包括模型量化、蒸馏、批处理加速、缓存系统等。同一个模型推理框架优化得好延迟和成本会有数倍差距。第三层是模型管理。MaaS 平台往往接入了多个模型有闭源模型也有开源模型。开发者可能需要切换模型、对比效果、做 A/B 测试这些都需要模型管理模块支撑。第四层是安全与合规。模型输入输出需要内容审核API 调用需要身份认证和限流控制。如果按“基础设施”的视角来看前三层都是资源底座第四层是服务边界。MaaS 划入基础设施部门本质上就是把这些模型服务底层能力统一纳入云资源体系进行管理。2.4 开发者怎么调用 MaaS一个通用示例下面用一个极简的 Python 示例演示 MaaS 的调用方式。这里不绑定具体云厂商以通用 HTTP 接口思路实现你只需要替换成自己使用的云平台 endpoint 和 API Key 即可。# 文件路径maas_demo.py import os import requests # 从环境变量读取配置避免把密钥写死在代码里 API_KEY os.environ.get(MAAS_API_KEY) ENDPOINT os.environ.get(MAAS_ENDPOINT) def call_maas(prompt, modeltext-model, temperature0.7): headers { Authorization: fBearer {API_KEY}, Content-Type: application/json } payload { model: model, messages: [ {role: user, content: prompt} ], temperature: temperature } resp requests.post(ENDPOINT, jsonpayload, headersheaders, timeout30) resp.raise_for_status() data resp.json() return data[choices][0][message][content] if __name__ __main__: result call_maas(请用一句话介绍 MaaS) print(result)这段代码虽然是教学示例但它展示了 MaaS 调用的核心动作构造请求体、携带身份凭证、发送 Prompt、解析返回结果。实际接入时你只需要按照所用云平台 SDK 的文档调整请求格式即可。3. Agent 技术拆解智能体开发到底学什么如果说 MaaS 是把模型的“算力”变成了基础设施那么 Agent 就是在这套基础设施上长出来的“应用大脑”。3.1 什么是 LLM AgentLLM Agent大模型智能体是一个以大语言模型为核心控制器能够感知环境、做出决策、调用工具并执行任务的人工智能系统。它和普通 API 调用的区别在于普通调用是一次性的“输入—输出”Agent 则是多轮的“感知—决策—行动”循环。比如你直接调用模型 API问“帮我查一下北京的天气”模型最多只能告诉你它没有实时数据。但一个 Agent 可以识别出“查天气”需要实时信息。生成一个工具调用请求调用天气 API。拿到天气 API 返回的数据。把数据组织成自然语言回复给你。这个“思考之后调用工具、得到反馈再总结”的过程就是 Agent 的核心行为模式工程上常称为 ReActReason Act模式。3.2 Agent 核心架构一个完整的 Agent 通常包含以下几个模块模块作用关键技术点规划Planning把目标拆解成子任务任务分解、反思、自我纠错记忆Memory保存历史信息和长期知识短期记忆、长期记忆、向量检索工具Tools与外部系统交互API 调用、代码执行、MCP 接入执行Execution调用模型和工具完成动作循环控制、异常处理、超时管理安全Safety限制 Agent 的权限和风险行为角色权限、白名单、人工审核需要注意的是很多初学者会把 Agent 等同于“用 LangChain 调一下模型”其实那只完成了规划与执行的最小闭环。真正的工程化 Agent 还要解决记忆衰减、工具调用失败、上下文过长、安全边界等实际问题。3.3 Agent 框架与编排现在社区里有不少 Agent 框架它们的核心价值在于把上面这些模块封装成可复用的组件让开发者不用从零实现 ReAct 循环。常见的框架形态包括通用编排型框架提供 Chain、Agent、Tool 等抽象比如 LangChain 及其相关生态。多智能体框架支持多个 Agent 协作比如 AutoGen 等。平台型产品云厂商提供的 Agent 开发平台通常弱化代码强调可视化编排。轻量工具型框架以代码生成为核心比如各类 Coding Agent。选型上我的建议是如果你的项目需要深度定制优先选择开源框架如果你是快速验证业务优先使用云平台提供的 Agent 服务如果你只是学习原理最好的方式是先手写一个最小 ReAct 循环再引入框架。多 Agent 设计也是最近面试和工程实践中经常提到的方向。主从模式是常见的一种一个主 Agent 负责任务拆分和决策多个 Sub Agent子智能体负责具体执行。在最新的多 Agent 设计里主从模式本质上会把 Sub Agent 当成一种特殊的 Tool 来调用即主 Agent 在规划时认为“需要子智能体时就去调用它”。这个设计思路的好处是复用统一的工具调用协议降低主 Agent 的决策复杂度。3.4 Agent、Skill、MCP 的区别这三个概念经常混在一起需要区分清楚。MCPModel Context Protocol模型上下文协议是一种标准化协议用于让大模型应用连接外部数据源和工具。它解决的是“模型如何调用工具”的通信问题。你可以把它理解成 USB-C 接口标准只要工具方实现了 MCP Server模型应用侧用 MCP Client 就能即插即用。Skill技能通常指 Agent 可复用的能力包比如“数据分析技能”“文件处理技能”。一个 Skill 内部可能包含若干工具、提示词模板和执行逻辑。Skill 与 MCP 的区别在于MCP 偏重于工具层的通信协议Skill 则偏重于应用层的能力封装。Agent 则是完整的执行单元它负责规划、决策、编排Skill 和 MCP 都是它的“零件”。用一个比喻来说Agent 是员工Skill 是员工掌握的技能证书MCP 是员工连接公司内部系统的标准接口。3.5 Agent 记忆设计记忆是 Agent 工程化中非常容易忽略但又极其重要的模块。Agent 的记忆可以分成两层短期记忆当前会话内的上下文通常通过把历史消息塞进模型上下文窗口来实现。短期记忆的问题在于窗口有限塞太满会导致响应变慢、成本上升、注意力分散。长期记忆跨会话保存的知识通常需要外部存储支撑比如向量数据库。Agent 先把信息写入向量库后续遇到相关问题时通过相似度检索出相关内容再插入到 Prompt 中。实际工程设计时需要根据业务场景决定哪些信息必须存短期、哪些可以沉淀到长期。比如客服 Agent用户的当前诉求应该保持在短期记忆用户的历史订单偏好则应该从长期记忆检索。4. 从组织调整看开发者的技术选型4.1 对应用开发者的影响MaaS 划入基础设施对应用开发者是一个利好信号。这意味着大模型能力会更像云资源一样稳定、廉价、易获得。你不需要花精力搭建推理环境可以更专注于业务层。Agent 独立成军则给开发者发出了另一个信号智能体开发正在成为一条独立的技术赛道。后端开发者可以把自己的服务通过工具/API 的方式暴露给 Agent前端开发者可以做 Agent 交互界面算法工程师可以优化模型效果运维工程师可以关注 Agent 的可观测性与安全审计。如果你是一个传统后端开发者我的建议是先把 MaaS 的 API 调用玩熟再学 Agent 的编排原理。前者是基础后者是进阶。4.2 Agent 开发学习路线根据我观察到的社区热度和企业招聘情况Agent 开发的学习路线可以这样规划第一阶段大模型基础。了解 Transformer 的基本概念掌握 Token、上下文窗口、温度系数、System Prompt 等基础概念。第二阶段Prompt 工程。学习如何写清楚角色、目标、约束、输出格式。 Prompt 写不好Agent 行为一定不稳定。第三阶段API 调用。至少调用过一家 MaaS 平台的对话模型和 Embedding 模型接口理解请求返回结构。第四阶段工具调用。掌握 Function Calling 或 Tool Use 的机制让模型能够输出结构化工具调用参数。第五阶段Agent 框架。从手写 ReAct 开始再使用主流框架做编排理解 Chain、Agent、Tool 的抽象。第六阶段工程化。学习记忆管理、安全控制、可观测性、成本优化、多 Agent 协作。第七阶段应用落地。选择一个垂直场景比如智能客服、数据分析、自动化运维日志分析做完整项目。Coding Agent编程智能体也是近年非常火的方向比如通过自然语言生成代码、分析仓库结构、自动化修复问题。这类 Agent 对工程能力要求更高但也是就业市场上的热门方向。4.3 常见的 Agent 面试考察方向结合目前社区里流传的 Agent 面经面试官通常关注以下几类问题概念类ReAct 是什么Agent 和 Chain 有什么区别多 Agent 主从模式的本质是什么代码类手写一个工具调用循环解释工具调用的参数如何生成。工程类上下文超长怎么办Agent 工具调用超时怎么处理如何防止 Agent 执行危险操作场景类设计一个客服 Agent设计一个日志分析 Agent如何通过 ES REST API 让 Agent 智能分析日志。这些问题没有标准答案但如果你亲手实现过一个最小 Agent大部分问题都能答到点上。5. 最小可运行的 Agent 实战示例下面我们绕过框架手写一个最小可运行的 Agent 核心循环。示例不绑定具体云厂商模型调用部分用抽象函数代替你可以在真实项目中替换为任意 MaaS 接口。5.1 设计思路这个最小 Agent 的流程如下用户输入一个任务。Agent 调用“模型”生成响应。如果响应中带有工具调用指令就执行对应工具把结果返回给模型让模型继续推理。如果响应中没有工具调用指令说明任务完成输出最终结果。为了演示这里用一个“伪模型”代替真实大模型它根据任务内容判断是否需要调用天气工具并返回简单的工具调用结构。真实场景中这个函数应该替换为对 MaaS API 的调用。5.2 完整代码# 文件路径simple_agent.py import json import requests import os # ---------- 模拟模型接口 ---------- # 在实际项目中把它替换为对 MaaS / 大模型 API 的调用即可。 def mock_model(messages): 根据用户输入模拟模型输出教学演示用。 last_user messages[-1][content] if 天气 in last_user: return { tool_calls: [ { name: get_weather, arguments: {city: 北京} } ] } elif 结果 in last_user or 温度 in last_user: return { content: 北京今天 25 度晴天适合出门。 } else: return { content: 我是最简单的 Agent目前只能演示工具调用。你可以问我北京天气。 } # ---------- 工具定义 ---------- def get_weather(city: str) - str: 模拟获取天气的工具。真实场景可替换为 HTTP 调用。 # 这里只是演示数据真实项目应该请求天气数据服务 return f{city}晴25 摄氏度微风。 # 工具注册表 TOOLS { get_weather: get_weather, } # ---------- Agent 核心循环 ---------- def run_agent(user_input: str, max_steps: int 3): messages [ {role: system, content: 你是一个有帮助的 Agent。}, {role: user, content: user_input} ] for step in range(1, max_steps 1): print(f\n[Step {step}] 调用模型...) response mock_model(messages) # 情况 1模型返回最终答案 if content in response and not response.get(tool_calls): print(f[Answer] {response[content]}) return # 情况 2模型请求调用工具 tool_calls response.get(tool_calls, []) for call in tool_calls: tool_name call[name] args call[arguments] print(f[Tool] 调用 {tool_name}参数{args}) if tool_name in TOOLS: tool_result TOOLS[tool_name](**args) else: tool_result f未知工具{tool_name} # 把工具结果作为一条 assistant 消息加入上下文 messages.append({ role: assistant, content: json.dumps(response, ensure_asciiFalse) }) messages.append({ role: tool, tool_call_id: tool_name, content: tool_result }) print(\n[Warning] 达到最大执行步数流程结束。) if __name__ __main__: run_agent(北京天气怎么样)5.3 运行与验证在命令行执行python simple_agent.py预期输出大致如下[Step 1] 调用模型... [Tool] 调用 get_weather参数{city: 北京} [Step 2] 调用模型... [Answer] 北京今天 25 度晴天适合出门。从输出可以看到Agent 在第一轮没有直接回答而是识别出“需要查天气”调用工具拿到结果后第二轮才给出完整回答。这个循环就是 Agent 与普通 API 调用的本质区别。5.4 从示例到真实项目要让这个示例真正可用你需要完成以下替换把 mock_model 替换为 MaaS 平台的大模型接口开启工具调用Function Calling能力。把 get_weather 替换为真实的数据服务 API。增加错误处理比如工具抛异常时如何反馈给模型。增加最大步数和超时控制避免 Agent 死循环。当你完成第 1 步之后你会发现真实模型返回的 tool_calls 格式和你所用平台强相关需要根据官方文档调整解析逻辑。6. 常见问题与排查思路6.1 Agent 执行超时或无响应很多开发者在消息队列或 API 网关里会看到类似“the agent execution provider did not respond in time”的报错。这个报错本身可能是具体平台的自定义错误但排查思路是通用的。问题现象常见原因解决思路Agent 长时间无响应模型推理延迟过高检查模型服务的负载必要时降低上下文长度Agent 执行超时工具调用阻塞给每个工具设置单独超时避免无限等待多步循环迟迟不结束模型反复调用同一工具增加最大步数限制检测重复工具调用并中止队列中任务积压Agent 并发度配得过高或过低根据模型 QPS 和工具响应时间调整并发参数排查时先观察日志当前停在哪一个模块是模型服务慢还是工具 API 慢还是循环逻辑有问题把问题定位到具体环节后再做优化。6.2 工具调用失败工具调用失败是 Agent 开发中最常见的坑。问题现象常见原因解决思路模型返回的 JSON 参数解析失败模型输出了不合法 JSON增加 JSON 格式校验用宽松解析策略工具名不在注册表中模型幻觉生成了不存在的工具在 Prompt 中明确工具列表并做白名单校验工具接口报 500业务系统异常让 Agent 捕获异常后重试或告知用户工具返回数据过大响应塞爆上下文对工具结果做截断或摘要这里要强调一个工程原则绝不要让 Agent 直接操作真实生产系统而不加保护。工具层应该做权限校验、参数白名单、操作确认。6.3 上下文丢失与记忆混乱问题现象常见原因解决思路Agent 忘了用户最初的诉求上下文窗口被中间工具结果挤占把用户原始目标固定在 System Prompt 中多轮对话答非所问短期记忆压缩策略不合理优先保留最近消息和关键信息丢弃中间噪音长期记忆检索不到相关内容向量检索相似度阈值过高调整检索参数增加关键词过滤记忆互相矛盾旧记忆被覆盖但未被识别增加记忆版本号或时间戳7. 最佳实践与工程建议做 Agent 开发不能只追求“能跑通”还要考虑生产环境的安全、成本、可观测性。7.1 安全边界最小权限与人工审核这是 Agent 工程化最重要的一条原则。建议如下工具层实现最小权限Agent 只能调用完成当前任务所必需的工具。高危操作删除、转账、发布、下线必须经过人工确认。对 Agent 可以访问的外部资源做白名单限制。所有工具调用链路都记录审计日志方便事后追溯。7.2 成本与性能控制多步 Agent 调用模型的次数远高于单次 API 调用成本可能成倍增长。常见的控制手段在任务简单时使用小模型复杂任务才切大模型。增加语义缓存相同问题直接返回缓存结果。对工具返回的冗长内容做摘要提取减少 token 消耗。设置单次任务的模型调用预算超过预算后降级或终止。7.3 可观测性日志与轨迹追踪Agent 的“黑盒”程度比普通接口高因为中间有多次模型决策。生产环境建议至少记录每次模型请求的完整输入输出。每次工具调用的名称、参数、返回结果。每步消耗的 token 数量与耗时。最终答案与第一次设想是否一致。有了这些数据你才能在 Agent 出错时快速回放整个决策链。7.4 架构演进从单体到多 Agent初期项目不建议直接上多 Agent。先做一个单体 Agent把工具层、记忆层、安全层打磨好。当任务类型确实差异很大才考虑拆成多个 Agent让主 Agent 把子 Agent 当作特殊工具来调度。多 Agent 模式下要特别注意两个问题上下文隔离子 Agent 的执行细节不应该全部暴露给主 Agent只返回必要的结果摘要。死循环控制主 Agent 与子 Agent 之间可能出现相互等待必须设计总超时和最大迭代数。8. 总结与行动建议这篇文章从一条组织调整消息出发把 MaaS 和 Agent 两条技术线完整梳理了一遍。回到开头的消息MaaS 划入基础设施意味着大模型能力正在变成云平台的基础资源Agent 独立成军意味着智能体应用正在形成独立的技术栈和工程体系。对于还在观望的开发者我建议你从本周开始做三件事第一把 MaaS 接口调通真实感受一次大模型 API 的请求与返回。第二手写一个最小 Agent 循环理解工具调用与多轮推理的过程。第三尝试接入一个真实的外部工具比如查天气、查数据库、做日志分析让 Agent 完成一个完整任务。如果你已经具备一定的工程基础下一步的方向就是安全、记忆、多 Agent 协作和可观测性。这些方向在未来的 Agent 项目里只会越来越重要。建议先把文章里的代码复制到本地跑一遍再结合官方文档替换成自己用的 MaaS 服务。动手跑通一次比看十篇文章都管用。如果这篇文章对你有帮助可以收藏备用后面做 Agent 项目时随时回来对照。