資料採礦模型專門針對資訊抽取、內容審核、分類打標和摘要產生任務進行設計。相比通用對話模型,該模型能夠快速且精確地輸出規範的結構化資料(如JSON格式),解決通用對話模型返回不規範回複結構或提取資訊不夠準確的問題。
本文檔僅適用於中國大陸版(北京地區),需使用中國(北京)地區的API Key。
使用方式
Qwen-Doc-Turbo 支援通過以下三種方式從檔案中提取資訊:
通過檔案URL傳入 (推薦):
直接在API請求中提供檔案的公開URL,模型即可訪問並解析內容。此方法最多支援單次傳入10個檔案,並可通過 file_parsing_strategy 參數指定解析策略(auto、text_only 或 text_and_images),是處理多檔案的唯一方式。
SDK: 檔案URL方式當前僅支援DashScope協議,可以選擇使用
DashScope Python SDK或者HTTP方式調用(如curl)
通過檔案ID傳入:
先將本地檔案上傳至百鍊平台,產生一個當前阿里雲帳號下唯一的
file-id並開始解析,然後在後續的API請求中引用此id。此方法相容OpenAI SDK,適合需要重複使用同一份檔案或處理本地檔案的情境。SDK: 檔案上傳與管理使用
OpenAI SDK,模型調用相容OpenAI SDK和DashScope SDK。
通過純文字傳入:
對於較短或臨時的常值內容,可以直接將其作為
system訊息的一部分傳入。SDK: 相容
OpenAI SDK和DashScope SDK。
前提條件
如果通過SDK調用,還需要安裝OpenAI SDK或DashScope SDK。
通過檔案URL傳入
通過檔案URL直接提取結構化資料,支援最多10個檔案同時處理。此處以傳入客戶回函報告.txt檔案為例。
檔案URL方式當前僅支援DashScope協議,可以選擇使用DashScope Python SDK或者HTTP方式調用(如curl)
import os
import dashscope
response = dashscope.Generation.call(
api_key=os.getenv('DASHSCOPE_API_KEY'), # 如果您沒有配置環境變數,請在此處替換您的API-KEY
model='qwen-doc-turbo',
messages=[
{"role": "system","content": "You are a helpful assistant."},
{
"role": "user",
"content": [
{
"type": "text",
"text": "從這份客戶回函報告中,提取所有反饋資訊,並整理成一個標準的JSON數組。每個對象需要包含:feedback_id (字串)、product_name (字串)、user_name (字串)、rating_score (1-5的整數)、feedback_type (字串) 和 summary (不超過30字的中文摘要)。"
},
{
"type": "doc_url",
"doc_url": [
"https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20250910/gokhyx/%E5%AE%A2%E6%88%B7%E5%8F%8D%E9%A6%88%E6%8A%A5%E5%91%8A.txt"
],
"file_parsing_strategy": "auto"
}
]
}]
)
try:
if response.status_code == 200:
print(response.output.choices[0].message.content)
else:
print(f"請求失敗,狀態代碼: {response.status_code}")
print(f"錯誤碼: {response.code}")
print(f"錯誤資訊: {response.message}")
print("請參考文檔:https://www.alibabacloud.com/help/zh/model-studio/error-code")
except Exception as e:
print(f"發生錯誤: {e}")
print("請參考文檔:https://www.alibabacloud.com/help/zh/model-studio/error-code")
curl --location 'https://dashscope.aliyuncs.com/api/v1/services/aigc/text-generation/generation' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer $DASHSCOPE_API_KEY' \
--header 'X-DashScope-SSE: enable' \
--data '{
"model": "qwen-doc-turbo",
"input": {
"messages": [
{
"role": "system",
"content": "you are a helpful assistant."
},
{
"role": "user",
"content": [
{
"type": "text",
"text": "從這份客戶回函報告中,提取所有反饋資訊,並整理成一個標準的JSON數組。每個對象需要包含:feedback_id (字串)、product_name (字串)、user_name (字串)、rating_score (1-5的整數)、feedback_type (字串) 和 summary (不超過30字的中文摘要)。"
},
{
"type": "doc_url",
"doc_url": [
"https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20250910/gokhyx/%E5%AE%A2%E6%88%B7%E5%8F%8D%E9%A6%88%E6%8A%A5%E5%91%8A.txt"
],
"file_parsing_strategy": "auto"
}
]
}
]
}
}'
通過檔案ID傳入
上傳檔案
以客戶回函報告.txt為例,通過OpenAI相容介面上傳到阿里雲百鍊平台的安全儲存空間,擷取返回的file-id。有關檔案上傳介面的詳細參數解釋及調用方式,請參考API文檔頁面進行瞭解。
Python
import os
from pathlib import Path
from openai import OpenAI
client = OpenAI(
api_key=os.getenv("DASHSCOPE_API_KEY"), # 如果您沒有配置環境變數,請在此處替換您的API-KEY
base_url="https://dashscope.aliyuncs.com/compatible-mode/v1", # 填寫DashScope服務base_url
)
file_object = client.files.create(file=Path("客戶回函報告.txt"), purpose="file-extract")
# 列印file-id用於後續模型對話
print(file_object.id)
Java
import com.openai.client.OpenAIClient;
import com.openai.client.okhttp.OpenAIOkHttpClient;
import com.openai.models.files.*;
import java.nio.file.Paths;
public class Main {
public static void main(String[] args) {
// 建立用戶端,使用環境變數中的API密鑰
OpenAIClient client = OpenAIOkHttpClient.builder()
.apiKey(System.getenv("DASHSCOPE_API_KEY"))
.baseUrl("https://dashscope.aliyuncs.com/compatible-mode/v1")
.build();
// 設定檔案路徑,請根據實際需求修改路徑與檔案名稱
Path filePath = Paths.get("src/main/java/org/example/客戶回函報告.txt");
// 建立檔案上傳參數
FileCreateParams fileParams = FileCreateParams.builder()
.file(filePath)
.purpose(FilePurpose.of("file-extract"))
.build();
// 上傳檔案列印fileid
FileObject fileObject = client.files().create(fileParams);
// # 列印file-id用於後續模型對話
System.out.println(fileObject.id());
}
}curl
curl --location --request POST 'https://dashscope.aliyuncs.com/compatible-mode/v1/files' \
--header "Authorization: Bearer $DASHSCOPE_API_KEY" \
--form 'file=@"客戶回函報告.txt"' \
--form 'purpose="file-extract"'運行以上代碼,您可以得到本次上傳檔案對應的file-id。
通過檔案ID傳入資訊並對話
將擷取的 file-id 嵌入到System Message 中。第一條System Message用於設定角色向模型提問,後續的System Message用於傳入 file-id,User Message包含針對檔案的具體問題。
import os
from openai import OpenAI, BadRequestError
client = OpenAI(
api_key=os.getenv("DASHSCOPE_API_KEY"), # 如果您沒有配置環境變數,請在此處替換您的API-KEY
base_url="https://dashscope.aliyuncs.com/compatible-mode/v1",
)
try:
completion = client.chat.completions.create(
model="qwen-doc-turbo",
messages=[
{'role': 'system', 'content': 'You are a helpful assistant.'},
# 請將 '{FILE_ID}'替換為您實際對話情境所使用的 fileid
{'role': 'system', 'content': 'fileid://{FILE_ID}'},
{'role': 'user', 'content': '從這份客戶回函報告中,提取所有反饋資訊,並整理成一個標準的JSON數組。每個對象需要包含:feedback_id (字串)、product_name (字串)、user_name (字串)、rating_score (1-5的整數)、feedback_type (字串) 和 summary (不超過30字的中文摘要)。'}
],
# 本程式碼範例均採用流式輸出,以清晰和直觀地展示模型輸出過程。如果您希望查看非流式輸出的案例,請參見https://www.alibabacloud.com/help/zh/model-studio/text-generation
stream=True,
stream_options={"include_usage": True}
)
full_content = ""
for chunk in completion:
if chunk.choices and chunk.choices[0].delta.content:
full_content += chunk.choices[0].delta.content
print(chunk.model_dump())
print(full_content)
except BadRequestError as e:
print(f"錯誤資訊:{e}")
print("請參考文檔:https://www.alibabacloud.com/help/zh/model-studio/error-code")import com.openai.client.OpenAIClient;
import com.openai.client.okhttp.OpenAIOkHttpClient;
import com.openai.core.http.StreamResponse;
import com.openai.models.chat.completions.*;
public class Main {
public static void main(String[] args) {
// 建立用戶端,使用環境變數中的API密鑰
OpenAIClient client = OpenAIOkHttpClient.builder()
// 若沒有配置環境變數,請用阿里雲百鍊API Key將下行替換為:.apiKey("sk-xxx");
.apiKey(System.getenv("DASHSCOPE_API_KEY"))
.baseUrl("https://dashscope.aliyuncs.com/compatible-mode/v1")
.build();
ChatCompletionCreateParams chatParams = ChatCompletionCreateParams.builder()
.addSystemMessage("You are a helpful assistant.")
// 請將 '{FILE_ID}'替換為您實際對話情境所使用的 fileid
.addSystemMessage("fileid://{FILE_ID}")
.addUserMessage("從這份客戶回函報告中,提取所有反饋資訊,並整理成一個標準的JSON數組。每個對象需要包含:feedback_id (字串)、product_name (字串)、user_name (字串)、rating_score (1-5的整數)、feedback_type (字串) 和 summary (不超過30字的中文摘要)。")
.model("qwen-doc-turbo")
.build();
try (StreamResponse<ChatCompletionChunk> streamResponse = client.chat().completions().createStreaming(chatParams)) {
streamResponse.stream().forEach(chunk -> {
String content = chunk.choices().get(0).delta().content().orElse("");
if (!content.isEmpty()) {
System.out.print(content);
}
});
} catch (Exception e) {
System.err.println("錯誤資訊:" + e.getMessage());
}
}
}curl --location 'https://dashscope.aliyuncs.com/compatible-mode/v1/chat/completions' \
--header "Authorization: Bearer $DASHSCOPE_API_KEY" \
--header "Content-Type: application/json" \
--data '{
"model": "qwen-doc-turbo",
"messages": [
{"role": "system","content": "You are a helpful assistant."},
{"role": "system","content": "fileid://{FILE_ID}"},
{"role": "user","content": "從這份客戶回函報告中,提取所有反饋資訊,並整理成一個標準的JSON數組。每個對象需要包含:feedback_id (字串)、product_name (字串)、user_name (字串)、rating_score (1-5的整數)、feedback_type (字串) 和 summary (不超過30字的中文摘要)。"}
],
"stream": true,
"stream_options": {
"include_usage": true
}
}'通過純文字傳入
除了通過 file-id 傳入檔案資訊外,您還可以直接使用字串傳入檔案內容。在此方法下,為避免模型混淆角色設定與檔案內容,請確保在 messages 的第一條訊息中添加用於角色設定的資訊。
受限於API調用請求體大小,如果您的常值內容長度超過9,000Token,請通過檔案ID傳入資訊對話。
import os
from openai import OpenAI, BadRequestError
client = OpenAI(
api_key=os.getenv("DASHSCOPE_API_KEY"), # 如果您沒有配置環境變數,請在此處替換您的API-KEY
base_url="https://dashscope.aliyuncs.com/compatible-mode/v1",
)
try:
completion = client.chat.completions.create(
model="qwen-doc-turbo",
messages=[
{'role': 'system', 'content': 'You are a helpful assistant.'},
{'role': 'system', 'content': '反饋ID: 001 使用者: 張偉 (vip_zhang@example.com) 產品: 百鍊 AI-Writer Pro......'},
{'role': 'user', 'content': '從這份客戶回函報告中,提取所有反饋資訊,並整理成一個標準的JSON數組。每個對象需要包含:feedback_id (字串)、product_name (字串)、user_name (字串)、rating_score (1-5的整數)、feedback_type (字串) 和 summary (不超過30字的中文摘要)。'}
],
# 本程式碼範例均採用流式輸出,以清晰和直觀地展示模型輸出過程。如果您希望查看非流式輸出的案例,請參見https://www.alibabacloud.com/help/zh/model-studio/text-generation
stream=True,
stream_options={"include_usage": True}
)
full_content = ""
for chunk in completion:
if chunk.choices and chunk.choices[0].delta.content:
full_content += chunk.choices[0].delta.content
print(chunk.model_dump())
print(full_content)
except BadRequestError as e:
print(f"錯誤資訊:{e}")
print("請參考文檔:https://www.alibabacloud.com/help/zh/model-studio/error-code")import com.openai.client.OpenAIClient;
import com.openai.client.okhttp.OpenAIOkHttpClient;
import com.openai.core.http.StreamResponse;
import com.openai.models.chat.completions.*;
public class Main {
public static void main(String[] args) {
// 建立用戶端,使用環境變數中的API密鑰
OpenAIClient client = OpenAIOkHttpClient.builder()
// 若沒有配置環境變數,請用阿里雲百鍊API Key將下行替換為:.apiKey("sk-xxx");
.apiKey(System.getenv("DASHSCOPE_API_KEY"))
.baseUrl("https://dashscope.aliyuncs.com/compatible-mode/v1")
.build();
ChatCompletionCreateParams chatParams = ChatCompletionCreateParams.builder()
.addSystemMessage("You are a helpful assistant.")
.addSystemMessage("反饋ID: 001 使用者: 張偉 (vip_zhang@example.com) 產品: 百鍊 AI-Writer Pro......")
.addUserMessage("從這份客戶回函報告中,提取所有反饋資訊,並整理成一個標準的JSON數組。每個對象需要包含:feedback_id (字串)、product_name (字串)、user_name (字串)、rating_score (1-5的整數)、feedback_type (字串) 和 summary (不超過30字的中文摘要)。")
.model("qwen-doc-turbo")
.build();
try (StreamResponse<ChatCompletionChunk> streamResponse = client.chat().completions().createStreaming(chatParams)) {
streamResponse.stream().forEach(chunk -> {
String content = chunk.choices().get(0).delta().content().orElse("");
if (!content.isEmpty()) {
System.out.print(content);
}
});
} catch (Exception e) {
System.err.println("錯誤資訊:" + e.getMessage());
}
}
}curl --location 'https://dashscope.aliyuncs.com/compatible-mode/v1/chat/completions' \
--header "Authorization: Bearer $DASHSCOPE_API_KEY" \
--header "Content-Type: application/json" \
--data '{
"model": "qwen-doc-turbo",
"messages": [
{"role": "system","content": "You are a helpful assistant."},
{"role": "system","content": "反饋ID: 001 使用者: 張偉 (vip_zhang@example.com) 產品: 百鍊 AI-Writer Pro..."},
{"role": "user","content": "從這份客戶回函報告中,提取所有反饋資訊,並整理成一個標準的JSON數組。每個對象需要包含:feedback_id (字串)、product_name (字串)、user_name (字串)、rating_score (1-5的整數)、feedback_type (字串) 和 summary (不超過30字的中文摘要)。"}
],
"stream": true,
"stream_options": {
"include_usage": true
}
}'模型定價
模型名稱 | 上下文長度 | 最大輸入 | 最大輸出 | 輸入成本 | 輸出成本 | 免費額度 |
(Token數) | (每百萬Token) | |||||
qwen-doc-turbo | 262,144 | 253,952 | 8,192 | $0.087 | $0.144 | 無免費額度 |
常見問題
通過OpenAI檔案相容介面上傳檔案後,檔案將被儲存在何處?
所有通過OpenAI檔案相容介面上傳的檔案均將被儲存在當前阿里雲帳號下的阿里雲百鍊儲存空間且不會產生任何費用,關於所上傳檔案的資訊查詢與管理請參考OpenAI檔案介面。
通過檔案URL方式上傳時,檔案解析策略(file_parsing_strategy)參數有什麼不同?
當解析原則設定為 "auto" 時,系統會根據檔案內容自動進行解析;當解析原則設定為 "text_only" 時,系統將僅解析文字類內容;當解析原則設定為“text_and_images”時,系統將會解析所有圖片與文本類內容,解析所需時間也會相應增加。
如何確定檔案已經解析完成?
擷取
file-id後,可以嘗試使用該file-id與模型進行對話。若檔案尚未解析完成,系統將返回錯誤碼 400,並提示“File parsing in progress, please try again later.”;若模型調用成功並返回了回複內容,則表示檔案已解析完成。檔案上傳後的解析過程是否會產生任何額外費用?
文檔解析並不會產生任何額外費用。
API參考
關於Qwen-Doc-Turbo模型的輸入與輸出參數,請參考通義千問API詳情。
錯誤碼
如果模型調用失敗並返回報錯資訊,請參見錯誤資訊進行解決。
限制
SDK 依賴:
檔案URL (doc_url): 檔案URL方式當前僅支援DashScope協議,可以選擇使用
DashScope Python SDK或者HTTP方式調用(如curl)上傳檔案 (file-id): 檔案上傳與管理操作 必須 使用
OpenAI相容 SDK。
檔案上傳與引用:
檔案URL (
doc_url): 單次請求最多支援 10 個檔案URL。上傳檔案 (
file-id): 單個檔案不超過 150MB。單個阿里雲帳號最多可上傳 1 萬個檔案,總大小不超過 100GB,當前暫無有效期間限制。單次請求最多引用 1 個檔案。支援格式:TXT, DOC, DOCX, PDF, XLS, XLSX, MD, PPT, PPTX, JPG, JPEG, PNG, GIF, BMP。
API 輸入:
通過
doc_url或file-id引入資訊時,上下文長度上限為 262,144 Token。直接在
user或system訊息中輸入純文字時,單條訊息內容限制在 9,000 Token 以內。
API 輸出:
最大輸出長度為 8,192 Token。
檔案分享權限設定:
file-id僅在產生它的阿里雲主帳號內有效,不支援跨帳號或通過 RAM 使用者 API Key 調用。
限流:關於模型的限流條件,請參見限流。