AI 产品 UX 设计模式

从加载态到信任构建:AI 原生交互的 6 大核心模式与工程实践


为什么 AI 产品需要专属 UX 模式

传统软件的交互是确定性的:用户点击按钮,系统在可预测的时间内返回可预测的结果。AI 产品打破了这个契约——响应时间不确定、输出质量不确定、甚至"正确答案"本身就不存在。

这意味着我们不能简单复用传统 UX 模式,而需要一套专门为不确定性设计的交互范式。

本文梳理 6 大 AI 产品核心 UX 模式,每个模式都附带工程实现参考。


一、加载态设计(Loading States)

1.1 问题本质

AI 推理耗时从数百毫秒到数十秒不等。用户在等待时如果只看到一个旋转的圆圈,焦虑感会急剧上升,且无法判断系统是否还在工作。

1.2 设计模式矩阵

模式 适用场景 用户感知 实现复杂度
骨架屏(Skeleton) 结果结构可预知 低焦虑
流式输出(Streaming) 文本/代码生成 即时反馈
进度叙事(Progress Narrative) 多步推理链 透明感
渐进渲染(Progressive Render) 图像/视频生成 期待感
乐观更新(Optimistic Update) 高确定性操作 即时响应

1.3 流式输出工程实现

// Server-Sent Events streaming pattern
async function* streamResponse(prompt: string) {
  const stream = await model.generateStream(prompt);

  for await (const chunk of stream) {
    yield {
      type: 'token',
      content: chunk.text,
      metadata: {
        tokensGenerated: chunk.index,
        estimatedTotal: chunk.estimatedTotal
      }
    };
  }

  yield { type: 'done', totalTokens: stream.totalTokens };
}

// Frontend consumption with cursor animation
function StreamingText({ stream }: { stream: ReadableStream }) {
  const [text, setText] = useState('');
  const [isStreaming, setIsStreaming] = useState(true);

  useEffect(() => {
    const reader = stream.getReader();
    const decoder = new TextDecoder();

    (async () => {
      while (true) {
        const { done, value } = await reader.read();
        if (done) { setIsStreaming(false); break; }
        setText(prev => prev + decoder.decode(value));
      }
    })();
  }, [stream]);

  return (
    <div className="prose">
      {text}
      {isStreaming && <span className="animate-pulse">|</span>}
    </div>
  );
}

1.4 进度叙事模式

当 AI 执行多步推理时,向用户展示当前步骤:

[搜索相关文档...]  -->  [分析 3 个数据源...]  -->  [生成结论...]

关键原则:

  • 步骤描述用动词开头,让用户感知系统在"做事"
  • 每步显示预估耗时(即使不精确)比完全不显示好
  • 步骤数量控制在 3-5 个,太多反而制造焦虑

二、不确定性传达(Uncertainty Communication)

2.1 核心挑战

AI 的输出有置信度差异,但多数产品要么完全隐藏这个信息(让用户盲目信任),要么用技术语言展示(让用户困惑)。

2.2 四级置信度表达框架

┌─────────────────────────────────────────────────┐
│  Level 4: 高置信(> 95%)                        │
│  表现: 直接陈述,无修饰词                         │
│  示例: "该发票的税率为 13%"                       │
├─────────────────────────────────────────────────┤
│  Level 3: 中高置信(80-95%)                      │
│  表现: 轻度限定词                                 │
│  示例: "根据分析,该发票的税率很可能是 13%"        │
├─────────────────────────────────────────────────┤
│  Level 2: 中低置信(50-80%)                      │
│  表现: 明确标注 + 备选方案                        │
│  示例: "该税率可能是 13% 或 9%,建议核实"          │
├─────────────────────────────────────────────────┤
│  Level 1: 低置信(< 50%)                        │
│  表现: 不做判断 + 引导人工介入                     │
│  示例: "无法确定税率,请手动查验或联系税务顾问"     │
└─────────────────────────────────────────────────┘

2.3 视觉置信度指示器

