作为Qwen系列全新一代的 混合推理模型 , Q wen3 在 GPQA、AIME24/25、LiveCodeBench 等多个权威评测中 表现出极具竞争力的结果。
在相同计算资源下,Qwen3 模型以更小的规模实现了对更大体量上一代模型的超越,真正做到了 “小而强大” 。通过引入创新的 MOE (混合专 家)架构,Qwen3 在效果上媲美上一代超大规模 Dens e 模型的同时, 效率显著提升, 使复杂任务处理 更加轻松高效。
此外,Qwe n3 融合了推理与非推理能力,在逻辑分析和创意生成等任务中表现卓越。预训练数据量达到月 36万亿 tokens, 并通 过多轮大规模强化学习与精细优化,在 推 理 、 工具调用 、 指令遵循 及 多语言能力 等方面显著提升。 其中,Qwen3-235B-A22B 表现尤为突出,刷新了 开源模型的智能水平新高, 显存占用仅为性能相近模型的三分之一。无论是数学推理、代码生成还是综合逻辑分析, Qwen3 均展现出卓越能力,稳居全球开源模型前列。在工具调用方面表现优异,大幅降低了复杂任务的实现门槛,同时还支持 119 种语言,覆盖全球主要语种,满足多样化需求。
Qwen3 引入了 “思考模式” 和 “非思考模式” ,使模型能够在不同场景下表现出最佳性能。在思考模式模式下,模型会进行多步推理和深度分析,类似于人类在解决复杂问题时的“深思熟虑”。 (eg:在回答数学题或编写复杂代码时,模型会反复验证逻辑并优化输出结果。)
在非思考模式模式下,模型优先追求响应速度和效率,适用于简单任务或实时交互。 (eg:在日常对话或快速问答中,模型会跳过复杂的推理步骤,直接给出答案。)
你可以通过简单的指令或配置文件在两种模式之间切换。
启用思考模式: 默认情况下,Qwen3 启用了思考能力 enable_thinking=True
。 在此模式下,模型会在生成响应前进行深度分析,并输出包裹在 < think>...</think>
块中的思考过程。
关闭思考模式 : 如果需要禁用思考行为,可以设置 enable_thinking=False ,使模型功能与 Qwen2.5-Instruct 保持一致。此模式适合对响应速度要求较高的场景。
软开关机制 : Qwen3 支持动态切换思考模式,你可通过 /think
启用深度推理 或 /no_think
快速关闭。模型会根据最新指令调整行为,灵活适应不同需求。 以下是一个多轮对话示例:
from transformers import AutoModelForCausalLM, AutoTokenizer
classQwenChatbot:
def __init__(self, model_name="Qwen3-30B-A3B/Qwen3-30B-A3B"):
self.tokenizer = AutoTokenizer.from_pretrained(model_name)
self.model = AutoModelForCausalLM.from_pretrained(model_name)
self.history = []
def generate_response(self, user_input):
messages = self.history + [{"role": "user", "content": user_input}]
text = self.tokenizer.apply_chat_template(
messages,
tokenize=False,
add_generation_prompt=True
)
inputs = self.tokenizer(text, return_tensors="pt")
response_ids = self.model.generate(**inputs, max_new_tokens=32768)[0][len(inputs.input_ids[0]):].tolist()
response = self.tokenizer.decode(response_ids, skip_special_tokens=True)
# Update history
self.history.append({"role": "user", "content": user_input})
self.history.append({"role": "assistant", "content": response})
return response
# Example Usage
if __name__ == "__main__":
chatbot = QwenChatbot()
# First input (without /think or /no_think tags, thinking mode is enabled by default)
user_input_1 = "How many r's in strawberries?"
print(f"User: {user_input_1}")
response_1 = chatbot.generate_response(user_input_1)
print(f"Bot: {response_1}")
print("----------------------")
# Second input with /no_think
user_input_2 = "Then, how many r's in blueberries? /no_think"
print(f"User: {user_input_2}")
response_2 = chatbot.generate_response(user_input_2)
print(f"Bot: {response_2}")
print("----------------------")
# Third input with /think
user_input_3 = "Really? /think"
print(f"User: {user_input_3}")
response_3 = chatbot.generate_response(user_input_3)
print(f"Bot: {response_3}")
如何在不同框架中使用 Qwen3 ? 我们提供了一个在 Hugging Face transformers 中使用 Qwen3-30B-A3B 的标准示例:
from modelscope import AutoModelForCausalLM, AutoTokenizer
model_name = "Qwen/Qwen3-30B-A3B"
# load the tokenizer and the model
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForCausalLM.from_pretrained(
model_name,
torch_dtype="auto",
device_map="auto"
)
# prepare the model input
prompt = "Give me a short introduction to large language model."
messages = [
{"role": "user", "content": prompt}
]
text = tokenizer.apply_chat_template(
messages,
tokenize=False,
add_generation_prompt=True,
enable_thinking=True # Switch between thinking and non-thinking modes. Default is True.
)
model_inputs = tokenizer([text], return_tensors="pt").to(model.device)
# conduct text completion
generated_ids = model.generate(
**model_inputs,
max_new_tokens=32768
)
output_ids = generated_ids[0][len(model_inputs.input_ids[0]):].tolist()
# parsing thinking content
try:
# rindex finding 151668 (</think>)
index = len(output_ids) - output_ids[::-1].index(151668)
except ValueError:
index = 0
thinking_content = tokenizer.decode(output_ids[:index], skip_special_tokens=True).strip("\n")
content = tokenizer.decode(output_ids[index:], skip_special_tokens=True).strip("\n")
print("thinking content:", thinking_content)
print("content:", content)
要禁用思考模式,只需对参数 enable_thinking 进行如下修改:
text = tokenizer.apply_chat_template(
messages,
tokenize=False,
add_generation_prompt=True,
enable_thinking=False # True is the default value for enable_thinking.
)
对于部署,您可以使用 sglang>=0.4.6.post1 或 vllm>=0.8.4来创建一个与 OpenAI API 兼容的 API endpoint:
SGLang:
python -m sglang.launch_server --model-path Qwen/Qwen3-30B-A3B --reasoning-parser qwen3
vLLM:
vllm serve Qwen/Qwen3-30B-A3B --enable-reasoning --reasoning-parser deepseek_r1
要禁用思考模式,您可以移除参数 --reasoning-parser(以及 --enable-reasoning)。
如果用于本地开发,您可以通过运行简单的命令 ollama run qwen3:30b-a3b 来使用 ollama 与模型进行交互。您也可以使用 LMStudio 或者 llama.cpp 以及 ktransformers 等代码库进行本地开发。
你还可以使用 Qwen-Agent 来充分发挥 Qwen3 的 Agent 能力。 Qwen-Agent 内部封装了工具调用模板和工具调用解析器,大大降低了代码复杂性。
要定义可用的工具,您可以使用 MCP 配置文件,使用 Qwen-Agent 内置的工具,或者自行集成其他工具。
from qwen_agent.agents import Assistant
# Define LLM
llm_cfg = {
'model': 'Qwen3-30B-A3B',
# Use the endpoint provided by Alibaba Model Studio:
# 'model_type': 'qwen_dashscope',
# 'api_key': os.getenv('DASHSCOPE_API_KEY'),
# Use a custom endpoint compatible with OpenAI API:
'model_server': 'http://localhost:8000/v1', # api_base
'api_key': 'EMPTY',
# Other parameters:
# 'generate_cfg': {
# # Add: When the response content is `<think>this is the thought</think>this is the answer;
# # Do not add: When the response has been separated by reasoning_content and content.
# 'thought_in_content': True,
# },
}
# Define Tools
tools = [
{'mcpServers': { # You can specify the MCP configuration file
'time': {
'command': 'uvx',
'args': ['mcp-server-time', '--local-timezone=Asia/Shanghai']
},
"fetch": {
"command": "uvx",
"args": ["mcp-server-fetch"]
}
}
},
'code_interpreter', # Built-in tools
]
# Define Agent
bot = Assistant(llm=llm_cfg, function_list=tools)
# Streaming generation
messages = [{'role': 'user', 'content': 'https://qwenlm.github.io/blog/ Introduce the latest developments of Qwen'}]
for responses in bot.run(messages=messages):
pass
print(responses)
huggingface
https://huggingface.co/Qwen/Qwen3-235B-A22B
魔搭社区
https://modelscope.cn/models/Qwen/Qwen3-235B-A22B 阿里云百炼(即将上线,并提供 100万tokens免费体验) https://www.aliyun.com/product/tongyi