すべてのプロダクト
Search
ドキュメントセンター

Alibaba Cloud Model Studio:長文コンテキスト (Qwen-Long)

最終更新日:Jun 26, 2026

Qwen-Long は、ファイルアップロードと参照メカニズムを通じて最大 1,000 万トークンのドキュメントを処理し、標準モデルのコンテキスト長の制限を克服します。

説明

このドキュメントは、中国本土 (北京) リージョンにのみ適用されます。モデルを使用するには、中国本土 (北京) リージョンの API キーを使用する必要があります。

使用方法

Qwen-Long は、ファイルのアップロードと API 呼び出しの 2 つのステップで使用します。

  1. ファイルのアップロードと解析:

    • API を使用してファイルをアップロードします。サポートされているファイル形式とサイズ制限の詳細については、「サポートされているフォーマット」をご参照ください。

    • アップロードが成功すると、システムはご利用のアカウントに対して一意の file-id を返し、解析を開始します。ファイルのアップロード、ストレージ、解析には料金はかかりません。

  2. API 呼び出しと課金:

    • モデルを呼び出す際、system メッセージで 1 つ以上の file-id を参照します。

    • モデルは file-id に関連付けられたテキスト内容に基づいて推論を実行します。

    • API 呼び出しにおいて、参照されたファイル内容のトークン数がそのリクエストの入力トークンとしてカウントされます。

これにより、各リクエストで大きなファイルを転送する必要がなくなりますが、ファイルのトークンは API 呼び出しごとに課金されることにご注意ください。

クイックスタート

前提条件

ドキュメントのアップロード

この例では、Model_Studio_Phone_Product_Introduction.docx を OpenAI 互換インターフェイス経由で 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 キーに置き換えてください。
    # 次の URL は中国 (北京) リージョン用です。{WorkspaceId} をご利用のワークスペース ID に置き換えてください。URL はリージョンによって異なります。
    base_url="https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/compatible-mode/v1",
)

file_object = client.files.create(file=Path("Model_Studio_Phone_Product_Introduction.docx"), purpose="file-extract")
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.Path;
import java.nio.file.Paths;

public class Main {
    public static void main(String[] args) {
        // クライアントを作成し、環境変数から API キーを使用します。
        OpenAIClient client = OpenAIOkHttpClient.builder()
                // 環境変数を設定していない場合は、次の行を .apiKey("sk-xxx") に置き換えてください。
                .apiKey(System.getenv("DASHSCOPE_API_KEY"))
                // 次の URL は中国 (北京) リージョン用です。{WorkspaceId} をご利用のワークスペース ID に置き換えてください。URL はリージョンによって異なります。
                .baseUrl("https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/compatible-mode/v1")
                .build();
        // ファイルパスを設定します。必要に応じてパスとファイル名を変更してください。
        Path filePath = Paths.get("src/main/java/org/example/Model_Studio_Phone_Product_Introduction.docx");
        // ファイルアップロードのパラメーターを作成します。
        FileCreateParams fileParams = FileCreateParams.builder()
                .file(filePath)
                .purpose(FilePurpose.of("file-extract"))
                .build();

        // ファイルをアップロードし、file-id を出力します。
        FileObject fileObject = client.files().create(fileParams);
        System.out.println(fileObject.id());
    }
}

curl

# 次の URL は中国 (北京) リージョン用です。{WorkspaceId} をご利用のワークスペース ID に置き換えてください。URL はリージョンによって異なります。
curl --location --request POST 'https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/compatible-mode/v1/files' \
  --header "Authorization: Bearer $DASHSCOPE_API_KEY" \
  --form 'file=@"Alibaba Cloud Model Studio Phone Series Product Introduction.docx"' \
  --form 'purpose="file-extract"'

コードを実行して、アップロードされたファイルの file-id を取得します。

ファイル ID を使用した情報の受け渡しとチャット

システムメッセージで file-id を渡します。最初のメッセージでロールを定義し、2番目のメッセージに file-id を含め、その後にユーザーの質問を追加します。

ドキュメントが長いほど、解析に時間がかかります。呼び出しを行う前に、解析が完了するまでお待ちください。

Python

import os
from openai import OpenAI, BadRequestError

