AI智能体如何学会说“我不知道”:Agentic Abstention技术解析与实践

📅 2026/8/18 12:16:28
AI智能体如何学会说“我不知道”:Agentic Abstention技术解析与实践
1. 引言当AI代理学会说“我不知道”最近在跟几个做LLM智能体LLM-powered Autonomous Agents的朋友聊天大家不约而同地提到了一个共同的“翻车”现场你精心设计的智能体在某个任务上表现优异却在另一个看似简单的场景里突然开始一本正经地胡说八道甚至做出完全错误的决策。比如一个负责分析财报的智能体你问它“苹果公司2023年Q4的净利润是多少”它能精准地调用API、检索数据库给出正确答案。但如果你冷不丁地问它“请预测苹果公司2050年的股价走势”它可能不会告诉你“这超出了我的预测能力”而是会煞有介事地生成一套包含各种技术指标和宏观分析的“专业”报告听起来头头是道实则全是基于训练数据的臆测。这个现象背后指向了一个比“让智能体更聪明”更底层、也更关键的问题智能体是否具备“自知之明”它能否准确判断自己能力的边界并在面对超出其能力范围或信息不足的任务时主动选择“弃权”Abstention或“停止”Stop而不是强行“行动”Act这就是“Agentic Abstention”智能体弃权概念的核心。传统的智能体设计核心逻辑是“感知-思考-行动”的循环。我们投入大量精力优化其“思考”如通过Chain-of-Thought提升推理能力和“行动”如工具调用、API集成却往往默认智能体会“尽力而为”很少系统性地教它“何时该不为”。这就像训练一个永远只能说“是”的士兵却忘了教他识别无法攻克的堡垒并选择撤退其后果可能是灾难性的——产生幻觉Hallucination、传播错误信息、或在自动化流程中引发连锁故障。因此“Agentic Abstention”不是一个锦上添花的功能而是构建可靠、可信、安全的AI智能体的基石能力。它关乎智能体的判断力、安全性和实用性。本文将深入探讨这一概念拆解其背后的技术挑战、实现思路并结合当前LLM智能体的发展分享一些落地的思考与实践方向。2. 为什么“学会停止”比“学会行动”更难在深入技术方案之前我们首先要理解让一个被设计来“做事”的智能体主动“不做事”为什么在工程和算法层面都极具挑战。这远非简单地设置一个“信心阈值”那么简单。2.1 智能体决策的“黑箱”与不确定性根源LLM驱动的智能体其决策过程本质上是基于概率的文本生成。当它决定是否行动以及如何行动时依赖的是对当前上下文用户指令、历史对话、工具输出等的理解以及从其海量参数中提取的模式。这个过程存在多重不确定性知识边界模糊LLM的“知识”截止于其训练数据且是静态的。它无法像人类一样明确区分“我知道”、“我听说过但不确定”、“我完全不知道”。当遇到训练数据中不存在或信息不足的问题时模型倾向于根据相似的语义模式进行“补全”而非承认无知。任务理解歧义用户的指令可能模糊、矛盾或隐含了智能体无法满足的前提条件。例如“帮我订一张明天从北京飞往纽约的机票要最便宜的。”这个指令对智能体而言隐含了“它拥有实时查询航班和价格的能力”以及“用户已授权支付”的假设。如果智能体不具备实时查询工具或支付接口它应该识别出这个缺口。工具与环境的不可靠性智能体依赖外部工具API、数据库和环境反馈。工具可能失败返回错误、超时、返回的信息可能不完整或已过时。智能体需要评估工具响应的可靠性而不仅仅是解析其内容。多步骤规划中的累积误差在复杂的多步骤任务中早期步骤的一个微小错误或不确定性可能会在后续步骤中被放大。智能体需要具备在规划链路中动态评估风险并适时中止的能力。2.2 “强行行动”的代价从幻觉到系统风险缺乏弃权机制的智能体其“强行行动”会带来一系列具体风险生成性幻觉Factual Hallucination这是最直接的危害。智能体编造不存在的事实、数据或引用并以高度确信的口吻输出极具误导性。指令性幻觉Instruction Following Hallucination智能体错误理解指令执行了用户本不期望的操作。例如用户说“把这份文档归档”智能体可能错误地将其“删除”。工具滥用与安全漏洞智能体可能调用不恰当的工具或使用正确的工具但传入危险的参数。例如一个拥有文件写入权限的智能体可能在不确定的情况下覆盖重要系统文件。资源浪费与成本激增在自动化流程中一个陷入错误循环或执行无效复杂操作的智能体会白白消耗大量的API调用成本、计算资源和时间。信任崩塌频繁的、低质量的错误输出会迅速耗尽用户对智能体系统的信任导致整个应用被弃用。因此实现“Agentic Abstention”的目标是赋予智能体一种元认知能力——不仅知道如何解决问题更能评估“当前我解决这个问题的成功概率有多高”并在概率过低时选择更安全的路径要么向用户请求澄清要么直接坦白局限性。3. 实现“智能弃权”的技术路径探析让智能体学会说“我不知道”目前并没有一个放之四海而皆准的银弹方案而是一个需要从多个层面进行设计和集成的系统工程。我们可以将其分为几个关键的技术路径。3.1 基于置信度评估的阈值法这是最直观的思路让智能体或其底层的LLM为它的输出生成一个“置信度分数”当分数低于某个阈值时则触发弃权。3.1.1 如何获取置信度Token级概率利用LLM生成每个token时输出的原始概率。对于“是/否”类问题或选择题可以比较不同选项的概率。但对于开放生成任务将所有token的概率简单相乘或平均其数值意义不明确且容易受序列长度影响。语义一致性验证让智能体或另一个验证模型多次生成同一问题的答案或对生成的答案进行改写然后计算这些不同版本之间的语义相似度。低相似度可能表明模型对该问题不确定。这种方法计算开销较大。专门训练的“不确定性评分模型”训练一个额外的分类器模型以智能体的内部状态如最后一层隐藏状态、思维链过程为输入输出一个“该回答可信”的概率。这需要大量的标注数据哪些回答是可信/不可信的。3.1.2 阈值设定的困境注意置信度阈值不是一个静态的魔法数字。它需要根据任务类型、风险容忍度和领域进行精细调整。在医疗诊断建议中阈值必须设得极高而在创意写作中阈值可以相对较低。实际操作中最大的挑战在于校准Calibration。LLM的概率输出常常是未校准的即模型给出的高概率并不对应真实世界的高正确率。你可能需要在一个有标注的验证集上绘制“置信度-准确率”曲线来找到一个合理的阈值点。实操心得在简单的事实问答QA任务中我们尝试过使用第一个token如“是”、“否”、“可能”的生成概率作为置信度。对于“北京是中国的首都吗”这种问题模型输出“是”的概率极高如0.99而对于“特斯拉会在2030年推出飞行汽车吗”模型输出“可能”的概率最高但绝对值可能只有0.6。我们将阈值设在0.85低于此值的都要求智能体回复“根据现有信息我无法给出确定答案”。这个方法在封闭领域QA中效果尚可但对于开放域复杂任务几乎失效。3.2 基于规则与约束的启发式方法这种方法不依赖模型的概率输出而是通过预先定义的一系列规则和逻辑检查来判断当前情境是否适合行动。3.2.1 输入检查Input Guardrails在智能体开始思考之前先对用户输入进行过滤领域过滤检查问题是否属于智能体被设计的领域。例如一个编程助手遇到“给我写一首诗”的请求应直接拒绝。安全性过滤检查输入是否包含恶意指令、敏感话题或违法内容。可行性检查解析指令检查所需的工具或资源是否可用。例如指令中包含“查询实时股价”但智能体配置中并无相应的金融数据API则应触发弃权。3.2.2 过程监控Process Monitoring在智能体执行过程中嵌入检查点工具调用验证在调用工具前验证参数格式、范围是否合理。例如调用数据库查询时检查SQL语句是否有明显的语法错误或危险操作如DROP TABLE。中间结果合理性检查对工具返回的结果进行初步校验。例如一个计算器工具返回了“1/0NaN”或者一个天气API返回了“温度值-200°C”智能体应能识别这些异常值并暂停后续操作。规划步骤数限制防止智能体陷入无限循环或过于复杂的规划。设置最大推理步数或工具调用次数超限则强制中止。3.2.3 输出后验Output Verification在智能体生成最终答案后进行事实性、一致性和安全性的二次检查自我验证Self-Consistency让智能体自己解释答案的推导过程或换一种方式重述答案检查是否存在矛盾。外部知识验证将答案中的关键事实如日期、数据、名称通过检索工具进行快速核验。格式合规性检查对于需要特定格式如JSON、代码的输出进行语法验证。实操心得规则引擎是构建可靠智能体的第一道防线尤其适用于高风险场景。我们在一个客服智能体中集成了规则引擎效果显著。例如当用户输入包含“投诉”、“赔偿”、“法律”等关键词时规则引擎会直接触发将对话转接给人工客服并让智能体回复“您的问题涉及重要权益我已为您转接专属客服人员请稍候。” 这避免了智能体在复杂法律或情绪化场景下做出不恰当的承诺。规则引擎的缺点是维护成本高难以覆盖所有边界情况且显得比较“僵硬”。3.3 基于检索增强的“知识边界”感知对于知识性任务智能体弃权的一个主要原因是“不知道”。检索增强生成RAG架构为解决这个问题提供了天然框架。核心思路智能体在回答任何问题前必须首先尝试从指定的知识库通过向量检索中查找相关信息。弃权决策与检索结果的质量紧密绑定。3.3.1 基于检索结果的弃权策略检索结果情况可能采取的弃权策略零相关结果直接回复“在我的知识库中未找到相关信息无法回答此问题。”低相关性/低置信度结果如top-1的相似度分数低于阈值回复“找到一些可能相关的信息但相关性不高。我的回答可能不准确仅供参考...[引用低置信度片段]... 建议您核查权威来源。”结果间存在明显矛盾回复“根据检索到的资料对此问题存在不同说法[引用矛盾点]。我无法给出唯一确定的答案。”结果不足以支撑完整回答信息碎片化回复“关于您的问题我只找到部分信息[引用片段]。要给出完整答案还需要了解[指明缺失信息]。您能提供更多细节吗”3.3.2 动态检索与迭代查询高级的智能体不应只进行一次检索。它可以根据初步检索结果判断信息是否充分。如果不充分可以自动改写查询词进行多轮检索。如果多轮检索后仍无法获得高质量信息则触发弃权。实操心得在构建企业知识库问答智能体时我们严格实施了“无检索不回答”的策略。智能体的第一反应永远是去检索。我们设定了两个阈值相似度阈值0.75和引用覆盖率阈值答案中关键主张必须有至少一个引用片段支持。任何一项不达标智能体都会选择弃权并明确告知用户“根据现有资料我无法给出一个可靠的答案”。这极大地减少了幻觉但也带来了更高的“拒答率”。我们需要在“准确性”和“可用性”之间做权衡并通过持续优化知识库和检索器来降低合理的拒答率。3.4 将“弃权”作为可选动作的强化学习训练最根本的解决方案是将“弃权”或“请求帮助”作为智能体动作空间Action Space中的一个合法选项并通过强化学习RL或监督微调SFT来训练智能体学会在适当的时候选择它。3.4.1 奖励函数设计这是强化学习路径的核心挑战。如何设计奖励函数Reward Function来鼓励智能体做出“明智的弃权”对于成功完成任务给予正奖励。对于执行任务但失败/出错给予较大的负奖励惩罚。对于在不确定时正确弃权给予小的正奖励或零奖励。关键点在于弃权的奖励必须远低于成功完成任务但高于失败。这样智能体才有动力在“可能成功”时尝试在“很可能失败”时放弃。对于在不该弃权时弃权懒惰给予负奖励。3.4.2 合成数据训练由于收集大量“何时该弃权”的真实标注数据成本高昂一个可行的方法是使用合成数据对模型进行监督微调。构建一个包含各种难度和类型问题的数据集。使用一个更强的“教师模型”如GPT-4或规则系统为每个问题标注“是否应该回答”以及“理想的回答或弃权声明”。用这些数据对智能体的底层LLM进行微调使其学会在内部表征中关联“不确定性”与“弃权行为”。实操心得这条路目前还处于前沿探索阶段工程和算力门槛很高。我们尝试过一个简化版在指令微调数据中人工构造了约5%的“弃权样本”。例如指令“预测明天比特币的精确价格。”理想输出“作为AI我无法预测金融市场未来的精确价格。这类价格受众多复杂因素影响任何预测都可能是极不准确的。” 经过微调后模型在面对明显超出其能力如预测未来、涉及主观强烈判断的问题时选择礼貌性弃权的倾向有所增加。但这离真正的、基于复杂情境判断的智能弃权还有很大距离。4. 多模块协同的弃权决策框架设计在实际系统中单一方法往往不够。一个健壮的“Agentic Abstention”系统通常需要融合上述多种技术形成一个分层的决策框架。以下是一个参考架构设计4.1 分层决策流水线我们可以将智能体处理请求的过程视为一个流水线在每一层都设置“检查站”预处理层输入守卫功能进行安全性、领域符合性和基本可行性的快速检查。技术基于规则的分类器、关键词过滤、轻量级模型。输出通过则进入下一层不通过则直接返回预定义的弃权响应如“此问题超出我的服务范围”。理解与规划层不确定性初步评估功能智能体解析指令制定初步计划。在此阶段评估任务复杂度、所需知识/工具是否明确。技术LLM生成思维链CoT同时输出一个“任务可行性”的置信度分数可通过提示词工程让模型自评。输出如果置信度极低例如模型自己表示“我不知道该如何完成”则提前弃权。否则生成行动计划。执行与检索层动态监控功能按计划执行工具调用或知识检索。实时监控每个步骤的结果。技术对每个工具调用的返回结果进行格式验证和合理性检查对检索结果计算相关度分数。输出任何步骤出现错误、超时或返回低质量结果则暂停计划评估是否继续、回退还是整体弃权。整合与生成层最终校验功能整合所有中间信息生成最终答案。在输出前进行最终的事实性和一致性校验。技术让LLM基于所有收集到的证据生成答案并可选择让另一个“验证器”模型对答案的可信度进行评分。输出如果验证分数低于阈值或者答案内部存在矛盾则触发弃权并可能附带已收集到的、部分可信的信息。4.2 弃权响应的设计艺术弃权不是冷冰冰的“错误404”。一个好的弃权响应能够维护用户体验甚至引导对话走向成功。它应该包含以下几个要素诚实透明明确说明不能回答的原因。“我无法给出答案”比一个模糊或错误的答案要好。解释原因如果安全例如“因为我的知识截止于2024年7月无法提供之后的事件信息”或者“这个问题需要访问实时数据而我目前没有相应的权限”。提供替代方案或部分信息例如“虽然无法预测股价但我可以为您分析特斯拉公司最新的公开财报数据。”或者“关于文艺复兴时期的艺术我了解一些背景但您提到的这位非常小众的画家在我的知识库中没有记录。”引导与提问将弃权转化为澄清的机会。例如“您是想了解通用的股票分析框架还是针对某只特定股票这能帮助我更好地为您服务。”实操心得我们在设计弃权响应时建立了一个“响应模板库”根据不同的弃权原因知识截止、缺少工具、输入模糊、信息矛盾等匹配不同的回复模板。同时我们会让智能体在弃权时尝试提供一条“可能的解决路径”比如“您可以尝试在[某个权威网站]上查询该信息”或者“您可以将问题重新表述为...这样我或许能帮上忙”。这能将一次失败的交互转变为一次有建设性的对话。5. 评估“弃权智能”的挑战与指标如何衡量一个智能体是否“善于弃权”这需要一套不同于传统准确率Accuracy的评估体系。5.1 核心评估维度弃权准确率Abstention Accuracy定义在应该弃权的情况下智能体实际选择弃权的比例。难点需要标注“应该弃权”的测试集这本身就需要大量人工判断。不当坚持率Unnecessary Persistence Rate定义在应该弃权的情况下智能体错误地坚持回答的比例。这是弃权准确率的反面。不当弃权率Over-Abstention Rate定义在可以且应该回答的情况下智能体却错误地选择弃权的比例。这衡量了智能体的“懒惰”或过度谨慎。整体效用Overall Utility定义一个结合了回答质量和弃权行为的综合分数。例如可以定义一个正确回答得1分一个错误回答得-2分一个正确的弃权得0分一个错误的弃权得-0.5分。最终的总分更能反映智能体在实际应用中的价值。5.2 构建测试基准Benchmark为了推进这方面的研究社区需要构建专门的测试基准。一个理想的基准应包含已知答案Easy智能体应正确回答。已知不可知Known-Unknown明显超出模型知识或能力边界的问题智能体应弃权。模糊地带Ambiguous信息不全或存在多种解释的问题用于测试智能体寻求澄清的能力。对抗性样本Adversarial精心设计的、诱导模型产生幻觉或错误的问题。实操心得在内部测试中我们构建了一个小规模的测试集包含了上述四种类型的问题。我们发现单纯的“弃权准确率”提升并不难通过设置严格的检索阈值就能做到但这会同步推高“不当弃权率”。真正的挑战在于找到那个“甜点”在不过度损害可用性的前提下最大限度地减少错误。我们目前采用“F1-Abstention”作为一个平衡指标类似于分类问题中的F1分数是弃权准确率和1 - 不当弃权率的调和平均数。6. 未来展望与结语“Agentic Abstention”是AI智能体走向成熟和可靠的关键一步。当前的研究和实践大多还集中在基于规则和阈值的“被动弃权”上。未来的方向可能包括更精细的不确定性量化发展出能够校准的、可解释的置信度估计方法让模型不仅能说出“我不确定”还能说出“我有多不确定”。分层级的弃权与求助弃权不应是二元的回答/不回答。智能体应该有一系列“降级”选项从“完全自信地回答”到“提供带有警告的答案”到“请求用户提供额外信息”再到“完全拒绝并说明原因”。记忆与持续学习智能体能否从过去的弃权经历中学习例如当多次被问到同一类无法回答的问题时它能否抽象出模式未来更快地识别并弃权甚至主动建议用户不要问此类问题人机协作中的弃权在人类与智能体协同工作的场景中弃权应是一个平滑的交接过程。智能体在弃权时应能清晰地将其思考过程、已收集的信息和遇到的障碍传递给人类实现高效的接力。在我个人看来让智能体学会“知止”其意义不亚于让它学会“知行”。这不仅仅是增加一个安全功能更是对智能体“理性”本质的深化。一个真正有用的智能体不仅要知道如何运用它的能力更要懂得其能力的边界。这或许也是我们人类在与日益强大的AI共处时需要为其设定的一条重要原则敬畏未知方能行稳致远。在具体的工程实践中与其追求一个永远不犯错的“全能”智能体不如先打造一个“足够可靠”的智能体——它知道自己能做什么更清醒地知道自己不能做什么并在边界上优雅地止步。这才是当前阶段更具可行性和实用价值的目标。