K2.2.4 Task 2.2

"您的订单不存在"——但它存在,只是数据库挂了

客户打电话问订单 #12345。数据库超时了。工具返回 isError: false, "No results found"。Agent 说:“我们系统里没有找到订单 #12345。您确定号码对吗?“客户有确认邮件。订单存在——数据库只是暂时挂了。

两种看起来一样的结果

访问失败(超时、连接错误、服务宕机):

  • 查询没有成功执行
  • 数据可能存在——只是我们查不了
  • Agent 应该:重试或说”查的时候遇到了点问题”

有效空结果(查询成功执行,没有匹配记录):

  • 查询成功执行并且什么都没找到
  • 数据确实不存在
  • Agent 应该:当作确定结论并通知用户

怎么区分

结果isErrorContentAgent 行为
数据库超时true”Database temporarily unavailable”重试或告知”查的时候遇到问题”
无匹配记录false”No customer found for ID X”当作确定结论

规则:如果查询成功执行了isError: false(即使零结果)。如果查询执行失败了isError: true 加错误详情。

现实中的损害

学术研究 agent 搜索数据库。数据库不可达。工具返回空内容 + isError: false。Agent 告诉研究者:“该主题没有找到论文。“该主题有几千篇论文。研究者根据错误信息改变了研究方向。

客服 agent 在数据库宕机期间查订单。返回”No results found” + isError: false。Agent 告诉客户订单不存在。客户有确认邮件然后升级投诉——制造了一次不必要的投诉。

静默吞没

数据库不可达时返回 isError: false 加空内容是”静默吞没”——错误被吞掉,转成假阴性,agent(和用户)永远不知道发生了故障。

包含尝试的查询

超时错误应包含尝试了什么:“Database timeout while looking up order_id=‘ORD-12345’“。这让 agent 能用完全相同的参数重试,或具体告诉用户什么没查到。


一句话总结: 数据库宕机返回 isError: false + “无结果”会导致 agent 告诉客户数据不存在(其实只是服务挂了)——访问失败必须返回 isError: true,有效空结果返回 isError: false,这个区分防止假阴性。