
文章目录一、为什么"能跑"和"能上线"是两回事1.1 一个残酷的现实1.2 原型 vs 生产:一张表看懂差距二、Agent 部署模式详解2.1 三大部署模式概览模式一:客户端托管 Agent(Client-Hosted)模式二:托管 Agent(Foundry Agent Service / Hosted Agents)模式三:Agent 工作流(Agent Workflows)2.2 三种模式的架构对比三、Agent 完整生命周期管理3.1 生命周期不是一次性的 push3.2 各阶段详解阶段一:创建/编写(Create / Author)阶段二:版本化(Version)阶段三:离线评估(Evaluate Offline)⭐ 关键环节阶段四:部署(Deploy Hosted)阶段五:在线观测(Observe Online)四、可观测性体系(Observability)4.1 核心原则:无法观测就无法运营4.2 OpenTelemetry 集成实践4.3 Span 属性的价值五、扩展策略(Scaling Strategies)5.1 为什么扩展 Agent 与扩展 Web API 不同5.2 技术一:无状态请求处理5.3 技术二:模型路由(Model Routing)5.4 技术三:响应缓存(Response Caching)5.5 技术四:并发控制和背压六、成本优化策略6.1 成本由 Token 主导6.2 评估门禁与成本控制的关系七、企业级部署考量7.1 治理(Governance)7.2 人工审批(Human-in-the-Loop)7.3 MCP 生产环境集成八、实战案例:生产级客户支持 Agent8.1 完整组装九、冒烟测试(Smoke Tests)9.1 为什么需要冒烟测试9.2 冒烟测试管道9.3 测试目录结构9.4 测试金字塔十、常见问题解答(FAQ)Q1:生产 Agent 中"模型"占多大比例?Q2:何时选择托管 Agent 而非客户端托管?Q3:为什么可扩展的 Agent 必须在自己的进程内存中是无状态的?Q4:模型路由解决什么问题,它与评估有什么关系?Q5:什么是"评估门禁",它位于生命周期的哪个位置?Q6:为什么在生产中将 MCP Server 视为不受信任的边界?Q7:哪个单一更改通常对生产 Agent 成本影响最大,为什么?Q8:像 `customer.tier` 和 `routed.model` 这样的 span 属性在可观测性中起什么作用?一、为什么"能跑"和"能上线"是两回事1.1 一个残酷的现实在前面的文章中,我们学会了在 Jupyter Notebook 中构建各种 AI Agent:✅ 能调用工具✅ 能做 RAG 检索✅ 能多 Agent 协作✅ 能自我反思但是——当你的老板问:"这个 Agent 能不能支撑每天 10 万次请求?出了问题怎么排查?成本怎么控制?"的时候,你会发现:Notebook 里跑通的 Agent,距离生产环境还差着 80% 的工程工作。1.2 原型 vs 生产:一张表看懂差距关注维度原型阶段生产环境托管方式在你的 Notebook 里运行作为托管服务运行,版本化管理身份认证你的az logintokenManaged Identity