# 深度思考
深度思考(Deep Thinking / Reasoning)是部分大模型提供的增强推理能力。模型在回答前会先进行内部"思考" ,输出推理过程后再给出最终答案,适合数学、逻辑、代码分析等复杂任务。
# 适用模型
| 模型 | 默认行为 | 说明 |
|---|---|---|
hy3-preview | 默认 low(轻量推理),通过 reasoning_effort 调节深度 | 推荐,灵活控制推理深度 |
deepseek-r1 | 默认始终思考 | 无需额外参数,始终输出 reasoning_content |
使用不支持深度思考的模型时传入相关参数不会报错,但不会产生思考内容。
# 启用方式
在请求参数中添加 reasoning_effort 即可开启深度思考,支持三个级别:
| 值 | 说明 | 适用场景 |
|---|---|---|
low | 轻量推理,推理步数少,速度快 | 简单任务 |
medium | 平衡模式 | 大多数日常、逻辑适中的复杂任务 |
high | 深度思维链推理,推理时间最长 | 高难度数学、编程、复杂逻辑推理 |
不传该参数时,hy3-preview 默认使用 low 级别(轻量推理)。
# 使用示例
# 非流式调用
const model = wx.cloud.extend.AI.createModel("cloudbase");
const res = await model.generateText({
model: "hy3-preview",
reasoning_effort: "high", // 开启深度思考
messages: [{role: "user", content: "证明 √2 是无理数"}],
});
// 获取思考过程和最终回答
const message = res.choices[0].message;
console.log("思考过程:", message.reasoning_content);
console.log("最终回答:", message.content);
# 流式调用
const model = wx.cloud.extend.AI.createModel("cloudbase");
const res = await model.streamText({
data: {
model: "hy3-preview",
reasoning_effort: "high",
messages: [{role: "user", content: "证明 √2 是无理数"}],
},
});
for await (const event of res.eventStream) {
if (event.data === "[DONE]") break;
const data = JSON.parse(event.data);
const delta = data.choices[0]?.delta;
// 思考过程
if (delta?.reasoning_content) {
console.log("[思考]", delta.reasoning_content);
}
// 最终回答
if (delta?.content) {
console.log(delta.content);
}
}
注意: 流式调用中需要使用
eventStream而非textStream来获取reasoning_content,因为textStream只返回最终回答的文本片段。
# 在小程序中展示思考过程
思考过程通常较长,建议以可折叠的方式展示。以下是一个完整的页面示例:
thinking.js:
Page({
data: {
reasoning: "",
answer: "",
showThinking: false,
isLoading: false,
},
toggleThinking() {
this.setData({showThinking: !this.data.showThinking});
},
async ask() {
this.setData({reasoning: "", answer: "", isLoading: true});
try {
const model = wx.cloud.extend.AI.createModel("cloudbase");
const res = await model.streamText({
data: {
model: "hy3-preview",
reasoning_effort: "high",
messages: [{role: "user", content: "9.11 和 9.9 哪个大?"}],
},
});
let reasoning = "";
let answer = "";
for await (const event of res.eventStream) {
if (event.data === "[DONE]") break;
const data = JSON.parse(event.data);
const delta = data.choices[0]?.delta;
if (delta?.reasoning_content) {
reasoning += delta.reasoning_content;
this.setData({reasoning});
}
if (delta?.content) {
answer += delta.content;
this.setData({answer});
}
}
} catch (error) {
console.error("调用失败:", error);
} finally {
this.setData({isLoading: false});
}
},
});
thinking.wxml:
<view class="container">
<!-- 思考过程(可折叠) -->
<view wx:if="{{reasoning}}" class="thinking-block">
<view class="thinking-header" bindtap="toggleThinking">
<text>{{showThinking ? '▼' : '▶'}} 思考过程</text>
</view>
<view wx:if="{{showThinking}}" class="thinking-content">
<text>{{reasoning}}</text>
</view>
</view>
<!-- 最终回答 -->
<view class="answer">{{answer}}</view>
<button bindtap="ask" disabled="{{isLoading}}">
{{isLoading ? '思考中...' : '提问'}}
</button>
</view>
# 多轮对话中的注意事项
使用深度思考模型进行多轮对话时,不要将 reasoning_content 追加到 messages 历史中:
const chatHistory = [];
async function chat(userInput) {
chatHistory.push({role: "user", content: userInput});
const model = wx.cloud.extend.AI.createModel("cloudbase");
const res = await model.generateText({
model: "hy3-preview",
reasoning_effort: "high",
messages: chatHistory,
});
const message = res.choices[0].message;
// ✅ 正确:只追加 content 到历史
chatHistory.push({
role: "assistant",
content: message.content,
});
// ❌ 错误:不要追加 reasoning_content
// chatHistory.push({
// role: "assistant",
// content: message.reasoning_content + message.content,
// });
return {
reasoning: message.reasoning_content,
answer: message.content,
};
}
将思考过程追加到 messages 会导致:
- 输入 token 快速膨胀(思考过程通常很长)
- 模型回复质量下降
- 可能出现格式异常
# 适用场景
| 场景 | 推荐 | 原因 |
|---|---|---|
| 数学证明 / 推理 | ✅ 推荐 | 需要严谨的逐步推理 |
| 代码 Bug 分析 | ✅ 推荐 | 需要追踪执行流程 |
| 复杂逻辑判断 | ✅ 推荐 | 需要考虑多种条件 |
| 简单问答 | ❌ 不推荐 | 增加不必要的延迟和成本 |
| 实时对话 | ❌ 不推荐 | 思考过程导致首字延迟较高 |
| 创意写作 | ⚠️ 视情况 | 短文案不需要,长篇规划可能有帮助 |
# 成本与性能
| 指标 | 深度思考模型 | 普通模型 |
|---|---|---|
| 首字延迟 | 较高(需完成思考) | 较低 |
| 输出 Token | 较多(含思考内容) | 较少 |
| 回答准确性 | 较高(复杂任务) | 一般 |
| 计费 | 思考 Token 也计费 | 仅回答内容计费 |
根据任务复杂度选择推理深度:简单任务不传
reasoning_effort(默认low,轻量推理),复杂推理任务设为"high"(深度思考)。