深度思考
深度思考(Deep Thinking / Reasoning)是部分大模型提供的增强推理能力。模型在回答前会先进行内部"思考",输出推理过程后再给出最终答案,适合数学、逻辑、代码分析等复杂任务。
启用方式: 在请求中添加 reasoning_effort 参数即可开启深度思考。该参数支持三个级别:
| 值 | 说明 | 适用场景 |
|---|---|---|
low | 轻度思考,推理步数少 | 中等复杂度任务 |
medium | 平衡模式 | 大多数日常任务 |
high | 深度思维链推理 | 数学、编程、复杂逻辑推理 |
不传该参数时,hy3-preview 默认不启用深度思考(快思考模式)。
适用模型
| 模型 | 默认行为 | 说明 |
|---|---|---|
hy3-preview | 默认不思考,通过 reasoning_effort 按需开启 | 推荐,灵活控制推理深度 |
deepseek-r1 | 默认始终思考 | 无需额外参数,始终输出 reasoning_content |
具体支持情况请参考接入大模型中的模型列表。
备注
使用不支持深度思考的模型时传入相关参数不会报错,但不会产生思考内容。
使用方式
各协议开启方式
云开发 AI 支持多种协议接入,不同协议开启深度思考的参数不同:
| 协议 | 开启参数 | 说明 |
|---|---|---|
| Chat Completions | reasoning_effort: "low" / "medium" / "high" | OpenAI 标准协议,下方示例默认使用此协议 |
| Anthropic Messages | thinking: { type: "enabled", budget_tokens: N } | Anthropic 标准协议,budget_tokens 控制最大思考 token 数 |
| OpenAI Responses | reasoning: { effort: "low" / "medium" / "high" } | OpenAI Responses 协议 |
Anthropic Messages 协议示例
const Anthropic = require("@anthropic-ai/sdk");
const client = new Anthropic({
apiKey: "<YOUR_API_KEY>",
baseURL: "https://<ENV_ID>.api.tcloudbasegateway.com/v1/ai/cloudbase"
});
const response = await client.messages.create({
model: "hy3-preview",
max_tokens: 8000,
thinking: {
type: "enabled",
budget_tokens: 5000 // 最大思考 token 数
},
messages: [{ role: "user", content: "证明 √2 是无理数" }]
});
for (const block of response.content) {
if (block.type === "thinking") {
console.log("思考过程:", block.thinking);
} else if (block.type === "text") {
console.log("最终回答:", block.text);
}
}
OpenAI Responses 协议示例
const OpenAI = require("openai");
const client = new OpenAI({
apiKey: "<YOUR_API_KEY>",
baseURL: "https://<ENV_ID>.api.tcloudbasegateway.com/v1/ai/cloudbase"
});
const response = await client.responses.create({
model: "hy3-preview",
reasoning: { effort: "high" },
input: "证明 √2 是无理数"
});
for (const item of response.output) {
if (item.type === "reasoning") {
console.log("思考过程:", item.summary.map(s => s.text).join(""));
} else if (item.type === "message") {
console.log("最终回答:", item.content.map(c => c.text).join(""));
}
}
以下示例基于 Chat Completions 协议:
- CloudBase SDK
- OpenAI SDK
- cURL
const model = ai.createModel("cloudbase");
const result = await model.generateText({
model: "hy3-preview",
reasoning_effort: "high", // 开启深度思考:low / medium / high
messages: [{ role: "user", content: "证明 √2 是无理数" }]
});
// 通过 rawResponses 获取思考内容
const rawResponse = result.rawResponses[0];
const message = rawResponse.choices[0].message;
console.log("思考过程:", message.reasoning_content);
console.log("最终回答:", result.text);
非流式调用:
const OpenAI = require("openai");
const client = new OpenAI({
apiKey: "<YOUR_API_KEY>",
baseURL: "https://<ENV_ID>.api.tcloudbasegateway.com/v1/ai/cloudbase"
});
const completion = await client.chat.completions.create({
model: "hy3-preview",
messages: [{ role: "user", content: "证明 √2 是无理数" }],
reasoning_effort: "high" // 开启深度思考:low / medium / high
});
const message = completion.choices[0].message;
console.log("思考过程:", message.reasoning_content);
console.log("最终回答:", message.content);
流式调用:
const stream = await client.chat.completions.create({
model: "hy3-preview",
messages: [{ role: "user", content: "证明 √2 是无理数" }],
reasoning_effort: "high",
stream: true
});
let reasoning = "";
let answer = "";
for await (const chunk of stream) {
const delta = chunk.choices[0]?.delta;
// 思考过程
if (delta?.reasoning_content) {
reasoning += delta.reasoning_content;
process.stdout.write(`[思考] ${delta.reasoning_content}`);
}
// 最终回答
if (delta?.content) {
answer += delta.content;
process.stdout.write(delta.content);
}
}
curl -X POST 'https://<ENV_ID>.api.tcloudbasegateway.com/v1/ai/cloudbase/chat/completions' \
-H 'Authorization: Bearer <YOUR_API_KEY>' \
-H 'Content-Type: application/json' \
-d '{
"model": "hy3-preview",
"reasoning_effort": "high",
"messages": [
{"role": "user", "content": "证明 √2 是无理数"}
]
}'
输出格式
启用深度思考后,模型返回两部分内容:
| 字段 | 说明 | 用途 |
|---|---|---|
reasoning_content | 思考过程 | 展示给用户看(可折叠),帮助理解模型推理逻辑 |
content | 最终回答 | 实际使用的结果 |
非流式响应示例:
{
"choices": [{
"message": {
"role": "assistant",
"reasoning_content": "用户问的是 28 的质因数分解。我需要逐步分解:28 ÷ 2 = 14,14 ÷ 2 = 7,7 是质数。所以 28 = 2² × 7。",
"content": "28 的质因数分解为 2² × 7。\n\n分解步骤:\n1. 28 ÷ 2 = 14\n2. 14 ÷ 2 = 7\n3. 7 是质数,停止\n\n因此 28 = 2 × 2 × 7 = 2² × 7"
},
"finish_reason": "stop"
}]
}
前端展示建议
思考过程通常较长,建议以可折叠的方式展示:
function ThinkingMessage({ reasoning, content }) {
const [expanded, setExpanded] = useState(false);
return (
<div className="message">
{reasoning && (
<div className="thinking-block">
<button onClick={() => setExpanded(!expanded)}>
{expanded ? "▼" : "▶"} 思考过程
</button>
{expanded && (
<pre className="thinking-content">{reasoning}</pre>
)}
</div>
)}
<div className="answer">
<ReactMarkdown>{content}</ReactMarkdown>
</div>
</div>
);
}
多轮对话中的注意事项
使用深度思考模型进行多轮对话时,不要将 reasoning_content 追加到 messages 历史中:
const messages = [];
async function chat(userMessage) {
messages.push({ role: "user", content: userMessage });
const completion = await client.chat.completions.create({
model: "hy3-preview",
messages,
reasoning_effort: "high"
});
const choice = completion.choices[0].message;
// ✅ 正确:只追加 content
messages.push({
role: "assistant",
content: choice.content
});
// ❌ 错误:不要追加 reasoning_content
// messages.push({
// role: "assistant",
// content: choice.reasoning_content + choice.content
// });
return {
reasoning: choice.reasoning_content,
answer: choice.content
};
}
注意
将思考过程追加到 messages 会导致:
- 输入 Token 快速膨胀(思考过程通常很长)
- 模型回复质量下降
- 可能出现格式异常
适用场景
| 场景 | 推荐 | 原因 |
|---|---|---|
| 数学证明 / 推理 | ✅ 推荐 | 需要严谨的逐步推理 |
| 代码 Bug 分析 | ✅ 推荐 | 需要追踪执行流程 |
| 复杂逻辑判断 | ✅ 推荐 | 需要考虑多种条件 |
| 简单问答 | ❌ 不推荐 | 增加不必要的延迟和成本 |
| 实时对话 | ❌ 不推荐 | 思考过程导致首字延迟较高 |
| 创意写作 | ⚠️ 视情况 | 短文案不需要,长篇规划可能有帮助 |
成本与性能
| 指标 | 深度思考模型 | 普通模型 |
|---|---|---|
| 首字延迟 | 较高(需完成思考) | 较低 |
| 输出 Token | 较多(含思考内容) | 较少 |
| 回答准确性 | 较高(复杂任务) | 一般 |
| 计费 | 思考 Token 也计费 | 仅回答内容计费 |
提示
根据任务复杂度选择推理深度:简单任务不传 reasoning_effort(快思考),复杂推理任务设为 "high"(深度思考)。