Skip to main content
專項模型

資料採礦(Qwen-Doc-Turbo)

資料採礦模型專門針對資訊抽取、內容審核、分類打標和摘要產生任務進行設計。相比通用對話模型,該模型能夠快速且精確地輸出規範的結構化資料(如JSON格式),解決通用對話模型返回不規範回複結構或提取資訊不夠準確的問題。

本文檔僅適用於華北2(北京)地區。如需使用模型,需使用華北2(北京)地區的API Key

使用方式

Qwen-Doc-Turbo 支援通過以下三種方式從檔案中提取資訊,具體檔案大小與類型限制請參考限制

特性

檔案URL (推薦)

檔案ID

純文字

檔案來源

公網 URL

本地檔案 (需先上傳)

字串傳入

輸入長度限制

最多10個檔案
支援大檔案 (最大輸入253k Token)

1個檔案
支援大檔案 (最大輸入253k Token)

9,000 Token以內

SDK 相容性

僅限 DashScope

上傳: OpenAI
調用: OpenAIDashScope

OpenAIDashScope

核心優點

無需上傳至百鍊,支援指定檔案的解析方式

避免重複上傳,適合複用

無需檔案管理

前提條件

通過檔案URL傳入

通過檔案URL直接提取結構化資料,支援最多10個檔案同時處理。此處以傳入樣本產品手冊A樣本產品手冊B檔案並通過提示詞約束模型以JSON格式返回所提取資訊為例。
檔案URL方式當前僅支援DashScope協議,可以選擇使用DashScope Python SDK或者HTTP方式調用(如curl)
import os
import dashscope

# 以下為華北2(北京)地區的URL,各地區的URL不同。
dashscope.base_http_api_url = 'https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/api/v1'

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數組。每個對象需要包含:model(產品的型號)、name(產品的名稱)、price(價格(去除貨幣符號和逗號))"
            },
            {
                "type": "doc_url",
                "doc_url": [
                    "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20251107/jockge/%E7%A4%BA%E4%BE%8B%E4%BA%A7%E5%93%81%E6%89%8B%E5%86%8CA.docx",
                    "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20251107/ztwxzr/%E7%A4%BA%E4%BE%8B%E4%BA%A7%E5%93%81%E6%89%8B%E5%86%8CB.docx"
                ],
                "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")
模型返回的 response.output.choices[0].message.content 欄位可能包含 Markdown 代碼塊標記(如 ```json``` 包裹)。在使用 json.loads() 解析前,需先去除 Markdown 標記。樣本處理方式:
content = response.output.choices[0].message.content
# 去除可能的 markdown 代碼塊標記
if content.startswith("```"):
    lines = content.split("\n")
    content = "\n".join(lines[1:-1])  # 去掉首尾的 ``` 行
data = json.loads(content)
[
  {
    "model": "PRO-100",
    "name": "智能印表機",
    "price": "8999"
  },
  {
    "model": "PRO-200",
    "name": "智能掃描器",
    "price": "12999"
  },
  ...
  {
    "model": "SEC-400",
    "name": "智能訪客系統",
    "price": "9999"
  },
  {
    "model": "SEC-500",
    "name": "智能停車管理",
    "price": "22999"
  }
]

通過檔案ID傳入

上傳檔案

在運行以下代碼前,請先點擊樣本產品手冊A下載檔案,並將其放置在專案代碼所在的目錄中。通過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
    # 以下為華北2(北京)地區的URL,各地區的URL不同。
    base_url="https://dashscope.aliyuncs.com/compatible-mode/v1",  # 填寫DashScope服務base_url
)

file_object = client.files.create(file=Path("樣本產品手冊A.docx"), purpose="file-extract")
# 列印file-id用於後續模型對話
print(file_object.id)
運行以上代碼,您可以得到本次上傳檔案對應的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
    # 以下為華北2(北京)地區的URL,各地區的URL不同。
    base_url="https://{WorkspaceId}.cn-beijing.maas.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數組。每個對象需要包含:model(產品的型號)、name(產品的名稱)、price(價格(去除貨幣符號和逗號))'}
        ],
        # 本程式碼範例均採用流式輸出,以清晰和直觀地展示模型輸出過程。如果您希望查看非流式輸出的案例,請參見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 os
import time
from pathlib import Path
from openai import OpenAI, BadRequestError

