能力边界与失败模式

智能体会一本正经地胡说,会在一个工具上反复打转,会丢三落四。理解它"必然怎么失败",比幻想"永不犯错"更接近生产现实。本章按"现象-原因-对策"拆解常见失败模式。

六大失败模式总览

模式现象原因对策
幻觉言之凿凿却与事实不符模型本质是"接龙",知识有错漏检索增强、要求引用来源、低置信拒答
工具选错/参数错调了无关工具、传了非法参数工具描述不清、推理不足描述写准、工具白名单、参数校验重试
循环空转反复执行同一动作不收敛缺终止条件、反馈信号弱最大轮次上限、去重检测
上下文超限/遗忘长任务丢细节、报超限上下文窗口有限摘要压缩、外部记忆、裁剪历史
外部依赖失败工具超时、报错、数据变了现实世界不稳定超时、重试、优雅降级
评测陷阱指标好看但真实体验差用例与裁判有偏回归集+人工抽检结合

幻觉:不确知就不硬答

幻觉无法根除,只能压制。RAG 提供依据、要求输出引用,都有效;更简单的一招是允许说不知道

if not evidence:
    return "我没有足够资料确认这一点,请提供来源或换个问法。"
# 输出:我没有足够资料确认这一点,请提供来源或换个问法。

循环空转:设硬上限

再聪明的模型也可能在"重试-失败-再重试"里空转,必须在循环层设硬性护栏:

MAX_STEPS = 8
for step in range(MAX_STEPS):
    action = agent.step(state)
    if action.done:
        break                      # 正常结束
else:
    state.say("步骤超限,已终止并转人工")    # 兜底护栏,绝不放任空转

上下文超限与遗忘

  • 长对话滚动摘要:把旧轮次压成要点,只留最近细节;
  • 外部记忆:关键事实写入向量库/数据库,用时检索(见记忆章节);
  • 主动裁剪:丢弃无用工具返回与过期中间结果。

外部依赖失败:超时重试与降级

工具调用是真实网络/系统操作,必有失败。给每个调用包超时与有限重试,失败返回结构化错误而非裸异常:

for attempt in range(3):
    try:
        return http_call(url, timeout=5)
    except TimeoutError:
        if attempt == 2:
            return {"error": "external_timeout"}   # 降级结果,让智能体可解释

评测陷阱与概率本质

评测用例可能掩盖真实问题(见评测章节);更要接受根本现实——Agent 是概率系统:先接受不完美,再工程化降低失败率。可靠的产出来自护栏与反馈:上限、重试、确认、评测回归,而不是"祈祷这次不抽风"。

小结

幻觉、工具误用、循环空转、上下文超限、外部失败、评测陷阱六类问题各有其"现象-原因-对策"。工程上以轮次上限、参数校验、超时重试、外部记忆与回归评测做护栏;先接受概率性,再持续压低失败率,智能体才谈得上可用。

笔记加载中…