置信度区间 视觉元素 颜色建议 交互行为
95%+ 实心标签 绿色 直接展示
80-95% 虚线边框 蓝色 悬停显示来源
50-80% 黄色高亮 黄色 展开显示备选
<50% 警告图标 橙色/红色 强制人工确认

2.4 语言模板

不要让模型自己决定措辞——通过后处理层强制规范化:

def format_with_confidence(result: str, confidence: float) -> str:
    if confidence >= 0.95:
        return result
    elif confidence >= 0.80:
        return f"根据分析,{result}(置信度: {confidence:.0%})"
    elif confidence >= 0.50:
        return f"[需确认] {result}(置信度: {confidence:.0%},建议核实)"
    else:
        return f"[无法确定] 系统无法给出可靠结论,建议人工查验。参考信息:{result}"

三、错误处理 UX(Error Handling)

3.1 AI 产品的错误分类

传统软件的错误是二元的(成功/失败),AI 产品的"错误"有灰度:

错误类型 描述 用户感知 处理策略
硬错误 API 超时、模型崩溃 "系统坏了" 重试 + 降级
软错误 低质量输出、幻觉 "回答不对" 反馈 + 重新生成
边界错误 超出能力范围 "它不会" 引导 + 替代方案
安全拦截 内容审核触发 "不让我问" 解释 + 改写建议

3.2 优雅降级链

                    主模型(GPT-4/Claude)
                           │
                     ┌─────┴─────┐
                     │  超时/失败  │
                     └─────┬─────┘
                           ▼
                    备选模型(GPT-3.5/Gemini Flash)
                           │
                     ┌─────┴─────┐
                     │  超时/失败  │
                     └─────┬─────┘
                           ▼
                    缓存结果(相似问题)
                           │
                     ┌─────┴─────┐
                     │  无命中    │
                     └─────┬─────┘
                           ▼
                    静态兜底(FAQ/帮助文档)

3.3 错误消息三要素

每条错误消息必须包含:

  1. 发生了什么(不是技术术语)
  2. 为什么发生(简要原因)
  3. 用户能做什么(具体行动)

对比:

// BAD
"Error 503: Service Unavailable"

// GOOD
"AI 正在处理大量请求,暂时无法响应。
 通常会在 1-2 分钟内恢复。
 [自动重试] [使用快速模式] [稍后提醒我]"

四、信任构建(Trust Building)

4.1 信任的三个支柱

         信任
        / | \
       /  |  \
  能力   透明  可控
  ↓      ↓     ↓
  准确   可解释  用户有
  可靠   可追溯  最终决定权

4.2 来源引用模式

当 AI 输出基于特定来源时,必须在界面上关联引用:

## AI 回答
根据《企业所得税法》第二十八条[1],符合条件的小型微利企业,
减按 20% 的税率征收企业所得税[2]。

---
[1] 《中华人民共和国企业所得税法》第二十八条
[2] 国家税务总局公告 2023 年第 6 号

4.3 渐进信任模型

阶段 用户心态 系统行为 决策权
初始 "AI 靠谱吗?" 全部人工确认 用户 100%
验证 "大部分还行" 高置信自动执行 AI 30% / 用户 70%
信任 "放心用" 仅异常需确认 AI 70% / 用户 30%
委托 "全交给你" 自动执行 + 报告 AI 95% / 用户 5%

关键:永远不跳过阶段。新用户必须从"初始"开始,即使 AI 能力已经很强。

4.4 可回退设计

用户必须在任何时刻都能:

  • 查看 AI 的完整推理过程
  • 修改或覆盖 AI 的决策
  • 回退到 AI 介入前的状态
  • 关闭 AI 辅助,回到手动模式

五、渐进披露(Progressive Disclosure)

5.1 信息分层架构

Layer 1: 结论(一句话回答)
  └── Layer 2: 摘要(关键论据,3-5 条)
        └── Layer 3: 详情(完整分析)
              └── Layer 4: 原始数据(模型输出/来源文档)

5.2 实现模式