client = OpenAI(
    api_key=os.getenv("DASHSCOPE_API_KEY"),  # 如果您沒有配置環境變數,請在此處替換您的API-KEY
    # 以下為華北2(北京)地區的URL,各地區的URL不同。
    base_url="https://dashscope.aliyuncs.com/compatible-mode/v1",
)

try:
    # 步驟1:上傳檔案
    file_object = client.files.create(file=Path("樣本產品手冊A.docx"), purpose="file-extract")
    file_id = file_object.id
    print(f"檔案上傳成功,file-id: {file_id}")

    # 步驟2:等待檔案解析完成(可選,如果檔案較大可能需要等待)
    # 如果檔案仍在解析中,API會返回錯誤提示,此時需要重試
    max_retries = 10
    retry_count = 0

    while retry_count < max_retries:
        try:
            # 步驟3:使用file-id調用模型
            completion = client.chat.completions.create(
                model="qwen-doc-turbo",
                messages=[
                    {'role': 'system', 'content': 'You are a helpful assistant.'},
                    {'role': 'system', 'content': f'fileid://{file_id}'},
                    {'role': 'user', 'content': '從這份產品手冊中,提取所有產品資訊,並整理成一個標準的JSON數組。每個對象需要包含:model(產品的型號)、name(產品的名稱)、price(價格(去除貨幣符號和逗號))'}
                ],
                stream=True,
                stream_options={"include_usage": True}
            )

            # 步驟4:處理模型輸出
            full_content = ""
            for chunk in completion:
                if chunk.choices and chunk.choices[0].delta.content:
                    full_content += chunk.choices[0].delta.content
                    print(chunk.choices[0].delta.content, end='', flush=True)

            print(f"\n\n完整輸出:\n{full_content}")
            break

        except BadRequestError as e:
            if "File parsing in progress" in str(e):
                retry_count += 1
                print(f"檔案解析中,等待後重試 ({retry_count}/{max_retries})...")
                time.sleep(2)  # 等待2秒後重試
            else:
                raise e

    if retry_count >= max_retries:
        print("檔案解析逾時,請稍後重試")

except BadRequestError as e:
    print(f"錯誤資訊:{e}")
    print("請參考文檔:https://www.alibabacloud.com/help/zh/model-studio/error-code")
except Exception as e:
    print(f"發生錯誤:{e}")
模型返回的 response.output.choices[0].message.content 欄位可能包含 Markdown 代碼塊標記(如 ```json``` 包裹)。在使用 json.loads() 解析前,需先去除 Markdown 標記。樣本處理方式:
content = response.output.choices[0].message.content
# 去除可能的 markdown 代碼塊標記
if content.startswith("```"):
    lines = content.split("\n")
    content = "\n".join(lines[1:-1])  # 去掉首尾的 ``` 行
data = json.loads(content)
[
  {
    "model": "PRO-100",
    "name": "智能印表機",
    "price": "8999"
  },
  {
    "model": "PRO-200",
    "name": "智能掃描器",
    "price": "12999"
  },
  ...
  {
    "model": "SEC-400",
    "name": "智能訪客系統",
    "price": "9999"
  },
  {
    "model": "SEC-500",
    "name": "智能停車管理",
    "price": "22999"
  }
]

通過純文字傳入

除了通過 file-id 傳入檔案資訊外,您還可以直接使用字串傳入檔案內容。在此方法下,為避免模型混淆角色設定與檔案內容,請確保在 messages 的第一條訊息中添加用於角色設定的資訊。
受限於API調用請求體大小,如果您的常值內容長度超過9,000Token,請通過檔案URL或檔案ID傳入資訊對話。
import os
from openai import OpenAI, BadRequestError

client = OpenAI(
    api_key=os.getenv("DASHSCOPE_API_KEY"), # 如果您沒有配置環境變數,請在此處替換您的API-KEY
    # 以下為華北2(北京)地區的URL,各地區的URL不同。
    base_url="https://{WorkspaceId}.cn-beijing.maas.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': '智能辦公產品手冊 版本:V2.0 發布日期:2024年1月 目錄 1.1 產品概述...'},
            {'role': 'user', 'content': '從這份產品手冊中,提取所有產品資訊,並整理成一個標準的JSON數組。每個對象需要包含:model(產品的型號)、name(產品的名稱)、price(價格(去除貨幣符號和逗號))'}
        ],
        # 本程式碼範例均採用流式輸出,以清晰和直觀地展示模型輸出過程。如果您希望查看非流式輸出的案例,請參見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")
