ARTICLE · 1199305
AI AGENT专题连环问
因为普通问答(RAG)只能'回答问题',不能'干活'。而用户很多需求是要真实数据的——查运单状态、查结款进度。这些数据在数据库里,模型不知道,也不能瞎编。Agent 的意义就在于:当用户问需要真实数据的问题时,Agent 能主动判断'这个我得调工具去查',然后调用运单/结款查询接口,拿真实数据回答。
一句话:普通问答解决'知不知道',Agent 解决'能不能办事'。在客服场景,能办事才能真正减少人工,这是用 Agent 的核心价值。
问题:工具调用失败怎么办?
工具调用(查运单、查结款)会失败,我做了三层兜底:
重试:接口瞬时失败(网络抖动、超时)先做一次重试;
降级话术:重试还失败,AI 不硬编数据,而是诚实地回复用户'系统暂时查询不到,请稍后再试或联系人工客服'——绝不瞎给一个运单状态,因为客服场景错误承诺是致命的;
超时/熔断:如果接口长时间不响应,设置超时时间,超时就触发上面的话术兜底,不让用户一直卡着等。
核心原则:工具失败时,宁可告诉用户'查不到',也绝不让模型凭记忆编数据。 这样既保住了准确性,又保住了用户体验。
问题:流程怎么控?(多轮对话/业务流转怎么控制)
意图判断 + 工具路由:用户进来,先判断他想干嘛——问规则就走 RAG 知识库,查运单就走运单工具,查结款就走结款工具。用 @Tool 让 Agent 自动路由;
多轮上下文管理:用户说'那我的结款呢'这种省略句,我把上下文(历史对话)带进去,让模型知道"结款"指的是当前这个用户,不丢上下文;
参数补齐:查运单需要运单号,用户没给全,Agent 会反问'请提供您的运单号',补齐参数再调接口,而不是直接报错;
兜底流转:答不上来的,引导到人工客服,形成闭环。
核心是:意图识别 → 工具路由 → 参数补齐 → 兜底转人工,形成完整闭环,不会让用户卡死在某个环节。
问题:效果怎么评价?
我从几个可量化的指标评价:
回答准确率/命中率:随机抽一批线上真实问题,看 AI 回答是否正确、是否命中知识库,这个我持续跟踪;
工具调用成功率:运单/结款查询接口的调用成功率和返回准确率,看是不是真能办事;
转人工率(最关键):多少比例的问题 AI 解决不了需要转人工——转人工率下降,说明 AI 真帮客服省了事,这是老板最关心的 KPI;
回答耗时:用户等多久才出结果,流式输出能不能让体验流畅;
用户满意度:用户对回答的反馈/评价。
核心是:我不只看'答得对不对',更看'替客服省了多少人工',后者才是这个系统真正的价值。
问题:出了问题怎么排查?
先看日志:每个请求都打日志——用户问了什么、检索到了哪些知识、召回了什么、模型回了什么、工具调用成功没有、耗时多少。出问题先看这条链路日志;
分环节定位:答案不对,是知识库没有(检索召回空)还是检索召回错(召回不相关)还是模型答错?看召回片段就知道卡在哪一环;
工具问题:查运单失败,看是接口报错、还是参数没补齐、还是超时——通过日志里工具的入参、出参、异常定位;
可复现:拿用户的问题单独复现,加上上下文重跑一遍,看是必现还是偶发;
指标监控:转人工率、工具成功率、耗时做监控,指标异常说明出问题了,再顺着上面查。
核心是:每个请求全链路打日志,靠'用户问题→召回→模型回答→工具调用'的日志链路,能快速定位是哪一环出的问题。
问题:如何控制 token(成本)?
Token 就是成本,我从四个层面控:
1. 用户层面:限制单次请求长度
max-tokens 设上限,防止答一大篇废话;
检索只喂最相关的几段知识,召回数量克制,别把 Prompt 撑爆。
2. 接口层面:缓存 + 复用
高频 FAQ 的答案做结果缓存,命中缓存不重复调模型,直接返回,省大量 token;
热知识优先,不走完整检索+生成。
3. 会话上下文层面:管理多轮历史
滑动窗口:只保留最近 10 轮对话作为上下文喂给模型,更早的不带,防止对话越长 token 越爆;
更早内容做上下文压缩:超过窗口的部分,用模型把前面的对话浓缩成一段摘要,把"摘要 + 最近 10 轮"一起喂,既保留关键信息又控制长度;
压缩是有成本的(要额外一次调用),所以我会控制压缩触发频率——对话达到一定长度才压缩,不是每轮都压,兼顾成本和效果;
上下文长度设硬上限,超过就截断,绝不让单会话无限增长。
4. Token 成本兜底
单请求输入+输出设硬上限,超过就截断或降级;
接口限流,防异常流量打爆;
实时监控 token 消耗,接近预算就告警、降级。
核心是:召回克制 + 结果缓存 + 会话窗口管理(最近 10 轮 + 更早压缩)+ 单请求上限 + 监控,五管齐下控成本。















































































