qwen3 中文文档 下载 App

Qwen3 多步推理执行 — 从计划到执行的完整闭环

为什么 Agent 需要思考模式

一个典型的多步 Agent 任务:

"帮我查明天北京的天气,如果下雨就提醒我带伞。"

模型需要:

  1. 理解意图(查天气 → 条件判断 → 提醒)
  2. 规划步骤(先调天气 API → 判断是否下雨 → 条件触发)
  3. 执行第一步(调工具查天气)
  4. 看结果 → 动态调整(如果不下雨,就不用提醒)
  5. 输出最终回复

每一步都需要"想一想"——尤其是第 4 步,模型需要根据中间结果来决定下一步。这正是思考模式的强项。

不带思考模式会怎样

非思考模式下,模型可能:

带思考模式的完整循环

messages = [
    {"role": "user", "content": "帮我查明天北京的天气,如果下雨就提醒我带伞。"}
]

for step in range(10):
    # 开启思考模式让模型规划和执行
    response = client.chat.completions.create(
        model="qwen3-plus",
        messages=messages,
        tools=tools,
        extra_body={"enable_thinking": True}
    )
    
    msg = response.choices[0].message
    
    # 可以选择只把思考链暴露给日志,不给工具
    if hasattr(msg, "reasoning_content") and msg.reasoning_content:
        print(f"[思考] {msg.reasoning_content[:100]}...")
    
    if not msg.tool_calls:
        # 任务完成
        break
    
    # 执行工具
    for tc in msg.tool_calls:
        result = execute_tool(tc.function.name, tc.function.arguments)
        messages.append({"role": "tool", "tool_call_id": tc.id, "content": str(result)})
    
    messages.append({"role": "assistant", "content": msg.content, "tool_calls": msg.tool_calls})

思考链能给开发者看吗

是的。当你在云端 API 开启思考模式时,思考内容会返回在 reasoning_content 字段。你可以:

但不建议在生产环境的用户界面中直接展示思考链——思考链可能包含模型中间的错误推理、自我怀疑等内容,对最终用户没有价值。

实用技巧

给 Agent 设计清晰的工具描述

工具的 description 字段是模型选择工具和生成参数的主要依据。写得越清晰,模型调用越准确:

# 好的描述
"获取指定城市的天气信息。city 参数应为中文城市名,如'北京'、'上海'。"

# 不好的描述
"天气 API"

限制工具数量

工具越多,模型选对的难度越大。建议:

设置最大步数

无限循环是 Agent 的常见问题。设置 max_steps 并在超过时兜底返回:

MAX_STEPS = 10
if step >= MAX_STEPS:
    return "抱歉,任务执行超时,请尝试更简单的请求。"

相关阅读