文章主要介绍了 Qwen 系列全新一代的混合推理模型 Qwen3 的开源信息。Qwen3 在 GPQA、AIME24/25、LiveCodeBench 等多个权威评测中表现出极具竞争力的结果。通过引入创新的 MOE (混合专家) 架构,Qwen3 在效果上媲美上一代超大规模 Dense 模型的同时,效率显著提升,降低了计算成本。Qwen3 融合了推理与非推理能力,在逻辑分析和创意生成等任务中表现卓越。此外,Qwen3 引入了“思考模式”和“非思考模式”,使模型能够在不同场景下表现出最佳性能,例如在复杂问题求解时采用思考模式进行深度分析,日常对话时采用非思考模式以追求速度。文章还提供了在 Hugging Face transformers 和 ModelScope 中使用 Qwen3 的示例代码,以及使用 SGLang、vLLM 和 ollama 进行部署的方法。其中,SGLang 适用于快速部署,vLLM 适用于高吞吐量场景,ollama 适用于本地开发。文章还展示了 Qwen-Agent 的使用方式,方便用户进行工具调用。最后,文章给出了 Qwen3 在 Hugging Face、魔搭社区和阿里云百炼的链接。


性能卓越
灵活适配多场景需求
作为Qwen系列全新一代的混合推理模型,Qwen3 在 GPQA、AIME24/25、LiveCodeBench 等多个权威评测中表现出极具竞争力的结果。


在相同计算资源下,Qwen3 模型以更小的规模实现了对更大体量上一代模型的超越,真正做到了“小而强大”。通过引入创新的 MOE(混合专家)架构,Qwen3 在效果上媲美上一代超大规模 Dense 模型的同时,效率显著提升,使复杂任务处理更加轻松高效。
此外,Qwen3 融合了推理与非推理能力,在逻辑分析和创意生成等任务中表现卓越。预训练数据量达到月 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, AutoTokenizerclassQwenChatbot: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 historyself.history.append({"role": "user", "content": user_input})self.history.append({"role": "assistant", "content": response})return response# Example Usageif __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_thinkuser_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 /thinkuser_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, AutoTokenizermodel_name = "Qwen/Qwen3-30B-A3B"# load the tokenizer and the modeltokenizer = AutoTokenizer.from_pretrained(model_name)model = AutoModelForCausalLM.from_pretrained(model_name,torch_dtype="auto",device_map="auto")# prepare the model inputprompt = "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 completiongenerated_ids = model.generate(**model_inputs,max_new_tokens=32768)output_ids = generated_ids[0][len(model_inputs.input_ids[0]):].tolist()# parsing thinking contenttry:# rindex finding 151668 (</think>)index = len(output_ids) - output_ids[::-1].index(151668)except ValueError:index = 0thinking_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 等代码库进行本地开发。
Agent示例
你还可以使用 Qwen-Agent 来充分发挥 Qwen3 的 Agent 能力。Qwen-Agent 内部封装了工具调用模板和工具调用解析器,大大降低了代码复杂性。
要定义可用的工具,您可以使用 MCP 配置文件,使用 Qwen-Agent 内置的工具,或者自行集成其他工具。
from qwen_agent.agents import Assistant# Define LLMllm_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 Toolstools = [{'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 Agentbot = Assistant(llm=llm_cfg, function_list=tools)# Streaming generationmessages = [{'role': 'user', 'content': 'https://qwenlm.github.io/blog/ Introduce the latest developments of Qwen'}]for responses in bot.run(messages=messages):passprint(responses)
✅ huggingface
https://huggingface.co/Qwen/Qwen3-235B-A22B
✅ 魔搭社区
https://modelscope.cn/models/Qwen/Qwen3-235B-A22B
https://www.aliyun.com/product/tongyi
