Agent 上生产:Demo 到生产之间隔着这五道坎
Demo 里的 Agent 调用工具像调函数:同步、幂等、一定成功。生产里这三条都不成立。
一、工具调用有副作用,不是函数调用
Demo 里没人关心超时和重试,生产里这三件事会翻车:
- 超时后重试可能已经执行过一次。外部接口 3 秒不返,你重试一次,第一次其实已经扣了款。所有有副作用的工具都要一个幂等键,外加一个"是否已执行"的查询入口。
- 返回体体积不受控。一次查询回两万行,塞进上下文直接吃光预算。分页、字段白名单、结果条数上限,写在工具层,不要指望模型自觉。
- 失败语义要分开。参数错、权限不足、超时,三种的重试策略完全不同:前两种重试只是烧钱。
判据:任何有副作用的工具,都能在日志里对上一个幂等键。做不到就先别上生产。
二、上下文是预算,不是容器
工具输出会淹没系统提示,这是 Agent 失控最常见的原因。给每次请求设硬预算,分三块管:
- 固定开销:系统提示加工具定义。这部分不该随任务动态拼装,工具越多越长,能用代码调用就别都塞成工具。
- 工具输出:按条数和字节双阈值裁剪。裁剪时保留"还有多少条未读",别硬切半句——半句话比没有更贵,因为它会被反复重读。
- 历史对话:滚动摘要加最近 N 轮原文。摘要要有触发水位,不要每次都做。
参考量级:本地记忆服务实测,启动注入 120 tokens、单次检索 57 tokens,长期挂在系统提示里的东西控制在几百 token 量级才有意义。记忆该按需检索,不该常驻。
三、凭据与权限:Agent 是个拿着长期钥匙的非人进程
Agent 的凭据泄露路径比人写的服务多好几条——它自己会调、会重试、会把入参写进日志。
- 最小权限:只给真正要调的接口,不要图省事给管理员。
- 短期凭据:用委托取临时密钥,别把长期 AK/SK 写进代码或环境变量。
- 审计留痕:谁、以什么身份、什么时候、调了哪个工具。
一个真实踩过的坑:Windows 服务以 LocalSystem 运行时读不到登录用户的凭据库,于是把令牌塞进了服务环境变量——那等于把密钥放进了所有管理员可读的地方。正确做法是令牌落文件,ACL 收紧到服务账户和 Administrators 两类主体。
四、复现不了,等于没有线上问题
一次 Agent 输出由模型版本、采样参数、上下文拼装顺序、工具返回顺序共同决定,缺任何一项都复现不出来。要留的东西:完整 prompt(含注入的上下文)、模型与参数、每次工具调用的入参出参、最终响应。
采样参数不固定时先固定——温度设 0、固定种子,再谈别的优化。评测集同理:没有固定种子的回归测试,测的是运气。
五、成本随步数放大,必须有硬闸
Agent 的成本 ≈ 步数 ×(系统提示 + 历史 + 工具输出)。步数是主要的失控变量,所以闸门要卡在步数上,不是卡在并发上:
- 单任务最大步数,超了转人工,别让它自己转圈。
- 单任务 token 预算,到线就收尾并说明。
- 工具结果按入参哈希缓存,重复调用不重复付费。
- 并发上限,防止一个死循环任务吃掉整个配额。
落到华为云上,这几件事都有现成能力:Agent 服务本体跑在函数工作流 FunctionGraph(事件驱动、按并发自动扩缩、执行记录可查),对外入口用 API 网关 APIG 做鉴权、限流和熔断;凭据放密码安全中心 DEW 的凭据管理服务 CSMS,配合 IAM 委托取临时密钥,避免长期密钥落在代码或环境变量里;工具调用链与 token 消耗进云原生观测中心 AOM 和日志服务 LTS 做指标与日志留存,异常按规则告警。
一表看穿
| 症状 | 先查什么 | 别急着做什么 |
|---|---|---|
| Agent 偶发重复执行同一操作 | 工具调用有没有幂等键、超时后是否重试 | 加个 sleep 试试 |
| 上下文越跑越贵、模型开始忽略指令 | 工具输出体积、历史轮数、固定开销 | 换个更大的模型 |
| 线上问题复现不了 | 有没有落完整 prompt、参数、工具入参出参 | 怀疑模型不稳定 |
| 账单随某个任务激增 | 步数上限、重复工具调用、并发数 | 直接给用户限流 |
| 工具越权或凭据外泄 | 权限范围、凭据有效期、审计日志 | 靠 prompt 让它别乱来 |
参考:
Model Context Protocol 文档(modelcontextprotocol.io)
华为云 · 函数工作流 FunctionGraph(support.huaweicloud.com)
华为云 · API 网关 APIG(support.huaweicloud.com)
华为云 · 密码安全中心 DEW / 凭据管理服务 CSMS(support.huaweicloud.com)
华为云 · 云原生观测中心 AOM、日志服务 LTS(support.huaweicloud.com)
- 点赞
- 收藏
- 关注作者
评论(0)