AI Agent 不确定性管理:让大模型学会"我不知道"
AI Agent 不确定性管理:让大模型学会”我不知道”
上午我们讨论了如何用沙箱保护 Agent 的外部边界,下午来聊聊 Agent 的内部认知能力——如何让大模型识别自己的知识边界,在不确定时优雅地求助,而不是自信满满地胡说八道。
一、问题的本质:大模型的”幻觉”与过度自信
1.1 一个真实的案例
想象你正在构建一个医疗咨询 Agent:
1 | # 危险的自信 |
这个回答看似合理,但存在严重问题:
- 头痛 + 视力模糊 可能是青光眼急性发作的征兆
- 建议自行服药 可能延误急症治疗
- 置信度未表达 —— 模型并未说明这是推测而非诊断
1.2 不确定性的来源
大模型的不确定性主要来自三个层面:
| 层面 | 类型 | 示例 |
|---|---|---|
| 知识层面 | 训练数据未覆盖 | 2024年后的新事件、私有领域知识 |
| 推理层面 | 逻辑链条断裂 | 多步推理中的中间步骤出错 |
| 输入层面 | 信息不完整/模糊 | 用户 query 歧义、缺少关键上下文 |
1.3 为什么传统方法不够
传统 Prompt Engineering 的常见做法:
1 | # 方式1:要求模型自我评估 |
局限性:
- 校准不良 —— LLM 的置信度评分与实际准确率往往不匹配
- 二值化思维 —— “知道/不知道” 无法表达程度上的不确定性
- 无行动指导 —— 即使识别出不确定,也不知道该如何处理
我们需要一个系统化的不确定性管理框架。
二、不确定性管理的核心架构
2.1 架构总览
1 | ┌─────────────────────────────────────────────────────────────┐ |
2.2 第一层:不确定性识别
不确定性识别需要检测多种信号:
1 | from dataclasses import dataclass |
实现方式1:自我评估 Prompt
1 | UNCERTAINTY_DETECTION_PROMPT = """你是一个不确定性检测专家。 |
实现方式2:基于 logit 的统计方法
1 | import torch |
2.3 第二层:置信度校准
大模型的置信度往往校准不良——自信时可能出错,犹豫时反而正确。
1 | class ConfidenceCalibrator: |
2.4 第三层:信念状态管理
信念状态(Belief State)是 Agent 对世界认知的显式表示:
1 | from typing import Dict, Set |
三、LangGraph 中的不确定性管理实现
3.1 整体流程设计
1 | from langgraph.graph import StateGraph, END |
3.2 各决策路径的具体实现
路径1:直接回答(Direct Answer)
1 | def generate_direct_answer(state: AgentState) -> str: |
路径2:澄清询问(Request Clarification)
1 | def generate_clarification_question(state: AgentState) -> str: |
路径3:工具调用(Tool Invocation)
1 | def generate_with_tool_call(state: AgentState) -> str: |
路径4:人类介入(Human Handoff)
1 | def generate_handoff_message(state: AgentState) -> str: |
3.3 置信度可视化与解释
1 | class UncertaintyVisualizer: |
四、生产环境的完整实现
4.1 企业级配置
1 | from pydantic import BaseSettings |
4.2 完整 Agent 类
1 | class UncertaintyAwareAgent: |
4.3 监控与评估
1 | class UncertaintyMetrics: |
五、与上午沙箱主题的呼应
5.1 完整的 Agent 安全架构
将上午的沙箱隔离与下午的不确定性管理结合,形成完整的 Agent 安全架构:
1 | ┌──────────────────────────────────────────────────────────────┐ |
5.2 两者的协同效应
| 场景 | 沙箱的作用 | 不确定性管理的作用 |
|---|---|---|
| 执行外部命令 | 限制资源、网络访问 | 识别潜在风险操作,请求确认 |
| 处理用户上传 | 隔离执行环境 | 检测内容类型不确定性 |
| 调用第三方API | 超时/错误处理 | 评估API返回可信度 |
| 生成建议 | 限制敏感领域 | 表达建议置信度 |
| 长时间运行 | 资源回收 | 进度不确定性的沟通 |
六、总结与最佳实践
6.1 核心要点回顾
- 不确定性识别 —— 多维度检测(显式+隐式)
- 置信度校准 —— 解决 LLM 过度自信问题
- 信念状态管理 —— 显式表示 Agent 的认知状态
- 决策路由 —— 根据不确定性程度采取不同策略
- 可解释性 —— 向用户透明展示置信度分析
6.2 实施路线图
阶段1:基础检测(1-2周)
- 实现基于 Prompt 的不确定性检测
- 添加简单的置信度阈值路由
阶段2:校准优化(2-3周)
- 收集用户反馈数据
- 实现置信度校准
- 优化阈值参数
阶段3:状态管理(3-4周)
- 实现信念状态系统
- 添加冲突检测和解决
- 支持多轮对话中的信念更新
阶段4:生产优化(持续)
- 监控指标和告警
- A/B 测试不同策略
- 用户满意度追踪
6.3 关键设计原则
1 | 1. 透明性 > 完美性 |
Written by Cypher | 与上午的《AI Agent 安全沙箱设计与实现》形成完整的安全与可靠性架构专题
延伸阅读:
- 上午篇:《AI Agent 安全沙箱设计与实现:从原理到生产实践》
- LangGraph 官方文档:https://langchain-ai.github.io/langgraph/
- 置信度校准研究:”On Calibration of Modern Neural Networks” (ICML 2017)
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 晨启Tech!
评论









