データマイニングモデルは、情報抽出、コンテンツモデレーション、分類、要約生成のために設計されています。汎用対話モデルとは異なり、このモデルは JSON 形式などの標準化された構造化データを迅速かつ正確に出力します。これにより、汎用モデルが非標準のレスポンス構造を返したり、情報を不正確に抽出したりする問題が解決されます。
このドキュメントは、中国本土 (北京) リージョンにのみ適用されます。このモデルを使用するには、中国本土 (北京) リージョンの API キーを使用する必要があります。
メソッド
Qwen-Doc-Turbo は、3 つの方法でファイルから情報を抽出できます。ファイルサイズと種類の制限に関する詳細については、「制限事項」をご参照ください。
機能 | ファイル URL (推奨) | ファイル ID | プレーンテキスト |
ファイルソース | パブリック URL | ローカルファイル (アップロードが必要) | 文字列として渡す |
入力長制限 | 最大 10 ファイル | 1 ファイル | 最大 9,000 トークン |
SDK 互換性 |
| アップロード: |
|
主な利点 | Model Studio へのアップロードは不要です。バッチ呼び出しをサポートします。 | 繰り返しのアップロードを回避します。再利用に最適です。 | ファイル管理は不要です。 |
前提条件
API キーを作成し、その API キーを環境変数としてエクスポート済みであること。
SDK を使用してモデルを呼び出す場合は、OpenAI SDK または DashScope SDK をインストールしてください。
ファイル URL の受け渡し
ファイル URL を使用して構造化データを直接抽出し、最大 10 個のファイルを同時に処理できます。この例では、製品マニュアルサンプル A と 製品マニュアルサンプル B ファイルを渡し、プロンプトを使用して、抽出した情報を JSON 形式で返すようにモデルに指示する方法を示します。
現在、ファイル URL メソッドは DashScope プロトコルのみをサポートしています。DashScope Python SDK を使用するか、curl などの HTTP 呼び出しを行うことができます。
import os
import dashscope
response = dashscope.Generation.call(
api_key=os.getenv('DASHSCOPE_API_KEY'), # 環境変数を設定していない場合は、ご自身の API キーに置き換えてください
model='qwen-doc-turbo',
messages=[
{"role": "system","content": "You are a helpful assistant."},
{
"role": "user",
"content": [
{
"type": "text",
"text": "これら 2 つの製品マニュアルからすべての製品情報を抽出し、標準の 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"Request failed, status code: {response.status_code}")
print(f"Error code: {response.code}")
print(f"Error message: {response.message}")
print("詳細については、https://www.alibabacloud.com/help/model-studio/developer-reference/error-codes をご参照ください")
except Exception as e:
print(f"An error occurred: {e}")
print("詳細については、https://www.alibabacloud.com/help/model-studio/developer-reference/error-codes をご参照ください")
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": "これら 2 つの製品マニュアルからすべての製品情報を抽出し、標準の 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"
}
]
}
]
}
}'
ファイル ID の受け渡し
ファイルのアップロード
以下のコードを実行する前に、製品マニュアルサンプル A をクリックしてファイルをダウンロードし、ご利用のプロジェクトコードと同じディレクトリに配置します。次に、OpenAI 互換インターフェイスを介してファイルを Alibaba Cloud Model Studio のセキュアバケットにアップロードし、file-id を取得します。ファイルアップロードインターフェイスのパラメーターと呼び出しメソッドの詳細については、「API リファレンス」をご参照ください。
Python
import os
from pathlib import Path
from openai import OpenAI
client = OpenAI(
api_key=os.getenv("DASHSCOPE_API_KEY"), # 環境変数を設定していない場合は、ご自身の API キーに置き換えてください
base_url="https://dashscope.aliyuncs.com/compatible-mode/v1", # DashScope サービスの base_url を入力します
)
file_object = client.files.create(file=Path("Sample_Product_Manual_A.docx"), 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/Sample_Product_Manual_A.docx");
// ファイルアップロードパラメーターを作成します
FileCreateParams fileParams = FileCreateParams.builder()
.file(filePath)
.purpose(FilePurpose.of("file-extract"))
.build();
// ファイルをアップロードし、file-id を出力します
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=@"Sample_Product_Manual_A.docx"' \
--form 'purpose="file-extract"'コードを実行して、アップロードされたファイルの file-id を取得します。
ファイル ID を使用した情報の受け渡しと対話の開始
取得した file-id をシステムメッセージに埋め込みます。最初のシステムメッセージでモデルのロールを設定します。後続のシステムメッセージで file-id を渡します。ユーザーメッセージには、ファイルに関する特定のクエリが含まれます。
import os
from openai import OpenAI, BadRequestError
client = OpenAI(
api_key=os.getenv("DASHSCOPE_API_KEY"), # 環境変数を設定していない場合は、ご自身の API キーに置き換えてください
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}' をご利用のシナリオの file-id に置き換えてください
{'role': 'system', 'content': 'fileid://{FILE_ID}'},
{'role': 'user', 'content': 'この製品マニュアルからすべての製品情報を抽出し、標準の JSON 配列に整理します。各オブジェクトには、model (製品モデル)、name (製品名)、price (価格、通貨記号とカンマを削除) を含める必要があります。'}
],
# このコード例では、ストリーミング出力を使用してモデルの出力プロセスを明確に示しています。非ストリーミング出力の例については、https://www.alibabacloud.com/help/model-studio/user-guide/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"Error message: {e}")
print("詳細については、https://www.alibabacloud.com/help/model-studio/developer-reference/error-codes をご参照ください")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()
// 環境変数を設定していない場合は、次の行をご自身の Model Studio API キーに置き換えてください: .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}' をご利用のシナリオの file-id に置き換えてください
.addSystemMessage("fileid://{FILE_ID}")
.addUserMessage("この製品マニュアルからすべての製品情報を抽出し、標準の JSON 配列に整理します。各オブジェクトには、model (製品モデル)、name (製品名)、price (価格、通貨記号とカンマを削除) を含める必要があります。")
.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("Error message: " + 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 配列に整理します。各オブジェクトには、model (製品モデル)、name (製品名)、price (価格、通貨記号とカンマを削除) を含める必要があります。"}
],
"stream": true,
"stream_options": {
"include_usage": true
}
}'プレーンテキストの受け渡し
file-id を使用してファイル情報を渡すだけでなく、ファイルの内容を文字列として直接渡すこともできます。この方法を使用する場合、モデルがロール設定とファイルの内容を混同しないように、ロール設定情報が messages 配列の最初のメッセージに含まれていることを確認してください。
API リクエストボディのサイズ制限のため、テキストコンテンツが 9,000 トークンを超える場合は、ファイル URL またはファイル ID を使用してコンテンツを渡してください。
import os
from openai import OpenAI, BadRequestError
client = OpenAI(
api_key=os.getenv("DASHSCOPE_API_KEY"), # 環境変数を設定していない場合は、ご自身の API キーに置き換えてください
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': 'スマートオフィス製品マニュアル バージョン: V2.0 リリース日: 2024年1月 目次 1.1 製品概要...'},
{'role': 'user', 'content': 'この製品マニュアルからすべての製品情報を抽出し、標準の JSON 配列に整理します。各オブジェクトには、model (製品モデル)、name (製品名)、price (価格、通貨記号とカンマを削除) を含める必要があります。'}
],
# このコード例では、ストリーミング出力を使用してモデルの出力プロセスを明確に示しています。非ストリーミング出力の例については、https://www.alibabacloud.com/help/model-studio/user-guide/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"Error message: {e}")
print("詳細については、https://www.alibabacloud.com/help/model-studio/developer-reference/error-codes をご参照ください")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()
// 環境変数を設定していない場合は、次の行をご自身の Model Studio API キーに置き換えてください: .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("スマートオフィス製品マニュアル バージョン: V2.0 リリース日: 2024年1月 目次 1.1 製品概要...")
.addUserMessage("この製品マニュアルからすべての製品情報を抽出し、標準の JSON 配列に整理します。各オブジェクトには、model (製品モデル)、name (製品名)、price (価格、通貨記号とカンマを削除) を含める必要があります。")
.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("Error message: " + 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": "スマートオフィス製品マニュアル バージョン: V2.0 リリース日: 2024年1月 目次 1.1 製品概要..."},
{"role": "user","content": "この製品マニュアルからすべての製品情報を抽出し、標準の JSON 配列に整理します。各オブジェクトには、model (製品モデル)、name (製品名)、price (価格、通貨記号とカンマを削除) を含める必要があります。"}
],
"stream": true,
"stream_options": {
"include_usage": true
}
}'モデルの料金
モデル名 | コンテキストウィンドウ | 最大入力 | 最大出力 | 入力コスト | 出力コスト | 無料クォータ |
(トークン) | (100万トークンあたり) | |||||
qwen-doc-turbo | 262,144 | 253,952 | 32,768 | $0.087 | $0.144 | 無料クォータなし |
よくある質問
OpenAI 互換ファイルインターフェイスを介してアップロードされたファイルはどこに保存されますか?
OpenAI 互換ファイルインターフェイスを介してアップロードされたすべてのファイルは、ご利用の Alibaba Cloud アカウント配下の Alibaba Cloud Model Studio バケットに無料で保存されます。アップロードされたファイルのクエリと管理方法の詳細については、「OpenAI ファイルインターフェイス」をご参照ください。
ファイル URL メソッドを使用してアップロードする場合、`file_parsing_strategy` パラメーターのオプションの違いは何ですか?
解析戦略が "auto" に設定されている場合、システムはファイルの内容に基づいて自動的にファイルを解析します。"text_only" に設定されている場合、システムはテキストコンテンツのみを解析します。"text_and_images" に設定されている場合、システムはすべての画像とテキストコンテンツを解析するため、解析時間が増加します。
ファイルの解析が完了したかどうかを判断するにはどうすればよいですか?
ファイル ID を取得した後、その ID を使用してモデルとの対話を開始してみてください。ファイルがまだ解析中の場合、API はエラーメッセージ
File parsing in progress, please try again later.を返します。この場合は、後でもう一度お試しください。モデルの呼び出しが成功し、レスポンスが返された場合、ファイルの解析は完了しており、使用準備ができています。ファイルアップロード後の解析プロセスで追加費用は発生しますか?
ドキュメントの解析は無料です。
API リファレンス
Qwen-Doc-Turbo の入出力パラメーターについては、「Qwen API リファレンス」をご参照ください。
エラーコード
呼び出しが失敗した場合は、「エラーメッセージ」を参照してトラブルシューティングを行ってください。
制限事項
SDK の依存関係:
ファイル URL (doc_url): 現在、ファイル URL メソッドは DashScope プロトコルのみをサポートしています。
DashScope Python SDKを使用するか、curl などの HTTP 呼び出しを行うことができます。ファイルのアップロード (file-id): ファイルのアップロードと管理操作では、
OpenAI互換 SDK を使用する必要があります。
ファイルのアップロードと参照:
ファイル URL (
doc_url): 1 回のリクエストで最大 10 個のファイル URL をサポートします。指定する URL は、パブリックネットワークからアクセス可能である必要があります。ファイルのアップロード (
file-id): 1 ファイルの最大サイズは 150 MB です。各 Alibaba Cloud アカウントは、アップロードできるファイル数が 10,000 個、合計サイズが 100 GB までに制限されています。アップロードされたファイルに有効期限はありません。各リクエストでは 1 つのファイルのみ参照できます。ファイル ID を使用する場合、ファイル数または合計サイズの制限に達すると、新しいファイルのアップロードリクエストは失敗します。アップロードを続けるには、不要になったファイルを削除してクォータを解放してください。詳細については、「OpenAI 互換 - ファイル」をご参照ください。
サポートされているフォーマット: TXT、DOC、DOCX、PDF、XLS、XLSX、MD、PPT、PPTX、JPG、JPEG、PNG、GIF、BMP。
API 入力:
doc_urlまたはfile-idを使用して情報を渡す場合、最大コンテキスト長は 262,144 トークンです。userまたはsystemメッセージにプレーンテキストを直接入力する場合、1 つのメッセージの内容は 9,000 トークンに制限されます。
API 出力:
最大出力長は 32,768 トークンです。
ファイル共有:
file-idは、それを生成した Alibaba Cloud アカウント内でのみ有効です。アカウントをまたいで使用したり、RAM ユーザーの API キーを使用して呼び出したりすることはできません。
レート制限: 「レート制限」をご参照ください。