
什么是 REST API?
經(jīng)過(guò)后訓(xùn)練的模型,例如 Qwen3-30B-A3B,以及它們的預(yù)訓(xùn)練基座模型(如 Qwen3-30B-A3B-Base),現(xiàn)已在 Hugging Face、ModelScope 和 Kaggle 等平臺(tái)上開(kāi)放使用。對(duì)于部署,我們推薦使用 SGLang 和 vLLM 等框架;而對(duì)于本地使用,像 Ollama、LMStudio、MLX、llama.cpp 和 KTransformers 這樣的工具也非常值得推薦。這些選項(xiàng)確保用戶(hù)可以輕松將 Qwen3 集成到他們的工作流程中,無(wú)論是用于研究、開(kāi)發(fā)還是生產(chǎn)環(huán)境。
我們相信,Qwen3 的發(fā)布和開(kāi)源將極大地推動(dòng)大型基礎(chǔ)模型的研究與開(kāi)發(fā)。我們的目標(biāo)是為全球的研究人員、開(kāi)發(fā)者和組織賦能,幫助他們利用這些前沿模型構(gòu)建創(chuàng)新解決方案。
目前,全球開(kāi)發(fā)者、研究機(jī)構(gòu)和企業(yè)均可免費(fèi)在魔搭社區(qū)、HuggingFace等平臺(tái)下載模型并商用,也可以通過(guò)阿里云百煉調(diào)用Qwen3的API服務(wù)。個(gè)人用戶(hù)可立即通過(guò)通義APP直接體驗(yàn)Qwen3,夸克也即將全線(xiàn)接入Qwen3。
Qwen3 模型支持兩種思考模式:
1. 思考模式:在這種模式下,模型會(huì)逐步推理,經(jīng)過(guò)深思熟慮后給出最終答案。這種方法非常適合需要深入思考的復(fù)雜問(wèn)題。
2. 非思考模式:在此模式中,模型提供快速、近乎即時(shí)的響應(yīng),適用于那些對(duì)速度要求高于深度的簡(jiǎn)單問(wèn)題。
這種靈活性使用戶(hù)能夠根據(jù)具體任務(wù)控制模型進(jìn)行“思考”的程度。例如,復(fù)雜的問(wèn)題可以通過(guò)擴(kuò)展推理步驟來(lái)解決,而簡(jiǎn)單的問(wèn)題則可以直接快速作答,無(wú)需延遲。至關(guān)重要的是,這兩種模式的結(jié)合大大增強(qiáng)了模型實(shí)現(xiàn)穩(wěn)定且高效的“思考預(yù)算”控制能力。如上文所述,Qwen3 展現(xiàn)出可擴(kuò)展且平滑的性能提升,這與分配的計(jì)算推理預(yù)算直接相關(guān)。這樣的設(shè)計(jì)讓用戶(hù)能夠更輕松地為不同任務(wù)配置特定的預(yù)算,在成本效益和推理質(zhì)量之間實(shí)現(xiàn)更優(yōu)的平衡。
Qwen3 模型支持 119 種語(yǔ)言和方言。這一廣泛的多語(yǔ)言能力為國(guó)際應(yīng)用開(kāi)辟了新的可能性,讓全球用戶(hù)都能受益于這些模型的強(qiáng)大功能。
我們優(yōu)化了 Qwen3 模型的 Agent 和 代碼能力,同時(shí)也加強(qiáng)了對(duì) MCP 的支持。下面我們將提供一些示例,展示 Qwen3 是如何思考并與環(huán)境進(jìn)行交互的。
在預(yù)訓(xùn)練方面,Qwen3 的數(shù)據(jù)集相比 Qwen2.5 有了顯著擴(kuò)展。Qwen2.5是在 18 萬(wàn)億個(gè) token 上進(jìn)行預(yù)訓(xùn)練的,而 Qwen3 使用的數(shù)據(jù)量幾乎是其兩倍,達(dá)到了約 36 萬(wàn)億個(gè) token,涵蓋了 119 種語(yǔ)言和方言。為了構(gòu)建這個(gè)龐大的數(shù)據(jù)集,我們不僅從網(wǎng)絡(luò)上收集數(shù)據(jù),還從 PDF 文檔中提取信息。我們使用 Qwen2.5-VL 從這些文檔中提取文本,并用 Qwen2.5 改進(jìn)提取內(nèi)容的質(zhì)量。為了增加數(shù)學(xué)和代碼數(shù)據(jù)的數(shù)量,我們利用 Qwen2.5-Math 和 Qwen2.5-Coder 這兩個(gè)數(shù)學(xué)和代碼領(lǐng)域的專(zhuān)家模型合成數(shù)據(jù),合成了包括教科書(shū)、問(wèn)答對(duì)以及代碼片段等多種形式的數(shù)據(jù)。
預(yù)訓(xùn)練過(guò)程分為三個(gè)階段。在第一階段(S1),模型在超過(guò) 30 萬(wàn)億個(gè) token 上進(jìn)行了預(yù)訓(xùn)練,上下文長(zhǎng)度為 4K token。這一階段為模型提供了基本的語(yǔ)言技能和通用知識(shí)。在第二階段(S2),我們通過(guò)增加知識(shí)密集型數(shù)據(jù)(如 STEM、編程和推理任務(wù))的比例來(lái)改進(jìn)數(shù)據(jù)集,隨后模型又在額外的 5 萬(wàn)億個(gè) token 上進(jìn)行了預(yù)訓(xùn)練。在最后階段,我們使用高質(zhì)量的長(zhǎng)上下文數(shù)據(jù)將上下文長(zhǎng)度擴(kuò)展到 32K token,確保模型能夠有效地處理更長(zhǎng)的輸入。
由于模型架構(gòu)的改進(jìn)、訓(xùn)練數(shù)據(jù)的增加以及更有效的訓(xùn)練方法,Qwen3 Dense 基礎(chǔ)模型的整體性能與參數(shù)更多的Qwen2.5基礎(chǔ)模型相當(dāng)。例如,Qwen3-1.7B/4B/8B/14B/32B-Base分別與Qwen2.5-3B/7B/14B/32B/72B-Base 表現(xiàn)相當(dāng)。特別是在 STEM、編碼和推理等領(lǐng)域,Qwen3 Dense 基礎(chǔ)模型的表現(xiàn)甚至超過(guò)了更大規(guī)模的 Qwen2.5 模型。對(duì)于 Qwen3 MoE 基礎(chǔ)模型,它們?cè)趦H使用 10% 激活參數(shù)的情況下達(dá)到了與 Qwen2.5 Dense 基礎(chǔ)模型相似的性能。這帶來(lái)了訓(xùn)練和推理成本的顯著節(jié)省。
為了開(kāi)發(fā)能夠同時(shí)具備思考推理和快速響應(yīng)能力的混合模型,我們實(shí)施了一個(gè)四階段的訓(xùn)練流程。該流程包括:(1)長(zhǎng)思維鏈冷啟動(dòng),(2)長(zhǎng)思維鏈強(qiáng)化學(xué)習(xí),(3)思維模式融合,以及(4)通用強(qiáng)化學(xué)習(xí)。
在第一階段,我們使用多樣的的長(zhǎng)思維鏈數(shù)據(jù)對(duì)模型進(jìn)行了微調(diào),涵蓋了數(shù)學(xué)、代碼、邏輯推理和 STEM 問(wèn)題等多種任務(wù)和領(lǐng)域。這一過(guò)程旨在為模型配備基本的推理能力。第二階段的重點(diǎn)是大規(guī)模強(qiáng)化學(xué)習(xí),利用基于規(guī)則的獎(jiǎng)勵(lì)來(lái)增強(qiáng)模型的探索和鉆研能力。
在第三階段,我們?cè)谝环莅ㄩL(zhǎng)思維鏈數(shù)據(jù)和常用的指令微調(diào)數(shù)據(jù)的組合數(shù)據(jù)上對(duì)模型進(jìn)行微調(diào),將非思考模式整合到思考模型中。確保了推理和快速響應(yīng)能力的無(wú)縫結(jié)合。最后,在第四階段,我們?cè)诎ㄖ噶钭裱⒏袷阶裱?Agent 能力等在內(nèi)的 20 多個(gè)通用領(lǐng)域的任務(wù)上應(yīng)用了強(qiáng)化學(xué)習(xí),以進(jìn)一步增強(qiáng)模型的通用能力并糾正不良行為。
以下是如何在不同框架中使用 Qwen3 的簡(jiǎn)單指南。首先,我們提供了一個(gè)在 Hugging Face transformers
中使用 Qwen3-30B-A3B 的標(biāo)準(zhǔn)示例:
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)
要禁用思考模式,只需對(duì)參數(shù) enable_thinking 進(jìn)行如下修改:
text = tokenizer.apply_chat_template(
messages,
tokenize=False,
add_generation_prompt=True,
enable_thinking=False # True is the default value for enable_thinking.
)
對(duì)于部署,您可以使用 sglang>=0.4.6.post1 或 vllm>=0.8.4 來(lái)創(chuàng)建一個(gè)與 OpenAI API 兼容的 API endpoint:
python -m sglang.launch_server --model-path Qwen/Qwen3-30B-A3B --reasoning-parser qwen3
vllm serve Qwen/Qwen3-30B-A3B --enable-reasoning --reasoning-parser deepseek_r1
要禁用思考模式,您可以移除參數(shù) –reasoning-parser(以及 –enable-reasoning)。
如果用于本地開(kāi)發(fā),您可以通過(guò)運(yùn)行簡(jiǎn)單的命令 ollama run qwen3:30b-a3b 來(lái)使用ollama 與模型進(jìn)行交互。您也可以使用 LMStudio 或者 llama.cpp 以及 ktransformers 等代碼庫(kù)進(jìn)行本地開(kāi)發(fā)。
我們提供了一種軟切換機(jī)制,允許用戶(hù)在 enable_thinking=True 時(shí)動(dòng)態(tài)控制模型的行為。具體來(lái)說(shuō),您可以在用戶(hù)提示或系統(tǒng)消息中添加 /think 和 /no_think 來(lái)逐輪切換模型的思考模式。在多輪對(duì)話(huà)中,模型會(huì)遵循最近的指令。
以下是一個(gè)多輪對(duì)話(huà)的示例:
from transformers import AutoModelForCausalLM, AutoTokenizer
class QwenChatbot:
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 在工具調(diào)用能力方面表現(xiàn)出色。我們推薦使用 Qwen-Agent 來(lái)充分發(fā)揮 Qwen3 的 Agent 能力。Qwen-Agent 內(nèi)部封裝了工具調(diào)用模板和工具調(diào)用解析器,大大降低了代碼復(fù)雜性。
要定義可用的工具,您可以使用 MCP 配置文件,使用 Qwen-Agent 內(nèi)置的工具,或者自行集成其他工具。
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)
感謝眾多朋友一直以來(lái)對(duì) Qwen 的鼎力支持!我們歡迎更多新朋友加入我們的社區(qū),幫助我們變得更好!
Qwen3 代表了我們?cè)谕ㄍㄓ萌斯ぶ悄埽ˋGI)和超級(jí)人工智能(ASI)旅程中的一個(gè)重要里程碑。通過(guò)擴(kuò)大預(yù)訓(xùn)練和強(qiáng)化學(xué)習(xí)的規(guī)模,我們實(shí)現(xiàn)了更高層次的智能。我們無(wú)縫集成了思考模式與非思考模式,為用戶(hù)提供了靈活控制思考預(yù)算的能力。此外,我們還擴(kuò)展了對(duì)多種語(yǔ)言的支持,幫助全球更多用戶(hù)。
展望未來(lái),我們計(jì)劃從多個(gè)維度提升我們的模型。這包括優(yōu)化模型架構(gòu)和訓(xùn)練方法,以實(shí)現(xiàn)幾個(gè)關(guān)鍵目標(biāo):擴(kuò)展數(shù)據(jù)規(guī)模、增加模型大小、延長(zhǎng)上下文長(zhǎng)度、拓寬模態(tài)范圍,并利用環(huán)境反饋推進(jìn)強(qiáng)化學(xué)習(xí)以進(jìn)行長(zhǎng)周期推理。我們認(rèn)為,我們正從專(zhuān)注于訓(xùn)練模型的時(shí)代過(guò)渡到以訓(xùn)練 Agent 為中心的時(shí)代。我們的下一代迭代將為大家的工作和生活帶來(lái)有意義的進(jìn)步。
文章轉(zhuǎn)載自: 通義千問(wèn)Qwen3,開(kāi)源!
什么是 REST API?
調(diào)用Leonardo.ai API 實(shí)現(xiàn)文生圖:小白上手指南
一文搞懂在 HTTP 如何 one-api 調(diào)用,實(shí)操指南來(lái)襲!
如何在Excel VBA中調(diào)用REST API
Shopify API 授權(quán):全面指南與最佳實(shí)踐
FastOpenAPI:Python框架API文檔自動(dòng)化生成工具,解放你的雙手!
如何在 Spring Boot REST 中實(shí)現(xiàn)多線(xiàn)程 API
云原生 API 網(wǎng)關(guān) APISIX 入門(mén)教程
如何獲取通義千問(wèn) API Key 密鑰(分步指南)
對(duì)比大模型API的內(nèi)容創(chuàng)意新穎性、情感共鳴力、商業(yè)轉(zhuǎn)化潛力
一鍵對(duì)比試用API 限時(shí)免費(fèi)