client = OpenAI(
    api_key=os.getenv("DASHSCOPE_API_KEY"),  # 設定されていない場合は、ご自身の API キーに置き換えてください。
    # 中国 (北京) リージョンのエンドポイントです。{WorkspaceId} をご利用のワークスペース ID に置き換えてください。URL はリージョンによって異なります。
    base_url="https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/compatible-mode/v1",
)
try:
    # メッセージリストを初期化します。
    completion = client.chat.completions.create(
        model="qwen-long",
        messages=[
            # sys1: ロールの定義。
            {'role': 'system', 'content': 'You are a helpful assistant.'},
            # sys2: ドキュメントの内容 (プレーンテキストまたは file-id)。
            # '{FILE_ID}' を会話で使用する file-id に置き換えてください。
            {'role': 'system', 'content': f'fileid://{FILE_ID}'},
            # リクエストに2番目のシステムメッセージが含まれる場合、ユーザーメッセージの内容は 9,000 トークンに制限されます。
            {'role': 'user', 'content': 'この記事は何について説明していますか?'}
        ],
        # すべての例では、モデルの応答プロセスを示すためにストリーミング出力を使用しています。ストリーミング出力を使用しない例については、https://www.alibabacloud.com/help/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())
        
        # トークン使用量を取得します。
        if chunk.usage:
            print(f"Total tokens: {chunk.usage.total_tokens}")

    print(full_content)

except BadRequestError as e:
    print(f"Error: {e}")
    print("ドキュメントをご参照ください: https://www.alibabacloud.com/help/model-studio/error-code")

Java

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()
                // 環境変数を設定していない場合は、次の行を .apiKey("sk-xxx") に置き換えてください。
                .apiKey(System.getenv("DASHSCOPE_API_KEY"))
                // 中国 (北京) リージョンのエンドポイントです。{WorkspaceId} をご利用のワークスペース ID に置き換えてください。URL はリージョンによって異なります。
                .baseUrl("https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/compatible-mode/v1")
                .build();

        // チャットリクエストを作成します。
        ChatCompletionCreateParams chatParams = ChatCompletionCreateParams.builder()
                //sys1: ロールの定義。
                .addSystemMessage("You are a helpful assistant.")
                //sys2: ドキュメントの内容 (プレーンテキストまたは file-id)。
                //'{FILE_ID}' を会話で使用する file-id に置き換えてください。
                .addSystemMessage("fileid://{FILE_ID}")
                //リクエストに2番目のシステムメッセージが含まれる場合、ユーザーメッセージの内容は 9,000 トークンに制限されます。
                .addUserMessage("この記事は何について説明していますか?")
                .model("qwen-long")
                .build();

        StringBuilder fullResponse = new StringBuilder();

        // すべての例では、モデルの応答プロセスを示すためにストリーミング出力を使用しています。ストリーミング出力を使用しない例については、https://www.alibabacloud.com/help/model-studio/text-generation をご参照ください。
        try (StreamResponse<ChatCompletionChunk> streamResponse = client.chat().completions().createStreaming(chatParams)) {
            streamResponse.stream().forEach(chunk -> {
                // 各チャンクの内容を出力し、連結します。
                System.out.println(chunk);
                String content = chunk.choices().get(0).delta().content().orElse("");
                if (!content.isEmpty()) {
                    fullResponse.append(content);
                }
            });
            System.out.println(fullResponse);
        } catch (Exception e) {
            System.err.println("Error: " + e.getMessage());
            System.err.println("ドキュメントをご参照ください: https://www.alibabacloud.com/help/model-studio/error-code");
        }
    }
}

curl

# 中国 (北京) リージョンのエンドポイントです。{WorkspaceId} をご利用のワークスペース ID に置き換えてください。URL はリージョンによって異なります。
curl --location 'https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/compatible-mode/v1/chat/completions' \
--header "Authorization: Bearer $DASHSCOPE_API_KEY" \
--header "Content-Type: application/json" \
--data '{
    "model": "qwen-long",
    "messages": [
        {"role": "system","content": "You are a helpful assistant."},
        {"role": "system","content": "fileid://file-fe-xxx"},
        {"role": "user","content": "この記事は何について説明していますか?"}
    ],
    "stream": true,
    "stream_options": {
        "include_usage": true
    }
}'

複数ドキュメントの受け渡し

1つのシステムメッセージで複数の file-id を渡すか、ドキュメントごとに個別のシステムメッセージを追加します。

複数ドキュメントの受け渡し

Python

import os
from openai import OpenAI, BadRequestError

client = OpenAI(
    api_key=os.getenv("DASHSCOPE_API_KEY"),  # 設定されていない場合は、ご自身の API キーに置き換えてください。
    # 中国 (北京) リージョンのエンドポイントです。{WorkspaceId} をご利用のワークスペース ID に置き換えてください。URL はリージョンによって異なります。
    base_url="https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/compatible-mode/v1",
)
try:
    # メッセージリストを初期化します。
    completion = client.chat.completions.create(
        model="qwen-long",
        messages=[
            {'role': 'system', 'content': 'You are a helpful assistant.'},
            # '{FILE_ID1}' と '{FILE_ID2}' を会話で使用する file-id に置き換えてください。
            {'role': 'system', 'content': f"fileid://{FILE_ID1},fileid://{FILE_ID2}"},
            {'role': 'user', 'content': 'これらの記事は何について説明していますか?'}
        ],
        # すべての例では、モデルの応答プロセスを示すためにストリーミング出力を使用しています。ストリーミング出力を使用しない例については、https://www.alibabacloud.com/help/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"Error: {e}")
    print("ドキュメントをご参照ください: https://www.alibabacloud.com/help/model-studio/error-code")

Java

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()
                .apiKey(System.getenv("DASHSCOPE_API_KEY"))
                // 中国 (北京) リージョンのエンドポイントです。{WorkspaceId} をご利用のワークスペース ID に置き換えてください。URL はリージョンによって異なります。
                .baseUrl("https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/compatible-mode/v1")
                .build();

        // チャットリクエストを作成します。
        ChatCompletionCreateParams chatParams = ChatCompletionCreateParams.builder()
                .addSystemMessage("You are a helpful assistant.")
                //'{FILE_ID1}' と '{FILE_ID2}' を会話で使用する file-id に置き換えてください。
                .addSystemMessage("fileid://{FILE_ID1},fileid://{FILE_ID2}")
                .addUserMessage("これら2つの記事は何について説明していますか?")
                .model("qwen-long")
                .build();

        StringBuilder fullResponse = new StringBuilder();

        // すべての例では、モデルの応答プロセスを示すためにストリーミング出力を使用しています。ストリーミング出力を使用しない例については、https://www.alibabacloud.com/help/model-studio/text-generation をご参照ください。
        try (StreamResponse<ChatCompletionChunk> streamResponse = client.chat().completions().createStreaming(chatParams)) {
            streamResponse.stream().forEach(chunk -> {
                // 各チャンクの内容。
                System.out.println(chunk);
                String content = chunk.choices().get(0).delta().content().orElse("");
                if (!content.isEmpty()) {
                    fullResponse.append(content);
                }
            });
            System.out.println("\nFull response content:");
            System.out.println(fullResponse);
        } catch (Exception e) {
            System.err.println("Error: " + e.getMessage());
            System.err.println("ドキュメントをご参照ください: https://www.alibabacloud.com/help/model-studio/error-code");
        }
    }
}