function AIResponse({ result }: { result: AIResult }) {
  const [depth, setDepth] = useState(1);

  return (
    <div>
      {/* Layer 1: Always visible */}
      <h3>{result.conclusion}</h3>

      {/* Layer 2: Key points */}
      {depth >= 2 && (
        <ul>
          {result.keyPoints.map(p => <li key={p.id}>{p.text}</li>)}
        </ul>
      )}

      {/* Layer 3: Full analysis */}
      {depth >= 3 && <div className="prose">{result.fullAnalysis}</div>}

      {/* Layer 4: Raw data */}
      {depth >= 4 && <pre>{JSON.stringify(result.rawData, null, 2)}</pre>}

      <button onClick={() => setDepth(d => Math.min(d + 1, 4))}>
        展开更多细节
      </button>
    </div>
  );
}

5.3 何时使用哪个层级

用户角色 默认层级 场景
普通用户 Layer 1 日常查询
业务人员 Layer 2 决策辅助
专业人员 Layer 3 审核验证
开发/审计 Layer 4 调试/合规

六、AI 原生交互模式

6.1 提示词辅助

用户不知道怎么"问" AI,是 AI 产品最大的使用障碍。

┌──────────────────────────────────────────┐
│  你可以这样问我:                          │
│                                          │
│  [帮我分析这张发票的合规风险]              │
│  [这笔交易的增值税税率应该是多少]          │
│  [比较一般纳税人和小规模纳税人的区别]       │
│                                          │
│  或者直接输入你的问题...                   │
│  ┌──────────────────────────────┐         │
│  │                              │         │
│  └──────────────────────────────┘         │
└──────────────────────────────────────────┘

6.2 输入增强模式

模式 描述 适用场景
自动补全 基于上下文预测输入 搜索/命令式输入
意图识别 模糊输入映射到结构化操作 自然语言命令
多模态输入 图片/文件 + 文本混合 文档分析/OCR
上下文注入 自动附加相关信息 基于当前页面上下文
引导式问答 通过选择逐步缩小范围 复杂查询/新手引导

6.3 反馈闭环

每次 AI 输出后都应提供反馈入口:

┌─────────────────────────────────────┐
│  AI 回答内容...                      │
│                                     │
│  ─────────────────────────────────  │
│  这个回答对你有帮助吗?               │
│  [准确] [部分准确] [不准确]           │
│                                     │
│  [复制] [重新生成] [编辑后重试]       │
└─────────────────────────────────────┘

反馈数据用途:

  • 短期:用户当次体验优化(重新生成/编辑)
  • 中期:个性化模型微调信号
  • 长期:产品迭代方向数据支撑

设计检查清单

在 AI 产品交付前,逐项核对:

Loading States:
  [ ] 所有 AI 调用有明确的加载指示
  [ ] 流式输出已实现(文本场景)
  [ ] 超时有兜底方案(> 30s 场景)

Uncertainty:
  [ ] 置信度有视觉化表达
  [ ] 低置信结果有明确标注
  [ ] 用户知道何时需要人工确认

Error Handling:
  [ ] 错误消息包含"发生了什么 + 为什么 + 怎么办"
  [ ] 降级链已配置并测试
  [ ] 安全拦截有友好解释

Trust:
  [ ] 来源引用已关联
  [ ] 用户可查看推理过程
  [ ] 用户可覆盖 AI 决策

Progressive Disclosure:
  [ ] 信息分层不超过 4 层
  [ ] 默认层级匹配目标用户
  [ ] 展开/折叠交互流畅

AI-Native Interaction:
  [ ] 提供示例提示词
  [ ] 反馈闭环已闭合
  [ ] 多模态输入已支持(如适用)

总结

AI 产品 UX 的核心命题是管理不确定性。六大模式的本质是:

  1. 加载态 —— 让等待变得可预期
  2. 不确定性传达 —— 让置信度可感知
  3. 错误处理 —— 让失败可恢复
  4. 信任构建 —— 让能力可验证
  5. 渐进披露 —— 让复杂度可消化
  6. AI 原生交互 —— 让使用门槛可降低

掌握这些模式,就掌握了 AI 产品体验的基本盘。


Maurice | maurice_wen@proton.me