这道题问[[Agent]]性能优化,其实本质是在问怎么在推理效率和工具可靠性之间做平衡。我会从推理机制、外部工具集成和错误防控三个层面展开,重点讲我怎么落地。
先说推理层面。很多人一上来就上大模型,但实际业务里,大部分请求是简单的意图识别或信息提取。我的做法是分层推理:用一个小模型,比如 [[Distillation]] 过的 7B 模型,做快速分类和路由;只有当判断需要复杂推理时,才调大模型。这样可以大幅降低平均延迟。另外,生成加速我会用 投机解码 配合 [[KV Cache]] 复用,特别是多轮对话场景,缓存命中率很高,首 token 延迟能压到几百毫秒。这里有个前提:小模型和大模型在意图分类上的准确率要足够接近,否则路由错了,后面全白费。所以上线前我会用业务数据做对齐测试。
再一个,外部工具集成。这是最容易出问题的点,因为网络抖动、服务超时、返回格式不对,都会让Agent卡死或乱走。我的方案是超时熔断加重试降级。举个例子,客服退款场景,Agent需要调订单系统查状态。如果订单系统超时,我不会让Agent傻等,而是设一个硬超时,比如3秒,超时就触熔断,自动切换到备选路径,比如问用户有没有订单号,或者直接转人工。重试必须用指数退避,而且区分错误类型:网络错误可以重试,业务错误比如订单不存在,就不能重试,得降级。另外,工具返回必须做结构化校验,用 JSON Schema 验字段类型和范围,如果格式不对,让Agent重新调用或换一个工具。这一步很多系统会忽略,结果模型拿到乱数据,推理链直接崩。
然后是错误累积的防控。Agent走多步之后,前面一步错了,后面全错。我的做法是加 自检机制 :每个关键决策之后,让模型自己验证一下结果是否合理。比如退款金额,Agent算出500块,但订单总额只有300,那就触发自检,重新确认或回退到上一步。更彻底的是状态回滚:在调用外部工具之前存一个 Checkpoint,如果后续发现错误,就回滚到那个点重试。这里有个常见失败场景:自检本身也会消耗 token 并引入新错误,所以自检要轻量,最好用规则或小模型,别让大模型自己反思自己,容易陷入循环。
说到自检,我最近在关注 [[Self-RAG]] 的思路,让模型在生成过程中自己判断是否需要检索,而不是每次都查外部知识库,这样能减少不必要的工具调用。但它的训练数据构造比较麻烦,而且对模型本身的推理能力有要求。
所以整体上,我会把Agent性能优化看成 一个工程系统问题 ,不是单点优化。推理要快,工具要稳,错误要能兜底。我更倾向优先保证工具层的可靠性,因为推理再快,工具挂了也是白搭。如果让我选一个最值得投入的方向,我会选结果验证和熔断降级,这是让Agent能在生产环境跑起来的底线。