curl

# 中国 (北京) リージョンのエンドポイントです。{WorkspaceId} をご利用のワークスペース ID に置き換えてください。URL はリージョンによって異なります。
curl --location 'https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/compatible-mode/v1/chat/completions' \
--header "Authorization: Bearer $DASHSCOPE_API_KEY" \
--header "Content-Type: application/json" \
--data '{
    "model": "qwen-long",
    "messages": [
        {"role": "system","content": "You are a helpful assistant."},
        {"role": "system","content": "fileid://file-fe-xxx1"},
        {"role": "system","content": "fileid://file-fe-xxx2"},
        {"role": "user","content": "これら2つの記事は何について説明していますか?"}
    ],
    "stream": true,
    "stream_options": {
        "include_usage": true
    }
}'

ドキュメントの追加

Python

import os
from openai import OpenAI, BadRequestError

client = OpenAI(
    api_key=os.getenv("DASHSCOPE_API_KEY"),  # 設定されていない場合は、ご自身の API キーに置き換えてください。
    # 中国 (北京) リージョンのエンドポイントです。{WorkspaceId} をご利用のワークスペース ID に置き換えてください。URL はリージョンによって異なります。
    base_url="https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/compatible-mode/v1",
)
# メッセージリストを初期化します。
messages = [
    {'role': 'system', 'content': 'You are a helpful assistant.'},
    # '{FILE_ID1}' を会話で使用する file-id に置き換えてください。
    {'role': 'system', 'content': f'fileid://{FILE_ID1}'},
    {'role': 'user', 'content': 'この記事は何について説明していますか?'}
]

try:
    # 1巡目の応答
    completion_1 = client.chat.completions.create(
        model="qwen-long",
        messages=messages,
        stream=False
    )
    # 1巡目の応答を出力します。
    # ストリーミングする場合: stream=True を設定し、セグメントを連結して assistant_message の内容として渡します。
    print(f"First-round response: {completion_1.choices[0].message.model_dump()}")
except BadRequestError as e:
    print(f"Error: {e}")
    print("ドキュメントをご参照ください: https://www.alibabacloud.com/help/model-studio/error-code")

# assistant_message を構築します。
assistant_message = {
    "role": "assistant",
    "content": completion_1.choices[0].message.content}

# assistant_message を messages に追加します。
messages.append(assistant_message)

# 追加するドキュメントの file-id を messages に追加します。
# '{FILE_ID2}' を会話で使用する file-id に置き換えてください。
system_message = {'role': 'system', 'content': f'fileid://{FILE_ID2}'}
messages.append(system_message)

# ユーザーの質問を追加します。
messages.append({'role': 'user', 'content': 'これら2つの記事で説明されている手法の類似点と相違点は何ですか?'})

# ドキュメント追加後の応答。
completion_2 = client.chat.completions.create(
    model="qwen-long",
    messages=messages,
    # すべてのコード例では、モデルの出力プロセスを明確かつ直感的に示すためにストリーミング出力を使用しています。ストリーミング出力を使用しない例については、https://www.alibabacloud.com/help/model-studio/text-generation をご参照ください。
    stream=True,
    stream_options={
        "include_usage": True
    }
)

# ドキュメント追加後の応答をストリーミングして出力します。
print("Response after appending the document:")
for chunk in completion_2:
    print(chunk.model_dump())

Java

import com.openai.client.OpenAIClient;
import com.openai.client.okhttp.OpenAIOkHttpClient;
import com.openai.models.chat.completions.*;
import com.openai.core.http.StreamResponse;

import java.util.ArrayList;
import java.util.List;

