什么是推理 Token?
当具有推理能力的模型处理提示时,它们会生成两种不同类型的内容:- 推理块:模型的内部思维链、问题分解和逐步分析
- 文本块:呈现给用户的最终、经过打磨的响应
AIMessage 中传递,可通过 contentBlocks 属性访问:
并非所有模型都会产生推理 Token。此模式仅适用于支持扩展思考或思维链输出的模型。标准聊天模型仅返回文本块。
使用场景
- 透明度:向用户展示模型的推理过程,以建立对其答案的信任
- 调试:检查模型的思维过程,以识别出错的地方
- 教育工具:通过揭示 AI 如何处理问题来教授学生解题方法
- 决策支持:让领域专家验证建议背后的推理
- 质量保证:在受监管行业中审计推理链以确保合规
提取推理和文本块
AIMessage 上的 contentBlocks 数组包含按生成顺序排列的所有块。按 type 过滤以分离推理和文本:
从 useStream 访问消息
导入你的智能体并将 typeof myAgent 作为类型参数传递给 useStream,以获得对状态值的类型安全访问:
构建 ThinkingBubble 组件
ThinkingBubble 将推理 Token 呈现在一个视觉上有区分度的可折叠容器中。用户可以展开它查看完整的思考过程,或折叠它专注于最终答案。
ThinkingBubble 样式
使用独特的视觉处理方式将推理块与常规消息区分开来:推理的流式输出指示器
当模型仍在生成推理 Token 时,显示动画指示器以传达思考正在进行中:渲染完整的 AI 响应
将ThinkingBubble 和标准文本气泡组合成一个 AIResponse 组件:
处理边界情况
没有推理的消息
并非每条 AI 消息都包含推理块。当contentBlocks 只有文本块时,渲染标准消息气泡而不显示 ThinkingBubble。
空推理块
某些模型会生成空的推理块作为占位符。将它们过滤掉:多轮推理-文本循环
单条消息可以在推理块和文本块之间交替。如果你需要保留这种交错顺序,按顺序遍历contentBlocks 而不是按类型分组:
最佳实践
- 默认折叠:按需显示推理,而非默认显示
- 显示字符数:让用户快速了解模型在响应中投入了多少思考
- 视觉区分:使用不同的颜色、边框或背景,使推理永远不会与实际答案混淆
- 过渡动画:平滑的展开/折叠动画提升感知质量
- 考虑无障碍:在切换按钮上使用适当的 ARIA 属性(
aria-expanded、aria-controls) - 预览时截断:折叠时显示推理的简短预览,让用户决定是否展开
将这些文档连接到 Claude、VSCode 等,通过 MCP 获取实时答案。

