Agent 上生产:Demo 到生产之间隔着这五道坎

举报
yd_278382871 发表于 2026/11/03 18:34:03 2026/11/03
【摘要】 Demo 里的 Agent 调用工具像调函数:同步、幂等、一定成功。生产里这三条都不成立。一、工具调用有副作用,不是函数调用Demo 里没人关心超时和重试,生产里这三件事会翻车:超时后重试可能已经执行过一次。外部接口 3 秒不返,你重试一次,第一次其实已经扣了款。所有有副作用的工具都要一个幂等键,外加一个"是否已执行"的查询入口。返回体体积不受控。一次查询回两万行,塞进上下文直接吃光预算。分...

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)

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0)

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。