public class Main {
    public static void main(String[] args) {
        OpenAIClient client = OpenAIOkHttpClient.builder()
                .apiKey(System.getenv("DASHSCOPE_API_KEY"))
                // 中国 (北京) リージョンのエンドポイントです。{WorkspaceId} をご利用のワークスペース ID に置き換えてください。URL はリージョンによって異なります。
                .baseUrl("https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/compatible-mode/v1")
                .build();
        // メッセージリストを初期化します。
        List<ChatCompletionMessageParam> messages = new ArrayList<>();
        
        // ロール設定の情報を追加します。
        ChatCompletionSystemMessageParam roleSet = ChatCompletionSystemMessageParam.builder()
                .content("You are a helpful assistant.")
                .build();
        messages.add(ChatCompletionMessageParam.ofSystem(roleSet));
        
        // '{FILE_ID1}' を会話で使用する file-id に置き換えてください。
        ChatCompletionSystemMessageParam systemMsg1 = ChatCompletionSystemMessageParam.builder()
                .content("fileid://{FILE_ID1}")
                .build();
        messages.add(ChatCompletionMessageParam.ofSystem(systemMsg1));

        // ユーザーの質問メッセージ (USER ロール)。
        ChatCompletionUserMessageParam userMsg1 = ChatCompletionUserMessageParam.builder()
                .content("記事の内容を要約してください。")
                .build();
        messages.add(ChatCompletionMessageParam.ofUser(userMsg1));

        // 1巡目のリクエストを構築し、例外を処理します。
        ChatCompletion completion1;
        try {
            completion1 = client.chat().completions().create(
                    ChatCompletionCreateParams.builder()
                            .model("qwen-long")
                            .messages(messages)
                            .build()
            );
        } catch (Exception e) {
            System.err.println("Request error. See error code page:");
            System.err.println("https://www.alibabacloud.com/help/model-studio/error-code");
            System.err.println("Error details: " + e.getMessage());
            e.printStackTrace(); 
            return; 
        }

        // 1巡目の応答。
        String firstResponse = completion1 != null ? completion1.choices().get(0).message().content().orElse("") : "";
        System.out.println("First-round response: " + firstResponse);

        // AssistantMessage を構築します。
        ChatCompletionAssistantMessageParam assistantMsg = ChatCompletionAssistantMessageParam.builder()
                .content(firstResponse)
                .build();
        messages.add(ChatCompletionMessageParam.ofAssistant(assistantMsg));

        // '{FILE_ID2}' を会話で使用する file-id に置き換えてください。
        ChatCompletionSystemMessageParam systemMsg2 = ChatCompletionSystemMessageParam.builder()
                .content("fileid://{FILE_ID2}")
                .build();
        messages.add(ChatCompletionMessageParam.ofSystem(systemMsg2));

        // 2巡目のユーザーの質問 (USER ロール)。
        ChatCompletionUserMessageParam userMsg2 = ChatCompletionUserMessageParam.builder()
                .content("2つの記事の構造的な違いを比較してください。")
                .build();
        messages.add(ChatCompletionMessageParam.ofUser(userMsg2));

        // すべての例では、モデルの応答プロセスを示すためにストリーミング出力を使用しています。ストリーミング出力を使用しない例については、https://www.alibabacloud.com/help/model-studio/text-generation をご参照ください。
        StringBuilder fullResponse = new StringBuilder();
        try (StreamResponse<ChatCompletionChunk> streamResponse = client.chat().completions().createStreaming(
                ChatCompletionCreateParams.builder()
                        .model("qwen-long")
                        .messages(messages)
                        .build())) {

            streamResponse.stream().forEach(chunk -> {
                String content = chunk.choices().get(0).delta().content().orElse("");
                if (!content.isEmpty()) {
                    fullResponse.append(content);
                }
            });
            System.out.println("\nFinal response:");
            System.out.println(fullResponse.toString().trim());
        } catch (Exception e) {
            System.err.println("Error: " + e.getMessage());
            System.err.println("ドキュメントをご参照ください: https://www.alibabacloud.com/help/model-studio/error-code");
        }
    }
}

curl

# 中国 (北京) リージョンのエンドポイントです。{WorkspaceId} をご利用のワークスペース ID に置き換えてください。URL はリージョンによって異なります。
curl --location 'https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/compatible-mode/v1/chat/completions' \
--header "Authorization: Bearer $DASHSCOPE_API_KEY" \
--header "Content-Type: application/json" \
--data '{
    "model": "qwen-long",
    "messages": [
        {"role": "system","content": "You are a helpful assistant."},
        {"role": "system","content": "fileid://file-fe-xxx1"},
        {"role": "user","content": "この記事は何について説明していますか?"},
        {"role": "system","content": "fileid://file-fe-xxx2"},
        {"role": "user","content": "これら2つの記事で説明されている手法の類似点と相違点は何ですか?"}
    ],
    "stream": true,
    "stream_options": {
        "include_usage": true
    }
}'

プレーンテキストとしての情報伝達

file-id を使用する代わりに、ドキュメントコンテンツを文字列として直接渡します。ドキュメントコンテンツとの混同を避けるために、最初のメッセージにロール設定を追加します。

ドキュメントコンテンツが 100 万トークンを超える場合は、API サイズ制限のため、代わりにファイル ID を使用してください。

簡単な例

ドキュメントコンテンツをシステムメッセージに直接入力できます。

Python

import os
from openai import OpenAI