模型返回的 response.output.choices[0].message.content 欄位可能包含 Markdown 代碼塊標記(如 ```json``` 包裹)。在使用 json.loads() 解析前,需先去除 Markdown 標記。樣本處理方式:
content = response.output.choices[0].message.content
# 去除可能的 markdown 代碼塊標記
if content.startswith("```"):
    lines = content.split("\n")
    content = "\n".join(lines[1:-1])  # 去掉首尾的 ``` 行
data = json.loads(content)
[
  {
    "model": "PRO-100",
    "name": "智能印表機",
    "price": "8999"
  },
  {
    "model": "PRO-200",
    "name": "智能掃描器",
    "price": "12999"
  },
  ...
  {
    "model": "SEC-400",
    "name": "智能訪客系統",
    "price": "9999"
  },
  {
    "model": "SEC-500",
    "name": "智能停車管理",
    "price": "22999"
  }
]

模型定價

模型名稱

上下文長度

最大輸入

最大輸出

輸入成本

輸出成本

免費額度

(Token數)

(每百萬Token)

qwen-doc-turbo

262,144

253,952

32,768

$0.087

$0.144

無免費額度

常見問題

  1. 通過OpenAI檔案相容介面上傳檔案後,檔案將被儲存在何處? 所有通過OpenAI檔案相容介面上傳的檔案均將被儲存在當前阿里雲帳號下的阿里雲百鍊儲存空間且不會產生任何費用,關於所上傳檔案的資訊查詢與管理請參考OpenAI檔案介面
  2. 通過檔案URL方式上傳時,檔案解析策略(file_parsing_strategy)參數有什麼不同? 當解析原則設定為 "auto" 時,系統會根據檔案內容自動進行解析;當解析原則設定為 "text_only" 時,系統將僅解析文字類內容;當解析原則設定為“text_and_images”時,系統將會解析所有圖片與文本類內容,解析所需時間也會相應增加。
  3. 如何確定檔案已經解析完成? 擷取 file-id 後,您可以直接嘗試使用該ID與模型進行對話。如果檔案仍在解析中,API會返回相應的錯誤提示File parsing in progress, please try again later.,此時請稍後重試。如果模型調用成功並返回了回複,則表示檔案已解析完成,可以正常使用。
  4. 檔案上傳後的解析過程是否會產生任何額外費用? 文檔解析並不會產生任何額外費用。

API參考

關於Qwen-Doc-Turbo的輸入與輸出參數,請參考OpenAI 相容API詳情DashScope API詳情

錯誤碼

如果模型調用失敗並返回報錯資訊,請參見錯誤碼進行解決。

限制

  • SDK 依賴:
    • 檔案URL (doc_url): 檔案URL方式當前僅支援DashScope協議,可以選擇使用DashScope Python SDK或者HTTP方式調用(如curl)
    • 上傳檔案 (file-id): 檔案上傳與管理操作 必須 使用 OpenAI 相容 SDK。
  • 檔案上傳與引用:
    • 檔案URL (doc_url): 單次請求最多支援 10 個檔案URL,且傳入的URL需確保公網可訪問。
    • 上傳檔案 (file-id): 單個檔案不超過 150MB。單個阿里雲帳號最多可上傳 1 萬個檔案,總大小不超過 100GB,當前暫無有效期間限制。單次請求最多引用 1 個檔案。
      使用檔案ID傳入時,當檔案數量或總大小達到任一上限時,新的檔案上傳請求將會失敗。請參考OpenAI相容-File,及時刪除不再需要的檔案以釋放配額,然後才能繼續上傳。
    • 支援格式:TXT, DOC, DOCX, PDF, XLS, XLSX, MD, PPT, PPTX, JPG, JPEG, PNG, GIF, BMP。
  • API 輸入:
    • 通過doc_urlfile-id 引入資訊時,上下文長度上限為 262,144 Token。
    • 直接在 usersystem 訊息中輸入純文字時,單條訊息內容限制在 9,000 Token 以內。
  • API 輸出:
    • 最大輸出長度為 32,768 Token。
  • 檔案分享權限設定:
    • file-id 僅在產生它的阿里雲主帳號內有效,不支援跨帳號或通過 RAM 使用者 API Key 調用。
  • 限流:關於模型的限流條件,請參見限流
Token Plan
用量統計與效能監控
資產中心
服務支援