在代碼補全、文本續寫等情境中,需要模型從已有的文本片段(首碼)開始繼續產生。Partial Mode 可提供精確控制能力,確保模型輸出的內容緊密銜接提供的首碼,提升產生結果的準確性與可控性。
使用方式
需在messages 數組中將最後一條訊息的 role 設定為 assistant,並在其 content 中提供首碼,在此訊息中設定參數 "partial": true。messages格式如下:
[
{
"role": "user",
"content": "請補全這個斐波那契函數,勿添加其它內容"
},
{
"role": "assistant",
"content": "def calculate_fibonacci(n):\n if n <= 1:\n return n\n else:\n",
"partial": true
}
]模型會以首碼內容為起點開始產生。
支援的模型
通義千問Max 系列
qwen3-max、qwen3-max-2025-09-23、qwen3-max-preview(非思考模式)、qwen-max、qwen-max-latest、qwen-max-2025-01-25及之後的快照模型
通義千問Plus 系列(非思考模式)
qwen-plus、qwen-plus-latest、qwen-plus-2025-01-25及之後的快照模型
通義千問Flash 系列(非思考模式)
qwen-flash、qwen-flash-2025-07-28及之後的快照模型
通義千問Coder 系列
qwen3-coder-plus、qwen3-coder-flash、qwen3-coder-480b-a35b-instruct、qwen3-coder-30b-a3b-instruct
通義千問VL 系列
qwen3-vl-plus 系列(非思考模式)
qwen3-vl-plus、qwen3-vl-plus-2025-09-23及之後的快照模型
qwen3-vl-flash 系列(非思考模式)
qwen3-vl-flash、qwen3-vl-flash-2025-10-15及之後的快照模型
qwen-vl-max 系列
qwen-vl-max、qwen-vl-max-latest、qwen-vl-max-2025-04-08及之後的快照模型
qwen-vl-plus 系列
qwen-vl-plus、qwen-vl-plus-latest、qwen-vl-plus-2025-01-25及之後的快照模型
通義千問Turbo 系列(非思考模式)
qwen-turbo、qwen-turbo-latest、qwen-turbo-2024-11-01及之後的快照模型
通義千問開源系列
Qwen3 開源模型(非思考模式)、Qwen2.5系列的文本模型、Qwen3-VL開源模型(非思考模式)
思考模式模型暫不支援首碼續寫功能。
快速開始
前提條件
已準備工作:擷取與配置 API Key並 配置API Key到環境變數(準備下線,併入配置 API Key)。如果通過 OpenAI SDK 或 DashScope SDK 進行調用,需要安裝SDK。如果您是子業務空間的成員,請確保超級管理員已為該業務空間進行 模型授權操作。
暫不支援 DashScope Java SDK。
範例程式碼
代碼補全是 Partial Mode 的核心應用情境。以下樣本示範如何使用 qwen3-coder-plus 模型補全一個 Python 函數。
OpenAI相容
Python
import os
from openai import OpenAI
# 1. 初始化用戶端
client = OpenAI(
# 新加坡和北京地區的API Key不同。擷取API Key:https://www.alibabacloud.com/help/zh/model-studio/get-api-key
# 如果您沒有配置環境變數,請在此處用您的API Key進行替換
api_key=os.getenv("DASHSCOPE_API_KEY"),
# 以下為新加坡地區url,若使用北京地區的模型,需將url替換為:https://dashscope.aliyuncs.com/compatible-mode/v1
base_url="https://dashscope-intl.aliyuncs.com/compatible-mode/v1",
)
# 2. 定義需要補全的代碼首碼
prefix = """def calculate_fibonacci(n):
if n <= 1:
return n
else:
"""
# 3. 發起 Partial Mode 請求
# 注意:messages 數組的最後一條訊息 role 為 "assistant",並包含 "partial": True
completion = client.chat.completions.create(
model="qwen3-coder-plus",
messages=[
{"role": "user", "content": "請補全這個斐波那契函數,勿添加其它內容"},
{"role": "assistant", "content": prefix, "partial": True},
],
)
# 4. 手動拼接首碼和模型產生的內容
generated_code = completion.choices[0].message.content
complete_code = prefix + generated_code
print(complete_code)返回結果
def calculate_fibonacci(n):
if n <= 1:
return n
else:
return calculate_fibonacci(n-1) + calculate_fibonacci(n-2)Node.js
import OpenAI from "openai";
const openai = new OpenAI({
// 若沒有配置環境變數,請用阿里雲百鍊API Key將下行替換為:apiKey: "sk-xxx",
apiKey: process.env.DASHSCOPE_API_KEY,
// 如果使用華北2(北京)地區的模型,需要將url替換為:https://dashscope.aliyuncs.com/compatible-mode/v1
baseURL: "https://dashscope-intl.aliyuncs.com/compatible-mode/v1"
});
// 定義需要補全的代碼首碼
const prefix = `def calculate_fibonacci(n):
if n <= 1:
return n
else:
`;
const completion = await openai.chat.completions.create({
model: "qwen3-coder-plus", // 使用代碼模型
messages: [
{ role: "user", content: "請補全這個斐波那契函數,勿添加其它內容" },
{ role: "assistant", content: prefix, partial: true }
],
});
// 手動拼接首碼和模型產生的內容
const generatedCode = completion.choices[0].message.content;
const completeCode = prefix + generatedCode;
console.log(completeCode);curl
# ======= 重要提示 =======
# 新加坡和北京地區的API Key不同。擷取API Key:https://www.alibabacloud.com/help/zh/model-studio/get-api-key
# 以下為新加坡地區url,若使用北京地區的模型,需將url替換為:https://dashscope.aliyuncs.com/compatible-mode/v1/chat/completions
# === 執行時請刪除該注釋 ===
curl -X POST https://dashscope-intl.aliyuncs.com/compatible-mode/v1/chat/completions \
-H "Authorization: Bearer $DASHSCOPE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "qwen3-coder-plus",
"messages": [
{
"role": "user",
"content": "請補全這個斐波那契函數,勿添加其它內容"
},
{
"role": "assistant",
"content": "def calculate_fibonacci(n):\n if n <= 1:\n return n\n else:\n",
"partial": true
}
]
}'返回結果
{
"choices": [
{
"message": {
"content": " return calculate_fibonacci(n-1) + calculate_fibonacci(n-2)",
"role": "assistant"
},
"finish_reason": "stop",
"index": 0,
"logprobs": null
}
],
"object": "chat.completion",
"usage": {
"prompt_tokens": 48,
"completion_tokens": 19,
"total_tokens": 67,
"prompt_tokens_details": {
"cache_type": "implicit",
"cached_tokens": 0
}
},
"created": 1756800231,
"system_fingerprint": null,
"model": "qwen3-coder-plus",
"id": "chatcmpl-d103b1cf-4bda-942f-92d6-d7ecabfeeccb"
}DashScope
Python
import os
import dashscope
# 以下為新加坡地區url,若使用北京地區的模型,需將url替換為:https://dashscope.aliyuncs.com/api/v1
dashscope.base_http_api_url = 'https://dashscope-intl.aliyuncs.com/api/v1'
# 定義需要補全的代碼首碼
prefix = """def calculate_fibonacci(n):
if n <= 1:
return n
else:
"""
messages = [
{
"role": "user",
"content": "請補全這個斐波那契函數,勿添加其它內容"
},
{
"role": "assistant",
"content": prefix,
"partial": True
}
]
response = dashscope.Generation.call(
# 新加坡和北京地區的API Key不同。擷取API Key:https://www.alibabacloud.com/help/zh/model-studio/get-api-key
# 若沒有配置環境變數,請用阿里雲百鍊API Key將下行替換為:api_key="sk-xxx",
api_key=os.getenv("DASHSCOPE_API_KEY"),
model='qwen3-coder-plus', # 使用代碼模型
messages=messages,
result_format='message',
)
# 手動拼接首碼和模型產生的內容
generated_code = response.output.choices[0].message.content
complete_code = prefix + generated_code
print(complete_code)返回結果
def calculate_fibonacci(n):
if n <= 1:
return n
else:
return calculate_fibonacci(n-1) + calculate_fibonacci(n-2)curl
# ======= 重要提示 =======
# 新加坡和北京地區的API Key不同。擷取API Key:https://www.alibabacloud.com/help/zh/model-studio/get-api-key
# 以下為新加坡地區url,若使用北京地區的模型,需將url替換為:https://dashscope.aliyuncs.com/api/v1/services/aigc/text-generation/generation
# === 執行時請刪除該注釋 ===
curl -X POST "https://dashscope.aliyuncs.com/api/v1/services/aigc/text-generation/generation" \
-H "Authorization: Bearer $DASHSCOPE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "qwen3-coder-plus",
"input":{
"messages":[
{
"role": "user",
"content": "請補全這個斐波那契函數,勿添加其它內容"
},
{
"role": "assistant",
"content": "def calculate_fibonacci(n):\n if n <= 1:\n return n\n else:\n",
"partial": true
}
]
},
"parameters": {
"result_format": "message"
}
}'返回結果
{
"output": {
"choices": [
{
"message": {
"content": " return calculate_fibonacci(n-1) + calculate_fibonacci(n-2)",
"role": "assistant"
},
"finish_reason": "stop"
}
]
},
"usage": {
"total_tokens": 67,
"output_tokens": 19,
"input_tokens": 48,
"prompt_tokens_details": {
"cache_type": "implicit",
"cached_tokens": 0
},
"cached_tokens": 0
},
"request_id": "c61c62e5-cf97-90bc-a4ee-50e5e117b93f"
}使用樣本
傳入圖片或視頻
通義千問VL模型支援在輸入映像、視頻資料時進行首碼續寫,可應用於產品介紹、社交媒體內容創作、新聞稿產生、創意文案等情境。
OpenAI相容
Python
import os
from openai import OpenAI
client = OpenAI(
# 若沒有配置環境變數,請用阿里雲百鍊API Key將下行替換為:api_key="sk-xxx",
# 新加坡和北京地區的API Key不同。擷取API Key:https://www.alibabacloud.com/help/zh/model-studio/get-api-key
api_key=os.getenv("DASHSCOPE_API_KEY"),
# 以下為新加坡地區base_url,若使用北京地區的模型,需將base_url替換為:https://dashscope.aliyuncs.com/compatible-mode/v1
base_url="https://dashscope-intl.aliyuncs.com/compatible-mode/v1"
)
completion = client.chat.completions.create(
model="qwen3-vl-plus",
messages=[
{
"role": "user",
"content": [
{
"type": "image_url",
"image_url": {
"url": "https://img.alicdn.com/imgextra/i3/O1CN01zFX2Bs1Q0f9pESgPC_!!6000000001914-2-tps-450-450.png"
},
},
{"type": "text", "text": "我要發社交媒體,請幫我想一下文案。"},
],
},
{
"role": "assistant",
"content": "今天發現了一家寶藏咖啡館",
"partial": True,
},
],
)
print(completion.choices[0].message.content)返回結果
,這款提拉米蘇簡直是味蕾的享受!每一口都能感受到咖啡與奶油的完美融合,幸福感爆棚~ #美食分享 #提拉米蘇 #咖啡時光
希望你喜歡這個文案!如果有任何修改需求,請隨時告訴我。Node.js
import OpenAI from "openai";
const openai = new OpenAI({
// 新加坡和北京地區的API Key不同。擷取API Key:https://www.alibabacloud.com/help/zh/model-studio/get-api-key
// 若沒有配置環境變數,請用百鍊API Key將下行替換為:apiKey: "sk-xxx"
apiKey: process.env.DASHSCOPE_API_KEY,
// 以下為新加坡地區base_url,若使用北京地區的模型,需將base_url替換為https://dashscope.aliyuncs.com/compatible-mode/v1
baseURL: "https://dashscope-intl.aliyuncs.com/compatible-mode/v1"
});
async function main() {
const response = await openai.chat.completions.create({
model: "qwen3-vl-plus",
messages: [
{
role: "user",
content: [
{
type: "image_url",
image_url: {
"url": "https://img.alicdn.com/imgextra/i3/O1CN01zFX2Bs1Q0f9pESgPC_!!6000000001914-2-tps-450-450.png"
}
},
{
type: "text",
text: "我要發社交媒體,請幫我想一下文案。"
}
]
},
{
role: "assistant",
content: "今天發現了一家寶藏咖啡館",
"partial": true
}
]
});
console.log(response.choices[0].message.content);
}
main();curl
# ======= 重要提示 =======
# 以下為新加坡地區base_url,若使用北京地區的模型,需將base_url替換為:https://dashscope.aliyuncs.com/compatible-mode/v1/chat/completions
# 新加坡和北京地區的API Key不同。擷取API Key:https://www.alibabacloud.com/help/zh/model-studio/get-api-key
# === 執行時請刪除該注釋 ===
curl -X POST 'https://dashscope.aliyuncs.com/compatible-mode/v1/chat/completions' \
-H "Authorization: Bearer $DASHSCOPE_API_KEY" \
-H 'Content-Type: application/json' \
-d '{
"model": "qwen3-vl-plus",
"messages": [
{
"role": "user",
"content": [
{
"type": "image_url",
"image_url": {
"url": "https://img.alicdn.com/imgextra/i3/O1CN01zFX2Bs1Q0f9pESgPC_!!6000000001914-2-tps-450-450.png"
}
},
{
"type": "text",
"text": "我要發社交媒體,請幫我想一下文案。"
}
]
},
{
"role": "assistant",
"content": "今天發現了一家寶藏咖啡館",
"partial": true
}
]
}'返回結果
{
"choices": [
{
"message": {
"content": ",這款提拉米蘇簡直是味蕾的享受!每一口都是咖啡與奶油的完美融合,幸福感爆棚~ #美食分享 #提拉米蘇 #咖啡時光\n\n希望你喜歡這個文案!如果有任何修改需求,請隨時告訴我。",
"role": "assistant"
},
"finish_reason": "stop",
"index": 0,
"logprobs": null
}
],
"object": "chat.completion",
"usage": {
"prompt_tokens": 282,
"completion_tokens": 56,
"total_tokens": 338,
"prompt_tokens_details": {
"cached_tokens": 0
}
},
"created": 1756802933,
"system_fingerprint": null,
"model": "qwen3-vl-plus",
"id": "chatcmpl-5780cbb7-ebae-9c63-b098-f8cc49e321f0"
}DashScope
Python
import os
import dashscope
# 以下為新加坡地區base_url,若使用北京地區的模型,需將base_url替換為:https://dashscope.aliyuncs.com/api/v1
dashscope.base_http_api_url = 'https://dashscope-intl.aliyuncs.com/api/v1'
messages = [
{
"role": "user",
"content": [
{
"image": "https://img.alicdn.com/imgextra/i3/O1CN01zFX2Bs1Q0f9pESgPC_!!6000000001914-2-tps-450-450.png"
},
{"text": "我要發社交媒體,請幫我想一下文案。"},
],
},
{"role": "assistant", "content": "今天發現了一家寶藏咖啡館", "partial": True},
]
response = dashscope.MultiModalConversation.call(
#若沒有配置環境變數, 請用百鍊API Key將下行替換為: api_key ="sk-xxx"
api_key=os.getenv("DASHSCOPE_API_KEY"),
model="qwen3-vl-plus",
messages=messages
)
print(response.output.choices[0].message.content[0]["text"])返回結果
,這款提拉米蘇簡直是味蕾的享受!每一口都能感受到咖啡與奶油的完美融合,幸福感爆棚~ #美食分享 #提拉米蘇 #咖啡時光
希望你喜歡這個文案!如果有任何修改需求,請隨時告訴我。curl
# ======= 重要提示 =======
# 以下為新加坡地區base_url,若使用北京地區的模型,需將base_url替換為:https://dashscope.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation
# 新加坡和北京地區的API Key不同。擷取API Key:https://www.alibabacloud.com/help/zh/model-studio/get-api-key
# === 執行時請刪除該注釋 ===
curl -X POST https://dashscope.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation \
-H "Authorization: Bearer $DASHSCOPE_API_KEY" \
-H 'Content-Type: application/json' \
-d '{
"model": "qwen3-vl-plus",
"input":{
"messages":[
{"role": "user",
"content": [
{"image": "https://img.alicdn.com/imgextra/i3/O1CN01zFX2Bs1Q0f9pESgPC_!!6000000001914-2-tps-450-450.png"},
{"text": "我要發社交媒體,請幫我想一下文案。"}]
},
{"role": "assistant",
"content": "今天發現了一家寶藏咖啡館",
"partial": true
}
]
}
}'返回結果
{
"output": {
"choices": [
{
"message": {
"content": [
{
"text": ",這款提拉米蘇簡直是味蕾的享受!每一口都能感受到咖啡與奶油的完美融合,幸福感爆棚~ #美食分享 #提拉米蘇 #咖啡時光\n\n希望你喜歡這個文案!如果有任何修改需求,請隨時告訴我。"
}
],
"role": "assistant"
},
"finish_reason": "stop"
}
]
},
"usage": {
"total_tokens": 339,
"input_tokens_details": {
"image_tokens": 258,
"text_tokens": 24
},
"output_tokens": 57,
"input_tokens": 282,
"output_tokens_details": {
"text_tokens": 57
},
"image_tokens": 258
},
"request_id": "c741328c-23dc-9286-bfa7-626a4092ca09"
}基於不完整輸出進行續寫
如果max_tokens參數設定過小,大模型可能返回不完整的內容。可使用 Partial Mode 對不完整的內容續寫,使其語義完整。
OpenAI相容
Python
import os
from openai import OpenAI
client = OpenAI(
# 新加坡和北京地區的API Key不同。擷取API Key:https://www.alibabacloud.com/help/zh/model-studio/get-api-key
# 如果您沒有配置環境變數,請在此處用您的API Key進行替換
api_key=os.getenv("DASHSCOPE_API_KEY"),
# 以下為新加坡地區url,若使用北京地區的模型,需將url替換為:https://dashscope.aliyuncs.com/compatible-mode/v1
base_url="https://dashscope-intl.aliyuncs.com/compatible-mode/v1",
)
def chat_completion(messages,max_tokens=None):
response = client.chat.completions.create(
model="qwen-plus",
messages=messages,
max_tokens=max_tokens
)
print(f"###停止產生原因:{response.choices[0].finish_reason}")
return response.choices[0].message.content
# 使用樣本
messages = [{"role": "user", "content": "請寫一個短篇科幻故事"}]
# 第一輪調用,設定max_tokens為40
first_content = chat_completion(messages, max_tokens=40)
print(first_content)
# 將第一輪的響應加入到assistant message,並設定partial=True
messages.append({"role": "assistant", "content": first_content, "partial": True})
# 第二輪調用
second_content = chat_completion(messages)
print("###完整內容:")
print(first_content+second_content)返回結果
停止產生原因為length表示觸發了max_tokens的限制;停止產生原因為stop表示大模型產生自然結束,或觸發了stop參數。
###停止產生原因:length
**《記憶的盡頭》**
在遙遠的未來,地球早已不再適合人類居住。大氣層被汙染,海洋乾涸,城市變成了廢墟。人類被迫遷移到一顆名為“
###停止產生原因:stop
###完整內容:
**《記憶的盡頭》**
在遙遠的未來,地球早已不再適合人類居住。大氣層被汙染,海洋乾涸,城市變成了廢墟。人類被迫遷移到一顆名為“伊甸星”的宜居星球,那裡有蔚藍的天空、清新的空氣和無盡的資源。
然而,伊甸星並非真正的天堂。它沒有人類的歷史,沒有過去,也沒有記憶。
......
**“如果我們忘記了自己是誰,我們還算是人類嗎?”**
——完——Node.js
import OpenAI from "openai";
const openai = new OpenAI({
// 新加坡和北京地區的API Key不同。擷取API Key:https://www.alibabacloud.com/help/zh/model-studio/get-api-key
// 若沒有配置環境變數,請用阿里雲百鍊API Key將下行替換為:apiKey: "sk-xxx",
apiKey: process.env.DASHSCOPE_API_KEY,
// 以下為新加坡地區url,若使用北京地區的模型,需將url替換為:https://dashscope.aliyuncs.com/compatible-mode/v1
baseURL: "https://dashscope-intl.aliyuncs.com/compatible-mode/v1"
});
async function chatCompletion(messages, maxTokens = null) {
const completion = await openai.chat.completions.create({
model: "qwen-plus",
messages: messages,
max_tokens: maxTokens
});
console.log(`###停止產生原因:${completion.choices[0].finish_reason}`);
return completion.choices[0].message.content;
}
// 使用樣本
async function main() {
let messages = [{"role": "user", "content": "請寫一個短篇科幻故事"}];
try {
// 第一輪調用,設定max_tokens為40
const firstContent = await chatCompletion(messages, 40);
console.log(firstContent);
// 將第一輪的響應加入到assistant message,並設定partial=true
messages.push({"role": "assistant", "content": firstContent, "partial": true});
// 第二輪調用
const secondContent = await chatCompletion(messages);
console.log("###完整內容:");
console.log(firstContent + secondContent);
} catch (error) {
console.error('執行出錯:', error);
}
}
// 運行樣本
main();DashScope
Python
範例程式碼
import os
import dashscope
# 以下為新加坡地區url,若使用北京地區的模型,需將url替換為:https://dashscope.aliyuncs.com/api/v1
dashscope.base_http_api_url = 'https://dashscope-intl.aliyuncs.com/api/v1'
def chat_completion(messages, max_tokens=None):
response = dashscope.Generation.call(
# 新加坡和北京地區的API Key不同。擷取API Key:https://www.alibabacloud.com/help/zh/model-studio/get-api-key
# 若沒有配置環境變數,請用阿里雲百鍊API Key將下行替換為:api_key="sk-xxx",
api_key=os.getenv("DASHSCOPE_API_KEY"),
model='qwen-plus',
messages=messages,
max_tokens=max_tokens,
result_format='message',
)
print(f"###停止產生原因:{response.output.choices[0].finish_reason}")
return response.output.choices[0].message.content
# 使用樣本
messages = [{"role": "user", "content": "請寫一個短篇科幻故事"}]
# 第一輪調用,設定max_tokens為40
first_content = chat_completion(messages, max_tokens=40)
print(first_content)
# 將第一輪的響應加入到assistant message,並設定partial=True
messages.append({"role": "assistant", "content": first_content, "partial": True})
# 第二輪調用
second_content = chat_completion(messages)
print("###完整內容:")
print(first_content + second_content)返回結果
###停止產生原因:length
標題:**《時間摺紙》**
---
公元2179年,人類終於掌握了時間旅行的技術。但這項技術並不是通過龐大的機器或複雜的能量場實現的,而是一
###停止產生原因:stop
###完整內容:
標題:**《時間摺紙》**
---
公元2179年,人類終於掌握了時間旅行的技術。但這項技術並不是通過龐大的機器或複雜的能量場實現的,而是一張紙。
一張能摺疊時間的紙。
它被稱為“時間摺紙”,由一種來自外星文明的未知物質製成。科學家們無法解釋它的原理,只知道,只要在紙上畫出某個情境,再進行特定的摺疊方式,就能開啟一扇通往過去或未來的門。
......
“你不是時間的鑰匙,只是提醒我們,未來,始終掌握在我們手中。”
然後,我把它撕成了片段。
---
**(完)**計費說明
根據請求的輸入 Token 和輸出 Token 計費。首碼部分作為輸入 Token。
錯誤碼
如果模型調用失敗並返回報錯資訊,請參見錯誤資訊進行解決。