client = OpenAI(
    api_key=os.getenv("DASHSCOPE_API_KEY"),  # 環境変数を設定していない場合は、ここで API キーを置き換えます
    # 中国 (北京) リージョンのエンドポイントです。{WorkspaceId} をご利用のワークスペース ID に置き換えてください。URL はリージョンによって異なります。
    base_url="https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/compatible-mode/v1",
)
# messages リストを初期化します
completion = client.chat.completions.create(
    model="qwen-long",
    messages=[
        {'role': 'system', 'content': 'You are a helpful assistant.'},
        {'role': 'system', 'content': 'Alibaba Cloud Model Studio スマートフォン製品紹介:Alibaba Cloud Model Studio X1 —————— 究極の視覚体験をお楽しみください:6.7 インチ 1440 x 3200 ピクセルの超高精細画面を搭載...'},
        {'role': 'user', 'content': 'この記事は何について書かれていますか?'}
    ],
    # すべてのコード例では、モデルの出力プロセスを明確かつ直感的に示すためにストリーミング出力を使用しています。非ストリーミングの例については、https://www.alibabacloud.com/help/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)

Java

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()
                .apiKey(System.getenv("DASHSCOPE_API_KEY"))
                // 中国 (北京) リージョンのエンドポイントです。{WorkspaceId} をご利用のワークスペース ID に置き換えてください。URL はリージョンによって異なります。
                .baseUrl("https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/compatible-mode/v1")
                .build();

        // チャットリクエストを作成します
        ChatCompletionCreateParams chatParams = ChatCompletionCreateParams.builder()
                .addSystemMessage("You are a helpful assistant.")
                .addSystemMessage("Alibaba Cloud Model Studio スマートフォン製品紹介:Alibaba Cloud Model Studio X1 —————— 究極の視覚体験をお楽しみください:6.7 インチ 1440 x 3200 ピクセルの超高精細画面を搭載...")
                .addUserMessage("この記事は何について書かれていますか?")
                .model("qwen-long")
                .build();

        StringBuilder fullResponse = new StringBuilder();

        // すべての例では、モデルの応答プロセスを示すためにストリーミング出力を使用しています。非ストリーミングの例については、https://www.alibabacloud.com/help/model-studio/text-generation をご参照ください
        try (StreamResponse<ChatCompletionChunk> streamResponse = client.chat().completions().createStreaming(chatParams)) {
            streamResponse.stream().forEach(chunk -> {
                // 各チャンクのコンテンツを出力して追加します
                System.out.println(chunk);
                String content = chunk.choices().get(0).delta().content().orElse("");
                if (!content.isEmpty()) {
                    fullResponse.append(content);
                }
            });
            System.out.println(fullResponse);
        } catch (Exception e) {
            System.err.println("Error: " + e.getMessage());
            System.err.println("詳細については、https://www.alibabacloud.com/help/model-studio/error-code をご参照ください");
        }
    }
}

curl

# 中国 (北京) リージョンのエンドポイントです。{WorkspaceId} をご利用のワークスペース ID に置き換えてください。URL はリージョンによって異なります。
curl --location 'https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/compatible-mode/v1/chat/completions' \
--header "Authorization: Bearer $DASHSCOPE_API_KEY" \
--header "Content-Type: application/json" \
--data '{
    "model": "qwen-long",
    "messages": [
        {"role": "system","content": "You are a helpful assistant."},
        {"role": "system","content": "Alibaba Cloud Model Studio X1 —— 究極の視覚体験をお楽しみください:6.7 インチ 1440 x 3200 ピクセルの超高精細画面、120Hz の更新頻度..."},
        {"role": "user","content": "この記事は何について書かれていますか?"}
    ],
    "stream": true,
    "stream_options": {
        "include_usage": true
    }
}'

複数のドキュメントを渡す

1回の会話ターンで複数のドキュメントを渡すには、各ドキュメントのコンテンツを個別のシステムメッセージに配置します。

Python

import os
from openai import OpenAI

