一、部署概述:部署什么、达到什么效果
本文要部署的对象,是一类基于图编排框架构建的智能体应用。此类应用通常采用Python异步技术栈开发,核心思想是将一次复杂任务的执行过程组织为一张状态图:图中的节点负责调用大模型、执行工具或处理业务逻辑,边负责决定执行路径,全局状态在节点之间流转。与“一次请求、一次返回”的普通接口服务不同,这类应用通常具备以下能力,也因此带来特殊的部署要求:
- 流式输出:支持按全量状态、按节点增量、按消息乃至Token粒度实时推送执行过程,让用户看到“逐字生成”的体验;
- 人在环路:在执行敏感操作前通过中断机制暂停运行,等待人工审查输入后再恢复执行;
- 状态持久化:通过检查点机制保存执行进度,支持跨请求、跨实例重启的会话恢复;
- 多智能体协作:主智能体可按需创建具备独立上下文和工具集的子智能体,处理复杂子任务;
- 上下文压缩:通过Token监控与阈值触发的历史压缩策略,保证长对话不超出模型上下文窗口。
部署完成后,应用应达到以下效果:服务可通过域名被终端用户或上游系统稳定访问;流式接口能实时逐字输出;中断后的人工输入能正确恢复执行;实例重启或滚动更新后进行中的会话不丢失;监控告警覆盖资源与应用两个层面。
本文适合参与该类应用上线全过程的读者:负责编码与打包的开发者、负责环境与网络配置的运维人员、负责资源规划与容灾设计的架构师,以及需要评估上线风险的技术负责人。
二、部署场景与运行形态
在动手部署前,先明确应用的运行形态,因为它直接决定资源与网络设计:
- 实时对话型应用:以流式输出为核心体验,要求接入层支持长连接与低缓冲转发,重点保障首字延迟与输出连续性。
- 审批审查型应用:涉及删除文件、执行变更等敏感操作,必须启用中断与人工确认流程,重点保障检查点数据的可靠存储。
- 长任务自动化应用:主智能体通过任务清单和子智能体拆解执行长流程,任务可能运行数分钟以上,重点保障超时配置与异步并发能力。
- 长会话助手类应用:对话轮次多、历史长,依赖上下文压缩机制,重点保障Token统计准确与压缩节点的稳定运行。
三、架构与组件拆解
一个生产可用的智能体应用部署,通常由以下六层组成:
- 接入层:负载均衡、反向代理与TLS证书 termination。该层是流式体验的第一道关口,若缓冲策略或空闲超时配置不当,逐字输出会退化为一次性返回。
- 应用层:由支持异步协议的应用服务器承载编排运行时,内部运行事件循环,处理并发请求与流式推送。应用层应尽量保持无状态,以便水平扩展。
- 编排层:即状态图本身,包括节点定义、工具节点、子图、中断与恢复逻辑、动态路由指令等。这一层随代码发布,部署时应保证图结构与检查点数据结构的兼容性。
- 状态层:检查点存储。开发验证阶段可使用进程内存储,但生产环境必须替换为外置共享存储,否则实例重启后所有中断中的会话都无法恢复。
- 模型服务层:访问大模型推理服务的出网链路、密钥管理与限流重试策略。这是应用最重要的外部依赖,网络策略和密钥配置错误是部署失败的高发原因。
- 可观测层:日志、指标、链路追踪与告警。智能体应用的执行链路长、异步环节多,缺乏追踪手段时问题几乎无法定位。
若选择公有云环境,可使用百度智能云提供的云服务器、容器服务、负载均衡、对象存储、日志服务与监控告警等通用产品能力,将自建组件替换为托管服务,降低部署与运维负担。
四、前置准备清单
- 资源规划:该类应用属于异步I/O密集型,CPU消耗中等、内存消耗中等,但并发流式连接会同时占用连接与内存。建议从4核8GB规格起步压测,按“峰值并发连接数 × 单会话内存占用”估算容量,并预留30%左右余量。
- 运行时与依赖:锁定语言版本与依赖清单,在构建阶段生成离线依赖包或使用内网源安装,保证开发、测试、生产三套环境的依赖完全一致。
- 配置与密钥:模型服务地址、密钥、检查点存储连接串等敏感信息一律通过环境变量或密钥托管服务注入,严禁写入代码包;不同环境使用不同配置集,做到参数隔离。
- 网络策略:出方向放行到模型服务与外部存储的访问;入方向仅开放应用端口,交由接入层对外;明确反向代理、负载均衡的读写超时与空闲超时,使其大于单轮最长生成时间。
- 数据与存储:提前初始化检查点存储并验证连通性;制定日志与会话数据的保留周期和清理策略,避免存储被长期会话无限占用。
五、部署流程
按以下顺序执行,每一步都有其依赖关系,不可跳过:
- 环境初始化:创建云服务器或容器实例,安装运行时,配置时区与时间同步。时间不同步会导致Token有效期校验、日志排序出现异常。
- 依赖安装:创建独立虚拟环境,按锁定清单安装依赖,并通过导入核心模块的方式验证安装完整性。
- 配置注入:区分开发、测试、生产三套配置,通过环境变量注入密钥与连接信息,启动前用配置自检逻辑校验必填项。
- 持久化存储接入:将检查点后端从进程内存储切换为外置共享存储,执行一次写入、读取、删除的连通性验证。这一步是人在环路功能可用的前提。
- 应用启动:以多进程模式启动异步服务,进程数与CPU核数匹配;同时暴露健康检查接口,供接入层与运维探活。
- 流式链路配置:关闭各层响应缓冲,调大读写超时,必要时开启心跳保活。可参考如下通用配置示意(字段名按实际框架调整):
server: workers: 4 # 进程数与CPU核数匹配 timeout_read: 300 # 流式读超时,大于单轮最长生成时间 keep_alive: 75 # 长连接保活stream: buffering: off # 关闭逐层缓冲,保证逐字输出checkpoint: backend: external # 生产环境使用外置共享存储 session_ttl: 7d # 会话检查点保留周期compress: threshold: 0.9 # 上下文占用约90%时触发历史压缩 keep_recent: 20 # 压缩时保留的最近消息条数
- 接入层配置:绑定域名、安装证书、配置负载均衡与健康检查策略,灰度期可将权重切流控制暴露范围。
- 开放访问与验证:按第六节清单逐项验证后再正式放量。
六、上线验证
判断部署是否成功,应完成以下验证:
- 健康检查通过,实例状态稳定,日志无启动异常;
- 基础对话验证:发起一次同步请求,确认模型调用链路、密钥与工具执行正常;
- 流式验证:分别在消息级与Token级模式下观察输出,确认逐字实时推送、无攒批现象;
- 中断恢复验证:触发一次敏感操作中断,提交人工输入后确认流程恢复;随后重启应用实例,再次验证进行中的会话状态可从外置存储恢复;
- 多智能体验证:触发一次子智能体任务,确认其上下文隔离、工具权限与结果回传正常;
- 压测验证:模拟峰值并发流式连接,观察连接数、事件循环延迟与错误率是否在预期范围内。
七、常见问题与排查
| 现象 |
可能原因 |
排查思路 |
| 流式输出变成一次性返回 |
反向代理或网关开启响应缓冲 |
逐层关闭缓冲,先直连应用端口对比验证 |
| 中断后无法恢复 |
检查点仍存于进程内存,实例重启后丢失 |
切换外置存储,核对会话标识生成与传递是否一致 |
| 多会话状态串扰 |
会话ID未隔离或被复用 |
检查会话标识的生成、传递与校验逻辑 |
| 长对话报上下文超限 |
压缩阈值未生效或Token统计口径偏差 |
核对统计方式,下调阈值并检查保留策略 |
| 调用模型服务超时 |
出网策略未放行、密钥失效或触发限流 |
验证网络连通性、密钥有效期与配额 |
| 长连接提前断开 |
负载均衡空闲超时小于执行时长 |
调大超时或增加心跳保活机制 |
八、运维与优化
- 监控告警:重点采集活跃连接数、事件循环延迟、Token消耗速率、压缩触发频率、中断挂起数量与错误日志,任何一项持续异常都应触发告警。
- 容量与扩展:应用层保持无状态,会话状态全部落在外置检查点存储上,即可通过增加实例平滑扩容;扩容前先压测确认存储层不是瓶颈。
- 安全控制:密钥定期轮转并托管;敏感工具一律经过人工审查中断;对外接口启用身份认证与访问白名单;开启关键操作的审计日志。
- 成本控制:按压测结果右移规格,避免长期空载高配;对超期会话执行回收与存储生命周期管理;对低峰时段可缩容实例数量。
- 版本管理:新版本先灰度小流量;回滚时保留旧版本镜像与配置,特别注意图结构与检查点数据结构的兼容性,必要时在发布前完成存储结构迁移演练。
九、总结
部署图编排类智能体应用的关键,在于理解它与普通Web服务的差异:流式输出要求接入层低缓冲、长超时;人在环路要求检查点外置持久化;多智能体与上下文压缩要求并发隔离与Token治理。部署时按“环境初始化—依赖安装—配置注入—存储接入—服务启动—流式调优—接入发布—逐项验证”的顺序推进,上线后以监控告警、灰度发布、密钥轮转和容量治理为长期运维重点,即可让智能体应用在云上稳定、安全、可控地运行。