完整题目
一个 Agent 需要调用三个工具且高频请求下延迟较高,如何沿模型、队列、网络和工具链定位并优化?
本文目录
先测关键路径
先用同一 trace 拆开入口排队、模型 prefill/生成、工具排队、连接、服务端处理、重试、状态存储和返回渲染,按请求类型看 P50/P95/P99、超时、取消与错误。三个工具并不代表三个工具都是瓶颈;优化应针对关键路径和用户 SLO。
1. 依赖图与并行
只有输入已经完整、彼此没有数据依赖、不会争用同一副作用资源的工具才能并行。独立调用的理论关键路径接近最慢分支,但实际还受连接池、下游限流、排队和汇合开销影响。并行度必须有上限,否则会把 Agent 的一次请求放大成下游流量尖峰。
不要在模型还未生成完整、通过 schema 校验的工具参数时执行。所谓“边生成 JSON 边调用”可能使用缺失或随后被改写的参数;安全做法是流式展示进度,同时在完整调用通过权限和参数校验后执行。
2. 缓存必须带语义边界
缓存前先判断结果是否可复用:
- 身份与权限:键包含用户/租户/资源范围,私有结果不跨账号共享;
- 新鲜度:记录数据版本、生成时间和失效事件,TTL 只是兜底;
- 副作用:写操作不做结果缓存,用幂等键防重复;
- 模型输出:语义相似不等于请求等价,完整执行链缓存可能绕过最新权限、工具状态和确认步骤;
- 前缀缓存:只复用模型 prefill 计算,不替代业务结果缓存,也不自动保证会话隔离。
缓存是否优先取决于命中率、错误代价和一致性,不能把它当所有高频 Agent 的首选。