client = OpenAI(
    api_key=os.getenv("DASHSCOPE_API_KEY"),  # 環境変数を設定していない場合は、ここで API キーを置き換えます
    # 中国 (北京) リージョンのエンドポイントです。{WorkspaceId} をご利用のワークスペース ID に置き換えてください。URL はリージョンによって異なります。
    base_url="https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/compatible-mode/v1",
)
# messages リストを初期化します
completion = client.chat.completions.create(
    model="qwen-long",
    messages=[
        {'role': 'system', 'content': 'You are a helpful assistant.'},
        {'role': 'system', 'content': 'Alibaba Cloud Model Studio X1————究極の視覚体験をお楽しみください:6.7 インチ 1440 x 3200 ピクセルの超高精細画面、120Hz の更新頻度...'},
        {'role': 'system', 'content': 'Stardust S9 Pro —— 革新的な視覚の饗宴:画期的な 6.9 インチ 1440 x 3088 ピクセルのアンダーディスプレイカメラ設計...'},
        {'role': 'user', 'content': 'これら2つの記事で説明されている製品の類似点と相違点は何ですか?'}
    ],
    # すべてのコード例では、モデルの出力プロセスを明確かつ直感的に示すためにストリーミング出力を使用しています。非ストリーミングの例については、https://www.alibabacloud.com/help/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)

Java

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()
                .apiKey(System.getenv("DASHSCOPE_API_KEY"))
                // 中国 (北京) リージョンのエンドポイントです。{WorkspaceId} をご利用のワークスペース ID に置き換えてください。URL はリージョンによって異なります。
                .baseUrl("https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/compatible-mode/v1")
                .build();

        // チャットリクエストを作成します
        ChatCompletionCreateParams chatParams = ChatCompletionCreateParams.builder()
                .addSystemMessage("You are a helpful assistant.")
                .addSystemMessage("Alibaba Cloud Model Studio スマートフォン製品紹介:Alibaba Cloud Model Studio X1 —————— 究極の視覚体験をお楽しみください:6.7 インチ 1440 x 3200 ピクセルの超高精細画面を搭載...")
                .addSystemMessage("Stardust S9 Pro —— 革新的な視覚の饗宴:画期的な 6.9 インチ 1440 x 3088 ピクセルのアンダーディスプレイカメラ設計...")
                .addUserMessage("これら2つの記事で説明されている製品の類似点と相違点は何ですか?")
                .model("qwen-long")
                .build();

        StringBuilder fullResponse = new StringBuilder();

        // すべての例では、モデルの応答プロセスを示すためにストリーミング出力を使用しています。非ストリーミングの例については、https://www.alibabacloud.com/help/model-studio/text-generation をご参照ください
        try (StreamResponse<ChatCompletionChunk> streamResponse = client.chat().completions().createStreaming(chatParams)) {
            streamResponse.stream().forEach(chunk -> {
                // 各チャンクのコンテンツを出力して追加します
                System.out.println(chunk);
                String content = chunk.choices().get(0).delta().content().orElse("");
                if (!content.isEmpty()) {
                    fullResponse.append(content);
                }
            });
            System.out.println(fullResponse);
        } catch (Exception e) {
            System.err.println("Error: " + e.getMessage());
            System.err.println("詳細については、https://www.alibabacloud.com/help/model-studio/error-code をご参照ください");
        }
    }
}

curl

# 中国 (北京) リージョンのエンドポイントです。{WorkspaceId} をご利用のワークスペース ID に置き換えてください。URL はリージョンによって異なります。
curl --location 'https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/compatible-mode/v1/chat/completions' \
--header "Authorization: Bearer $DASHSCOPE_API_KEY" \
--header "Content-Type: application/json" \
--data '{
    "model": "qwen-long",
    "messages": [
        {"role": "system","content": "You are a helpful assistant."},
        {"role": "system","content": "Alibaba Cloud Model Studio X1 —— 究極の視覚体験をお楽しみください:6.7 インチ 1440 x 3200 ピクセルの超高精細画面、120Hz の更新頻度..."},
        {"role": "system","content": "Stardust S9 Pro —— 革新的な視覚の饗宴:画期的な 6.9 インチ 1440 x 3088 ピクセルのアンダーディスプレイカメラ設計..."},
        {"role": "user","content": "これら2つの記事で説明されている製品の類似点と相違点は何ですか?"}
    ],
    "stream": true,
    "stream_options": {
        "include_usage": true
    }
}'

ドキュメントの追加

モデルとの対話中に、新しいドキュメント情報を追加する必要が生じることがあります。その場合は、新しいドキュメントコンテンツをシステムメッセージとして Messages 配列に追加します。

Python

import os
from openai import OpenAI, BadRequestError

client = OpenAI(
    api_key=os.getenv("DASHSCOPE_API_KEY"),  # 環境変数を設定していない場合は、ここで API キーを置き換えます
    # 中国 (北京) リージョンのエンドポイントです。{WorkspaceId} をご利用のワークスペース ID に置き換えてください。URL はリージョンによって異なります。
    base_url="https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/compatible-mode/v1",
)
# messages リストを初期化します
messages = [
    {'role': 'system', 'content': 'You are a helpful assistant.'},
    {'role': 'system', 'content': 'Alibaba Cloud Model Studio X1 —— 究極の視覚体験をお楽しみください:6.7 インチ 1440 x 3200 ピクセルの超高精細画面、120Hz の更新頻度...'},
    {'role': 'user', 'content': 'この記事は何について書かれていますか?'}
]

try:
    # 1巡目の応答
    completion_1 = client.chat.completions.create(
        model="qwen-long",
        messages=messages,
        stream=False
    )
    # 1巡目の応答を出力します
    # 1巡目でストリーミング出力を行うには、stream=True を設定し、各セグメントのコンテンツを連結します。連結した文字列を、assistant_message を構築する際の content として渡します
    print(f"1巡目の応答: {completion_1.choices[0].message.model_dump()}")
except BadRequestError as e:
    print(f"Error: {e}")
    print("詳細については、https://www.alibabacloud.com/help/model-studio/error-code をご参照ください")

# assistant_message を構築します
assistant_message = {
    "role": "assistant",
    "content": completion_1.choices[0].message.content}

# assistant_message を messages に追加します
messages.append(assistant_message)
# 新しいドキュメントコンテンツを messages に追加します
system_message = {
    'role': 'system',
    'content': 'Stardust S9 Pro —— 革新的な視覚の饗宴:画期的な 6.9 インチ 1440 x 3088 ピクセルのアンダーディスプレイカメラ設計、没入感のある視覚体験を提供...'}
messages.append(system_message)

# ユーザーの質問を追加します
messages.append({
    'role': 'user',
    'content': 'これら2つの記事で説明されている製品の類似点と相違点は何ですか?'
})

# ドキュメント追加後の応答
completion_2 = client.chat.completions.create(
    model="qwen-long",
    messages=messages,
    # すべてのコード例では、モデルの出力プロセスを明確かつ直感的に示すためにストリーミング出力を使用しています。非ストリーミングの例については、https://www.alibabacloud.com/help/model-studio/text-generation をご参照ください
    stream=True,
    stream_options={"include_usage": True}
)

# ドキュメント追加後の応答をストリーミングして出力します
print("ドキュメント追加後の応答:")
for chunk in completion_2:
    print(chunk.model_dump())

Java

import com.openai.client.OpenAIClient;
import com.openai.client.okhttp.OpenAIOkHttpClient;
import com.openai.models.chat.completions.*;
import com.openai.core.http.StreamResponse;

import java.util.ArrayList;
import java.util.List;

public class Main {
    public static void main(String[] args) {
        OpenAIClient client = OpenAIOkHttpClient.builder()
                .apiKey(System.getenv("DASHSCOPE_API_KEY"))
                // 中国 (北京) リージョンのエンドポイントです。{WorkspaceId} をご利用のワークスペース ID に置き換えてください。URL はリージョンによって異なります。
                .baseUrl("https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/compatible-mode/v1")
                .build();
        // messages リストを初期化します
        List<ChatCompletionMessageParam> messages = new ArrayList<>();
        
        // ロール設定情報を追加します
        ChatCompletionSystemMessageParam roleSet = ChatCompletionSystemMessageParam.builder()
                .content("You are a helpful assistant.")
                .build();
        messages.add(ChatCompletionMessageParam.ofSystem(roleSet));
        
        // 1巡目のコンテンツ
        ChatCompletionSystemMessageParam systemMsg1 = ChatCompletionSystemMessageParam.builder()
                .content("Alibaba Cloud Model Studio X1 —— 究極の視覚体験をお楽しみください:6.7 インチ 1440 x 3200 ピクセルの超高精細画面、120Hz の更新頻度、256 GB のストレージ、12 GB の RAM、5000mAh の長持ちバッテリーを搭載...")
                .build();
        messages.add(ChatCompletionMessageParam.ofSystem(systemMsg1));

        // ユーザーの質問 (USER ロール)
        ChatCompletionUserMessageParam userMsg1 = ChatCompletionUserMessageParam.builder()
                .content("記事の内容を要約してください")
                .build();
        messages.add(ChatCompletionMessageParam.ofUser(userMsg1));

        // 1巡目のリクエストを構築し、例外を処理します
        ChatCompletion completion1;
        try {
            completion1 = client.chat().completions().create(
                    ChatCompletionCreateParams.builder()
                            .model("qwen-long")
                            .messages(messages)
                            .build()
            );
        } catch (Exception e) {
            System.err.println("Error: " + e.getMessage());
            System.err.println("詳細については、https://www.alibabacloud.com/help/model-studio/error-code をご参照ください");
            e.printStackTrace(); 
            return; 
        }

        // 1巡目の応答
        String firstResponse = completion1 != null ? completion1.choices().get(0).message().content().orElse("") : "";
        System.out.println("1巡目の応答: " + firstResponse);

        // AssistantMessage を構築します
        ChatCompletionAssistantMessageParam assistantMsg = ChatCompletionAssistantMessageParam.builder()
                .content(firstResponse)
                .build();
        messages.add(ChatCompletionMessageParam.ofAssistant(assistantMsg));

        // 2巡目のコンテンツ
        ChatCompletionSystemMessageParam systemMsg2 = ChatCompletionSystemMessageParam.builder()
                .content("Stardust S9 Pro —— 革新的な視覚の饗宴:画期的な 6.9 インチ 1440 x 3088 ピクセルのアンダーディスプレイカメラ設計、没入感のある視覚体験を提供...")
                .build();
        messages.add(ChatCompletionMessageParam.ofSystem(systemMsg2));

        // 2巡目のユーザーの質問 (USER ロール)
        ChatCompletionUserMessageParam userMsg2 = ChatCompletionUserMessageParam.builder()
                .content("2つの説明の構造的な違いを比較してください")
                .build();
        messages.add(ChatCompletionMessageParam.ofUser(userMsg2));

        // すべての例では、モデルの応答プロセスを示すためにストリーミング出力を使用しています。非ストリーミングの例については、https://www.alibabacloud.com/help/model-studio/text-generation をご参照ください
        StringBuilder fullResponse = new StringBuilder();
        try (StreamResponse<ChatCompletionChunk> streamResponse = client.chat().completions().createStreaming(
                ChatCompletionCreateParams.builder()
                        .model("qwen-long")
                        .messages(messages)
                        .build())) {

            streamResponse.stream().forEach(chunk -> {
                String content = chunk.choices().get(0).delta().content().orElse("");
                if (!content.isEmpty()) {
                    fullResponse.append(content);
                }
            });
            System.out.println("\n最終的な応答:");
            System.out.println(fullResponse.toString().trim());
        } catch (Exception e) {
            System.err.println("Error: " + e.getMessage());
            System.err.println("詳細については、https://www.alibabacloud.com/help/model-studio/error-code をご参照ください");
        }
    }
}

curl

# 中国 (北京) リージョンのエンドポイントです。{WorkspaceId} をご利用のワークスペース ID に置き換えてください。URL はリージョンによって異なります。
curl --location 'https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/compatible-mode/v1/chat/completions' \
--header "Authorization: Bearer $DASHSCOPE_API_KEY" \
--header "Content-Type: application/json" \
--data '{
    "model": "qwen-long",
    "messages": [
            {"role": "system","content": "You are a helpful assistant."},
            {"role": "system","content": "Alibaba Cloud Model Studio X1 —— 究極の視覚体験をお楽しみください:6.7 インチ 1440 x 3200 ピクセルの超高精細画面、120Hz の更新頻度..."},
            {"role": "user","content": "この記事は何について書かれていますか?"},
            {"role": "system","content": "Stardust S9 Pro —— 革新的な視覚の饗宴:画期的な 6.9 インチ 1440 x 3088 ピクセルのアンダーディスプレイカメラ設計、没入感のある視覚体験を提供..."},
            {"role": "user","content": "これら2つの記事で説明されている製品の類似点と相違点は何ですか"}
        ],
    "stream": true,
    "stream_options": {
        "include_usage": true
    }
}'

モデルの料金

モデル名

バージョン

コンテキスト長

最大入力

最大出力

入力コスト

出力コスト

(トークン)

(100 万トークンあたり)

qwen-long-latest

常に最新のスナップショットバージョンと同じ機能を持ちます。

最新版

10,000,000

10,000,000

32,768

$0.072

$0.287

qwen-long-2025-01-25

qwen-long-0125 とも呼ばれます。

スナップショット

よくある質問

  1. Qwen-Long モデルはバッチジョブの送信に対応していますか?

    はい。Qwen-Long は OpenAI Batch API に対応しており、リアルタイム呼び出しレートの 50% で利用できます。バッチジョブをファイルとして送信すると、ジョブは非同期で実行され、完了またはタイムアウト時に結果が返されます。

  2. OpenAI 互換のファイル API を使用してアップロードされたファイルは、どこに保存されますか?

    ファイルはご利用の Model Studio バケットに無料でアップロードされます。ファイルのクエリと管理については、OpenAI File API をご参照ください。

  3. qwen-long-2025-01-25 とは何ですか?

    これは、特定の時点で凍結されたバージョンスナップショットです。`latest` よりも安定しており、有効期限はありません。

  4. ファイルの解析が完了したことをどのように確認できますか?

    file-id を指定してモデルを呼び出してください。解析が完了していない場合、エラー 400「File parsing in progress, please try again later.」が返されます。正常な応答は、解析が完了したことを意味します。

  5. モデルが標準フォーマットの JSON 文字列を確実に出力するようにするには、どうすればよいですか?

    qwen-long およびすべてのスナップショットは 構造化出力 に対応しています。JSON スキーマを指定することで、ご利用の構造に一致する有効な JSON を保証できます。

API リファレンス

Qwen-Long モデルの入力および出力パラメーターについては、「Qwen API の詳細」をご参照ください。

エラーコード

モデルの呼び出しが失敗し、エラーメッセージが返された場合は、エラーコードをご参照ください。

制限事項

  • SDK の依存関係:

    • ファイル操作 (アップロード、削除、クエリ) には、OpenAI 互換 SDK が必要です。

    • モデルの呼び出しは、OpenAI 互換 SDK または Dashscope SDK を使用します。

  • ファイルのアップロード:

    • 対応フォーマット: TXT、DOCX、PDF、XLSX、EPUB、MOBI、MD、CSV、JSON、BMP、PNG、JPG/JPEG、GIF。

    • ファイルサイズ: 画像ファイルの最大サイズは 20 MB です。その他のファイル形式の最大サイズは 150 MB です。

    • アカウントのクォータ: 1 アカウントあたり最大 10,000 ファイルまたは 100 GB です。いずれかの上限に達すると、アップロードは失敗します。ファイルを削除してクォータを解放してください。詳細については、「OpenAI 互換 - ファイル」をご参照ください。

    • ストレージ期間: 現在、保存されているファイルに有効期限はありません。

  • API 入力:

    • 最初の system メッセージでロールを定義します。2 番目のメッセージには、ドキュメントコンテンツまたは fileid://xxx が含まれます。user メッセージにはクエリが含まれます。

    • file-id を使用してファイルを参照する場合、1 つのリクエストで最大 100 ファイルまで参照できます。

    • 2 番目の system メッセージがある場合、user メッセージの制限は 9,000 トークンです。system メッセージが 1 つだけの場合は制限はありません。

    • 合計コンテキスト長は 1,000 万トークンに制限されています。

  • API 出力:

    • 最大出力長は 32,768 トークンです。

  • ファイルの共有:

    • file-id はアカウント固有であり、アカウント間や RAM ユーザーの API キーでは使用できません。

  • 速度制限: モデルの速度制限条件については、「Throttling」をご参照ください。