ドキュメントセンター
 
すべてのプロダクト
Search
  • ドキュメントセンター
  • Alibaba Cloud Model Studio
  • 操作ガイド (モデル)
  • モデル プレイグラウンド
  • テキスト生成
  • ディープシンキング

このプロダクト

  • このプロダクト
  • すべてのプロダクト

    Alibaba Cloud Model Studio:ディープシンキング

    ドキュメントセンター

    Alibaba Cloud Model Studio:ディープシンキング

    最終更新日:May 08, 2026

    ディープシンキングモデルは、応答を生成する前に推論を行い、論理的推論や数値計算などの複雑なタスクにおける精度を向上させます。

    以下の例では、OpenAI 互換 Chat Completion API および DashScope API を使用します。Responses API については、「ディープシンキング」をご参照ください。
    QwQ Logo
    Qwen

    使用方法

    Alibaba Cloud Model Studio は、ディープシンキングモデル向けにハイブリッド思考モードと思考専用モードの 2 種類の API を提供します。

    • ハイブリッド思考モード: enable_thinking パラメーターを使用して、思考モードを有効または無効にします。

      • true に設定すると、モデルは応答前に推論を行います。

      • false に設定すると、モデルは直接応答します。

      OpenAI 互換

      # 依存関係をインポートし、クライアントを作成...
      completion = client.chat.completions.create(
          model="qwen-plus", # モデルを選択
          messages=[{"role": "user", "content": "Who are you"}],    
          # enable_thinking は標準的な OpenAI パラメーターではないため、extra_body で渡します。
          extra_body={"enable_thinking":True},
          # ストリーミング出力を有効化。
          stream=True,
          # 最後のデータパケットにトークン消費情報を含めるようにストリームを構成。
          stream_options={
              "include_usage": True
          }
      )

      DashScope

      Qwen3.5 シリーズの DashScope API はマルチモーダルインターフェイスを使用します。以下の例は url error を返します。正しい使用方法については、「思考モードの有効化または無効化」をご参照ください。
      # 依存関係をインポート...
      
      response = Generation.call(
          # 環境変数を設定していない場合、次の行を Model Studio API キーに置き換えます(例:api_key = "sk-xxx")。
          api_key=os.getenv("DASHSCOPE_API_KEY"),
          # 必要に応じて他のディープシンキングモデルを使用できます。
          model="qwen-plus",
          messages=messages,
          result_format="message",
          enable_thinking=True,
          stream=True,
          incremental_output=True
      )
    • 思考専用モード: モデルは常に応答前に推論を行い、この動作を無効にすることはできません。リクエスト形式はハイブリッド思考モードと同じですが、enable_thinking パラメーターを設定する必要はありません。

    API は、推論内容を reasoning_content フィールドに、応答を content フィールドに返します。ディープシンキングモデルは応答前に推論を行うため、遅延が増加します。ほとんどのモデルはストリーミング出力のみをサポートしているため、すべての例でストリーミング呼び出しを使用しています。

    対応モデル

    Qwen3.6

    Qwen3.6 Max シリーズ(ハイブリッド思考モード、思考モードがデフォルトで有効): qwen3.6-max-preview

    Qwen3.6 Plus シリーズ(ハイブリッド思考モード、思考モードがデフォルトで有効): qwen3.6-plus、qwen3.6-plus-2026-04-02

    Qwen3.6 Flash シリーズ(ハイブリッド思考モード、思考モードがデフォルトで有効): qwen3.6-flash、qwen3.6-flash-2026-04-16

    オープンソース Qwen3.6: qwen3.6-35b-a3b

    Qwen3.5

    • 商用版

      • Qwen3.5 Plus シリーズ(ハイブリッド思考モード、思考モードがデフォルトで有効): qwen3.5-plus、qwen3.5-plus-2026-02-15

      • Qwen3.5 Flash シリーズ(ハイブリッド思考モード、思考モードがデフォルトで有効): qwen3.5-flash、qwen3.5-flash-2026-02-23

    • オープンソース

      • ハイブリッド思考モード、思考モードがデフォルトで有効: qwen3.5-397b-a17b、qwen3.5-122b-a10b、qwen3.5-27b、qwen3.5-35b-a3b

    Qwen3

    • 商用版

      • Qwen Max シリーズ(ハイブリッド思考モード、思考モードがデフォルトで無効): qwen3-max、qwen3-max-2026-01-23、qwen3-max-preview

      • Qwen Plus シリーズ(ハイブリッド思考モード、思考モードがデフォルトで無効): qwen-plus、qwen-plus-latest、qwen-plus-2025-04-28 以降のスナップショットバージョン

      • Qwen Flash シリーズ(ハイブリッド思考モード、思考モードがデフォルトで無効): qwen-flash、qwen-flash-2025-07-28 以降のスナップショットバージョン

      • Qwen Turbo シリーズ(ハイブリッド思考モード、思考モードがデフォルトで無効): qwen-turbo、qwen-turbo-latest、qwen-turbo-2025-04-28 以降のスナップショットバージョン

    • オープンソース

      • ハイブリッド思考モード、思考モードがデフォルトで有効: qwen3-235b-a22b、qwen3-32b、qwen3-30b-a3b、qwen3-14b、qwen3-8b、qwen3-4b、qwen3-1.7b、qwen3-0.6b

      • 思考専用モード: qwen3-next-80b-a3b-thinking、qwen3-235b-a22b-thinking-2507、qwen3-30b-a3b-thinking-2507

    QwQ (Qwen2.5 ベース)

    思考専用モード: qwq-plus、qwq-plus-latest、qwq-plus-2025-03-05、qwq-32b

    DeepSeek

    • ハイブリッド思考モード、思考モードがデフォルトで無効: deepseek-v4-pro、deepseek-v4-flash、deepseek-v3.2、deepseek-v3.2-exp、deepseek-v3.1

    • 思考専用モード: deepseek-r1、deepseek-r1-0528、deepseek-r1 蒸留モデル

    GLM

    ハイブリッド思考モード、思考モードがデフォルトで有効: glm-5.1、glm-5、glm-4.7、glm-4.6

    Kimi

    • ハイブリッド思考モード、思考モードがデフォルトで無効: kimi-k2.6、kimi-k2.5

    • 思考専用モード: kimi-k2-thinking

    MiniMax

    思考専用モード: MiniMax-M2.5

    モデル名、コンテキストウィンドウ、価格、スナップショットバージョンについては、「モデル一覧」をご参照ください。レート制限については、「レート制限」をご参照ください。

    はじめに

    「API キーの作成」および「環境変数として設定」を行います。SDK を使用する場合は、「OpenAI または DashScope SDK のインストール」(DashScope Java SDK のバージョンは 2.19.4 以降)を行ってください。

    ストリーミング出力で思考モードを使用して qwen-plus モデルを呼び出します。

    OpenAI 互換

    Python

    サンプルコード

    from openai import OpenAI
    import os
    
    # OpenAI クライアントを初期化。
    client = OpenAI(
        # API キーはリージョンによって異なります。API キーの取得方法:https://www.alibabacloud.com/help/en/model-studio/get-api-key
        # 環境変数が設定されていない場合、Model Studio API キーを直接指定:api_key="sk-xxx"
        api_key=os.getenv("DASHSCOPE_API_KEY"),
        # 構成はリージョンによって異なります。base_url をご利用のリージョンに基づいて変更してください。
        base_url="https://dashscope-intl.aliyuncs.com/compatible-mode/v1",
    )
    
    messages = [{"role": "user", "content": "Who are you"}]
    
    completion = client.chat.completions.create(
        model="qwen-plus",  # 必要に応じて他のディープシンキングモデルに置き換え可能です。
        messages=messages,
        extra_body={"enable_thinking": True},
        stream=True,
        stream_options={
            "include_usage": True
        },
    )
    
    reasoning_content = ""  # 完全な思考プロセス
    answer_content = ""  # 完全な応答
    is_answering = False  # 応答フェーズが開始されたかどうかを追跡
    print("\n" + "=" * 20 + "思考プロセス" + "=" * 20 + "\n")
    
    for chunk in completion:
        if not chunk.choices:
            print("\n使用量:")
            print(chunk.usage)
            continue
    
        delta = chunk.choices[0].delta
    
        # 思考コンテンツのみを収集。
        if hasattr(delta, "reasoning_content") and delta.reasoning_content is not None:
            if not is_answering:
                print(delta.reasoning_content, end="", flush=True)
            reasoning_content += delta.reasoning_content
    
        # コンテンツを受信したら、応答を開始。
        if hasattr(delta, "content") and delta.content:
            if not is_answering:
                print("\n" + "=" * 20 + "完全な応答" + "=" * 20 + "\n")
                is_answering = True
            print(delta.content, end="", flush=True)
            answer_content += delta.content
    

    応答

    ====================思考プロセス====================
    
    ユーザーのクエリ「Who are you?」には正確かつフレンドリーな応答が必要です。まず、私が Alibaba Cloud の通義実験室で開発された Qwen であることを明確にします。次に、質問への回答、テキスト生成、論理的推論などの主要機能を概説します。言葉はシンプルに、トーンは親しみやすくします。さらにインタラクションを促すために、ユーザーに追加の質問をすることを勧めます。最後に、私の名前(Qwen)と開発者など、重要な詳細がすべて含まれているか確認し、包括的な回答を提供します。
    ====================完全な応答====================
    
    こんにちは!私は Alibaba Group の通義実験室で開発された大規模言語モデル Qwen です。質問への回答、テキスト生成、論理的推論、コード作成などを行い、高品質な情報とサービスを提供できます。私を Qwen と呼んでください。何かお手伝いできることはありますか?

    Node.js

    サンプルコード

    import OpenAI from "openai";
    import process from 'process';
    
    // OpenAI クライアントを初期化。
    const openai = new OpenAI({
        apiKey: process.env.DASHSCOPE_API_KEY, // 環境変数から読み取り。
        // 以下はシンガポールリージョンのベース URL です。米国(バージニア)リージョンのモデルを使用する場合、ベース URL を https://dashscope-us.aliyuncs.com/compatible-mode/v1 に変更してください。ベース URL はリージョンによって異なります。デプロイメントのリージョンに合わせて更新してください。
        baseURL: 'https://dashscope-intl.aliyuncs.com/compatible-mode/v1'
    });
    
    let reasoningContent = '';
    let answerContent = '';
    let isAnswering = false;
    
    async function main() {
        try {
            const messages = [{ role: 'user', content: 'Who are you' }];
            const stream = await openai.chat.completions.create({
                model: 'qwen-plus',
                messages,
                stream: true,
                enable_thinking: true
            });
            console.log('\n' + '='.repeat(20) + '思考プロセス' + '='.repeat(20) + '\n');
    
            for await (const chunk of stream) {
                if (!chunk.choices?.length) {
                    console.log('\n使用量:');
                    console.log(chunk.usage);
                    continue;
                }
    
                const delta = chunk.choices[0].delta;
                
                // 思考コンテンツのみを収集。
                if (delta.reasoning_content !== undefined && delta.reasoning_content !== null) {
                    if (!isAnswering) {
                        process.stdout.write(delta.reasoning_content);
                    }
                    reasoningContent += delta.reasoning_content;
                }
    
                // コンテンツを受信したら、応答を開始。
                if (delta.content !== undefined && delta.content) {
                    if (!isAnswering) {
                        console.log('\n' + '='.repeat(20) + '完全な応答' + '='.repeat(20) + '\n');
                        isAnswering = true;
                    }
                    process.stdout.write(delta.content);
                    answerContent += delta.content;
                }
            }
        } catch (error) {
            console.error('エラー:', error);
        }
    }
    
    main();

    応答

    ====================思考プロセス====================
    
    ユーザーの直接的なクエリ「Who are you?」には、簡潔で明確な応答が必要です。応答では、私が Alibaba Cloud の大規模言語モデル Qwen であることを述べます。質問への回答、テキスト生成、論理的推論などの主要機能に加え、中国語と英語を含む多言語サポートについても言及します。簡潔さを保つため、ユースケースは必要最小限にとどめます。トーンはフレンドリーにし、応答の最後にはさらなる質問を促します。最後に、不要な詳細(バージョン番号など)を含めずに正確性を確保します。
    ====================完全な応答====================
    
    私は Alibaba Group の通義実験室で開発された大規模言語モデル Qwen です。質問への回答、テキスト生成、論理的推論、コーディングなどさまざまなタスクを実行でき、中国語や英語を含む多言語をサポートしています。ご質問やお手伝いが必要な場合は、いつでもお気軽にお知らせください!

    HTTP

    サンプルコード

    curl

    # ======= 重要 =======
    # 以下はシンガポールリージョンの URL です。中国(北京)リージョンの場合は、URL を https://dashscope.aliyuncs.com/compatible-mode/v1/chat/completions に置き換えてください。
    # 米国(バージニア)リージョンの場合は、https://dashscope-us.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": "qwen-plus",
        "messages": [
            {
                "role": "user", 
                "content": "Who are you"
            }
        ],
        "stream": true,
        "stream_options": {
            "include_usage": true
        },
        "enable_thinking": true
    }'

    応答

    data: {"choices":[{"delta":{"content":null,"role":"assistant","reasoning_content":""},"index":0,"logprobs":null,"finish_reason":null}],"object":"chat.completion.chunk","usage":null,"created":1745485391,"system_fingerprint":null,"model":"qwen-plus","id":"chatcmpl-e2edaf2c-8aaf-9e54-90e2-b21dd5045503"}
    
    .....
    
    data: {"choices":[{"finish_reason":"stop","delta":{"content":"","reasoning_content":null},"index":0,"logprobs":null}],"object":"chat.completion.chunk","usage":null,"created":1745485391,"system_fingerprint":null,"model":"qwen-plus","id":"chatcmpl-e2edaf2c-8aaf-9e54-90e2-b21dd5045503"}
    
    data: {"choices":[],"object":"chat.completion.chunk","usage":{"prompt_tokens":10,"completion_tokens":360,"total_tokens":370},"created":1745485391,"system_fingerprint":null,"model":"qwen-plus","id":"chatcmpl-e2edaf2c-8aaf-9e54-90e2-b21dd5045503"}
    
    data: [DONE]

    DashScope

    Qwen3.5 シリーズの DashScope API はマルチモーダルインターフェイスを使用するため、以下の例は url error を返します。正しい使用方法については、「思考モードの有効化または無効化」をご参照ください。

    Python

    サンプルコード

    import os
    from dashscope import Generation
    import dashscope
    
    # 構成はリージョンによって異なります。この値をご利用のリージョンに基づいて変更してください。
    dashscope.base_http_api_url = "https://dashscope-intl.aliyuncs.com/api/v1"
    
    # リクエストパラメーターを初期化
    messages = [{"role": "user", "content": "Who are you?"}]
    
    completion = Generation.call(
        # 環境変数が設定されていない場合、次の行を Model Studio API キーに置き換えます:api_key = "sk-xxx"。
        api_key=os.getenv("DASHSCOPE_API_KEY"),
        model="qwen-plus",
        messages=messages,
        result_format="message",
        enable_thinking=True,
        stream=True,
        incremental_output=True,
    )
    
    # 完全な思考プロセス
    reasoning_content = ""
    # 完全な応答
    answer_content = ""
    # 応答フェーズが開始されたかどうかを追跡。
    is_answering = False
    
    print("=" * 20 + "思考プロセス" + "=" * 20)
    
    for chunk in completion:
        # 思考コンテンツと応答コンテンツが両方空の場合、チャンクを無視。
        if (
            chunk.output.choices[0].message.content == ""
            and chunk.output.choices[0].message.reasoning_content == ""
        ):
            pass
        else:
            # 現在のチャンクが思考プロセスの一部の場合。
            if (
                chunk.output.choices[0].message.reasoning_content != ""
                and chunk.output.choices[0].message.content == ""
            ):
                print(chunk.output.choices[0].message.reasoning_content, end="", flush=True)
                reasoning_content += chunk.output.choices[0].message.reasoning_content
            # 現在のチャンクが応答の一部の場合。
            elif chunk.output.choices[0].message.content != "":
                if not is_answering:
                    print("\n" + "=" * 20 + "完全な応答" + "=" * 20)
                    is_answering = True
                print(chunk.output.choices[0].message.content, end="", flush=True)
                answer_content += chunk.output.choices[0].message.content
    
    # 完全な思考プロセスと完全な応答を出力するには、以下のコードのコメントを解除してください。
    # print("=" * 20 + "完全な思考プロセス" + "=" * 20 + "\n")
    # print(f"{reasoning_content}")
    # print("=" * 20 + "完全な応答" + "=" * 20 + "\n")
    # print(f"{answer_content}")
    
    

    応答

    ====================思考プロセス====================
    「Who are you?」というクエリに答えるには、まず私が Alibaba Cloud の大規模言語モデル Qwen であることを明確に述べる必要があります。次に、質問への回答、テキスト生成、論理的推論などの主要機能を説明し、ユーザーが私をどのように活用できるかを理解してもらいます。応答は会話調で、専門用語を避けます。さらにインタラクションを促すために、オープンエンドの質問で締めくくります。最後に、フレンドリーでプロフェッショナルなトーンのバランスを取りながら、明確で簡潔であることを確認します。
    ====================完全な応答====================
    こんにちは!私は Alibaba Cloud で開発された大規模言語モデル Qwen です。質問への回答、テキスト生成、論理的推論、コード作成などを行い、サポートを提供できます。日常生活や専門分野に関するご質問があれば、最善を尽くしてお手伝いします。何かお手伝いできることはありますか?

    Java

    サンプルコード

    // DashScope SDK のバージョンは 2.19.4 以降である必要があります。
    import java.util.Arrays;
    import org.slf4j.Logger;
    import org.slf4j.LoggerFactory;
    import com.alibaba.dashscope.aigc.generation.Generation;
    import com.alibaba.dashscope.aigc.generation.GenerationParam;
    import com.alibaba.dashscope.aigc.generation.GenerationResult;
    import com.alibaba.dashscope.common.Message;
    import com.alibaba.dashscope.common.Role;
    import com.alibaba.dashscope.exception.ApiException;
    import com.alibaba.dashscope.exception.InputRequiredException;
    import com.alibaba.dashscope.exception.NoApiKeyException;
    import io.reactivex.Flowable;
    import java.lang.System;
    import com.alibaba.dashscope.utils.Constants;
    
    public class Main {
        static {
            // 以下はシンガポールリージョンの base_url です。バージニアリージョンのモデルを使用する場合、base_url を https://dashscope-us.aliyuncs.com/api/v1 に変更する必要があります。
            // 構成はリージョンによって異なります。実際のご利用リージョンに基づいて構成を変更してください。
            Constants.baseHttpApiUrl="https://dashscope-intl.aliyuncs.com/api/v1";
        }
        private static final Logger logger = LoggerFactory.getLogger(Main.class);
        private static StringBuilder reasoningContent = new StringBuilder();
        private static StringBuilder finalContent = new StringBuilder();
        private static boolean isFirstPrint = true;
    
        private static void handleGenerationResult(GenerationResult message) {
            String reasoning = message.getOutput().getChoices().get(0).getMessage().getReasoningContent();
            String content = message.getOutput().getChoices().get(0).getMessage().getContent();
    
            if (!reasoning.isEmpty()) {
                reasoningContent.append(reasoning);
                if (isFirstPrint) {
                    System.out.println("====================思考プロセス====================");
                    isFirstPrint = false;
                }
                System.out.print(reasoning);
            }
    
            if (!content.isEmpty()) {
                finalContent.append(content);
                if (!isFirstPrint) {
                    System.out.println("\n====================完全な応答====================");
                    isFirstPrint = true;
                }
                System.out.print(content);
            }
        }
        private static GenerationParam buildGenerationParam(Message userMsg) {
            return GenerationParam.builder()
                     // API キーはリージョンによって異なります。API キーの取得方法:https://www.alibabacloud.com/help/en/model-studio/get-api-key
                    // 環境変数が設定されていない場合、次の行を Alibaba Cloud Model Studio API キーに置き換えます:.apiKey("sk-xxx")
                    .apiKey(System.getenv("DASHSCOPE_API_KEY"))
                    .model("qwen-plus")
                    .enableThinking(true)
                    .incrementalOutput(true)
                    .resultFormat("message")
                    .messages(Arrays.asList(userMsg))
                    .build();
        }
        public static void streamCallWithMessage(Generation gen, Message userMsg)
                throws NoApiKeyException, ApiException, InputRequiredException {
            GenerationParam param = buildGenerationParam(userMsg);
            Flowable<GenerationResult> result = gen.streamCall(param);
            result.blockingForEach(message -> handleGenerationResult(message));
        }
    
        public static void main(String[] args) {
            try {
                Generation gen = new Generation();
                Message userMsg = Message.builder().role(Role.USER.getValue()).content("Who are you?").build();
                streamCallWithMessage(gen, userMsg);
    //             最終結果を出力。
    //            if (reasoningContent.length() > 0) {
    //                System.out.println("\n====================完全な応答====================");
    //                System.out.println(finalContent.toString());
    //            }
            } catch (ApiException | NoApiKeyException | InputRequiredException e) {
                logger.error("例外が発生しました: {}", e.getMessage());
            }
            System.exit(0);
        }
    }

    応答

    ====================思考プロセス====================
    「Who are you?」への応答は、私が Alibaba Cloud の大規模言語モデル Qwen であるという事前定義された ID に基づく必要があります。応答は会話的で、簡潔かつ理解しやすいものにします。まず私の ID を述べ、次にテキスト作成、論理的推論、コーディング、多言語サポートを含む機能を説明します。トーンはフレンドリーにし、ユーザーが助けを求めるよう促すことで、さらなるインタラクションを奨励します。
    ====================完全な応答====================
    こんにちは!私は Alibaba Group の大規模言語モデル Qwen です。質問への回答、物語・公式文書・メール・スクリプトなどのテキスト作成、論理的推論、コード作成、意見表明、ゲームプレイなどを行えます。中国語、英語、ドイツ語、フランス語、スペイン語をはじめとする多言語に精通しています。何かお手伝いできることはありますか?

    HTTP

    サンプルコード

    curl

    # ======= 重要 =======
    # API キーはリージョンによって異なります。API キーの取得方法:https://www.alibabacloud.com/help/en/model-studio/get-api-key
    # 以下はシンガポールリージョンの URL です。中国(北京)リージョンの場合は、URL を https://dashscope.aliyuncs.com/api/v1/services/aigc/text-generation/generation に置き換えてください。
    # 米国(バージニア)リージョンの場合は、URL を https://dashscope-us.aliyuncs.com/api/v1/services/aigc/text-generation/generation に置き換えてください。
    # === 実行前にこのコメントを削除 ===
    curl -X POST "https://dashscope-intl.aliyuncs.com/api/v1/services/aigc/text-generation/generation" \
    -H "Authorization: Bearer $DASHSCOPE_API_KEY" \
    -H "Content-Type: application/json" \
    -H "X-DashScope-SSE: enable" \
    -d '{
        "model": "qwen-plus",
        "input":{
            "messages":[      
                {
                    "role": "user",
                    "content": "Who are you?"
                }
            ]
        },
        "parameters":{
            "enable_thinking": true,
            "incremental_output": true,
            "result_format": "message"
        }
    }'

    応答

    id:1
    event:result
    :HTTP_STATUS/200
    data:{"output":{"choices":[{"message":{"content":"","reasoning_content":"Hmm","role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":14,"input_tokens":11,"output_tokens":3},"request_id":"25d58c29-c47b-9e8d-a0f1-d6c309ec58b1"}
    
    id:2
    event:result
    :HTTP_STATUS/200
    data:{"output":{"choices":[{"message":{"content":"","reasoning_content":",","role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":15,"input_tokens":11,"output_tokens":4},"request_id":"25d58c29-c47b-9e8d-a0f1-d6c309ec58b1"}
    
    id:3
    event:result
    :HTTP_STATUS/200
    data:{"output":{"choices":[{"message":{"content":"","reasoning_content":"user","role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":16,"input_tokens":11,"output_tokens":5},"request_id":"25d58c29-c47b-9e8d-a0f1-d6c309ec58b1"}
    
    id:4
    event:result
    :HTTP_STATUS/200
    data:{"output":{"choices":[{"message":{"content":"","reasoning_content":"asks","role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":17,"input_tokens":11,"output_tokens":6},"request_id":"25d58c29-c47b-9e8d-a0f1-d6c309ec58b1"}
    
    id:5
    event:result
    :HTTP_STATUS/200
    data:{"output":{"choices":[{"message":{"content":"","reasoning_content":"“","role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":18,"input_tokens":11,"output_tokens":7},"request_id":"25d58c29-c47b-9e8d-a0f1-d6c309ec58b1"}
    ......
    
    id:358
    event:result
    :HTTP_STATUS/200
    data:{"output":{"choices":[{"message":{"content":"help","reasoning_content":"","role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":373,"input_tokens":11,"output_tokens":362},"request_id":"25d58c29-c47b-9e8d-a0f1-d6c309ec58b1"}
    
    id:359
    event:result
    :HTTP_STATUS/200
    data:{"output":{"choices":[{"message":{"content":",","reasoning_content":"","role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":374,"input_tokens":11,"output_tokens":363},"request_id":"25d58c29-c47b-9e8d-a0f1-d6c309ec58b1"}
    
    id:360
    event:result
    :HTTP_STATUS/200
    data:{"output":{"choices":[{"message":{"content":"Please feel free","reasoning_content":"","role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":375,"input_tokens":11,"output_tokens":364},"request_id":"25d58c29-c47b-9e8d-a0f1-d6c309ec58b1"}
    
    id:361
    event:result
    :HTTP_STATUS/200
    data:{"output":{"choices":[{"message":{"content":"to","reasoning_content":"","role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":376,"input_tokens":11,"output_tokens":365},"request_id":"25d58c29-c47b-9e8d-a0f1-d6c309ec58b1"}
    
    id:362
    event:result
    :HTTP_STATUS/200
    data:{"output":{"choices":[{"message":{"content":"let me know","reasoning_content":"","role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":377,"input_tokens":11,"output_tokens":366},"request_id":"25d58c29-c47b-9e8d-a0f1-d6c309ec58b1"}
    
    id:363
    event:result
    :HTTP_STATUS/200
    data:{"output":{"choices":[{"message":{"content":"!","reasoning_content":"","role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":378,"input_tokens":11,"output_tokens":367},"request_id":"25d58c29-c47b-9e8d-a0f1-d6c309ec58b1"}
    
    id:364
    event:result
    :HTTP_STATUS/200
    data:{"output":{"choices":[{"message":{"content":"","reasoning_content":"","role":"assistant"},"finish_reason":"stop"}]},"usage":{"total_tokens":378,"input_tokens":11,"output_tokens":367},"request_id":"25d58c29-c47b-9e8d-a0f1-d6c309ec58b1"}

    コア機能

    思考モードとノンシンキングモードの切り替え

    思考モードは応答品質を向上させますが、遅延とコストが増加します。ハイブリッド思考モデルでは、クエリの複雑さに基づいて思考モードとノンシンキングモードを切り替えてください。

    • 複雑な推論を必要としないクエリ(カジュアルな会話や単純な Q&A など)の場合は、enable_thinking を false に設定して、思考モードを無効にしてください。

    • 複雑な推論を必要とするクエリ(論理的推論、コード生成、数学的問題の解決など)の場合は、enable_thinking を true に設定して、思考モードを有効にしてください。

    OpenAI 互換

    重要

    enable_thinking は標準的な OpenAI パラメーターではありません。OpenAI Python SDK では、extra_body を介して渡します。Node.js SDK では、トップレベルパラメーターとして渡します。

    Python

    サンプルコード

    from openai import OpenAI
    import os
    
    # OpenAI クライアントを初期化。
    client = OpenAI(
        # 環境変数が設定されていない場合、値を Model Studio API キーに置き換えます:api_key="sk-xxx"
        # API キーはリージョンによって異なります。API キーの取得方法:https://www.alibabacloud.com/help/en/model-studio/get-api-key
        api_key=os.getenv("DASHSCOPE_API_KEY"),
        # base_url はリージョンによって異なります。実際のご利用リージョンに基づいて変更してください。
        base_url="https://dashscope-intl.aliyuncs.com/compatible-mode/v1",
    )
    
    messages = [{"role": "user", "content": "Who are you?"}]
    completion = client.chat.completions.create(
        model="qwen-plus",
        messages=messages,
        # extra_body で enable_thinking を設定して推論プロセスを有効化。
        extra_body={"enable_thinking": True},
        stream=True,
        stream_options={
            "include_usage": True
        },
    )
    
    reasoning_content = ""  # 完全な推論プロセス
    answer_content = ""  # 完全な応答
    is_answering = False  # 応答フェーズが開始されたかどうかを示す
    print("\n" + "=" * 20 + "推論プロセス" + "=" * 20 + "\n")
    
    for chunk in completion:
        if not chunk.choices:
            print("\n" + "=" * 20 + "トークン使用量" + "=" * 20 + "\n")
            print(chunk.usage)
            continue
    
        delta = chunk.choices[0].delta
    
        # 思考コンテンツのみを収集。
        if hasattr(delta, "reasoning_content") and delta.reasoning_content is not None:
            if not is_answering:
                print(delta.reasoning_content, end="", flush=True)
            reasoning_content += delta.reasoning_content
    
        # コンテンツを受信したら、応答を開始。
        if hasattr(delta, "content") and delta.content:
            if not is_answering:
                print("\n" + "=" * 20 + "完全な応答" + "=" * 20 + "\n")
                is_answering = True
            print(delta.content, end="", flush=True)
            answer_content += delta.content
    

    応答

    ====================推論プロセス====================
    
    ユーザーが「Who are you?」と尋ねています。彼らが何を知りたいのかを判断する必要があります。初めて私とやり取りしているか、私の ID を確認したいのかもしれません。通義実験室で開発された Qwen として自己紹介し、次に質問への回答、テキスト作成、コーディングなどの機能を説明して、ユーザーがどのように活用できるかを理解してもらいます。また、国際的なユーザーが異なる言語でコミュニケーションできることを知らせるため、多言語サポートにも言及します。最後に、フレンドリーなトーンを保ち、さらなる質問を促してインタラクションを奨励します。説明は明確でシンプルにし、専門用語を避けます。ユーザーはおそらく自分の能力の概要を素早く知りたいので、機能とアプリケーションに焦点を当てます。Alibaba Group やより技術的な詳細などの情報が不足していないか考慮しますが、ユーザーはおそらく基本的な情報のみを必要としています。応答がフレンドリーでプロフェッショナルであり、会話を続けるよう促すことを確認します。
    ====================完全な応答====================
    
    私は通義実験室で開発された大規模言語モデル Qwen です。質問への回答、テキスト作成、コード作成、意見表明のお手伝いをします。多言語でのコミュニケーションをサポートしています。何かお手伝いできることはありますか?
    ====================トークン使用量====================
    
    CompletionUsage(completion_tokens=221, prompt_tokens=10, total_tokens=231, completion_tokens_details=CompletionTokensDetails(accepted_prediction_tokens=None, audio_tokens=None, reasoning_tokens=172, rejected_prediction_tokens=None), prompt_tokens_details=PromptTokensDetails(audio_tokens=None, cached_tokens=0))

    Node.js

    サンプルコード

    import OpenAI from "openai";
    import process from 'process';
    
    // OpenAI クライアントを初期化します。
    const openai = new OpenAI({
        // 環境変数が設定されていない場合は、値を自分の Model Studio API キーに置き換えてください: apiKey: "sk-xxx"
        apiKey: process.env.DASHSCOPE_API_KEY, 
        // 設定はリージョンによって異なります。実際のリージョンに基づいてこれを修正してください。
        baseURL: 'https://dashscope-intl.aliyuncs.com/compatible-mode/v1'
    });
    
    let reasoningContent = ''; // 完全な推論プロセス
    let answerContent = ''; // 完全な応答
    let isAnswering = false; // 応答フェーズが開始されたかどうかを示します
    
    async function main() {
        try {
            const messages = [{ role: 'user', content: 'Who are you?' }];
            
            const stream = await openai.chat.completions.create({
                model: 'qwen-plus',
                messages,
                // Node.js SDK では、enable_thinking のような標準外のパラメーターはトップレベルのプロパティとして渡され、extra_body には不要です。
                enable_thinking: true,
                stream: true,
                stream_options: {
                    include_usage: true
                },
            });
    
            console.log('\n' + '='.repeat(20) + 'Reasoning process' + '='.repeat(20) + '\n');
    
            for await (const chunk of stream) {
                if (!chunk.choices?.length) {
                    console.log('\n' + '='.repeat(20) + 'Token usage' + '='.repeat(20) + '\n');
                    console.log(chunk.usage);
                    continue;
                }
    
                const delta = chunk.choices[0].delta;
                
                // 推論コンテンツのみを収集します。
                if (delta.reasoning_content !== undefined && delta.reasoning_content !== null) {
                    if (!isAnswering) {
                        process.stdout.write(delta.reasoning_content);
                    }
                    reasoningContent += delta.reasoning_content;
                }
    
                // コンテンツを受信した場合、応答を開始します。
                if (delta.content !== undefined && delta.content) {
                    if (!isAnswering) {
                        console.log('\n' + '='.repeat(20) + 'Full response' + '='.repeat(20) + '\n');
                        isAnswering = true;
                    }
                    process.stdout.write(delta.content);
                    answerContent += delta.content;
                }
            }
        } catch (error) {
            console.error('Error:', error);
        }
    }
    
    main();

    応答

    ====================推論プロセス====================
    
    ユーザーが「Who are you?」と尋ねています。彼らが何を知りたいのかを判断する必要があります。初めて私とやり取りしているか、私の ID を確認したいのかもしれません。Qwen として自己紹介し、英語名も Qwen であることを述べます。次に、Alibaba Group の通義実験室で独自に開発された大規模言語モデルであることを明記します。その後、質問への回答、テキスト作成、コーディング、意見表明などの機能を列挙して、ユーザーに私の目的を理解してもらいます。国際的なユーザーにとって有用な多言語サポートにも言及します。最後に、フレンドリーでオープンな態度で質問を促します。簡単で理解しやすい言葉を使い、過度な専門用語を避けます。ユーザーは助けを必要としているか、ただ興味を持っている可能性があるため、歓迎的でインタラクションを促す応答にします。ユーザーに深いニーズ(能力テストや特定の助けを求めるなど)がある可能性も考慮しますが、最初の応答では基本的な情報とガイダンスに焦点を当てます。会話調のトーンを保ち、効果的なコミュニケーションのためにシンプルな文を使用します。
    ====================完全な応答====================
    
    こんにちは!私は Qwen です。Alibaba Group の通義実験室で独自に開発された大規模言語モデルです。質問への回答、物語・公式文書・メール・スクリプトなどのテキスト作成、論理的推論、コード作成、意見表明、ゲームプレイなどをお手伝いできます。中国語、英語、ドイツ語、フランス語、スペイン語をはじめとする多言語をサポートしています。
    
    ご質問やお手伝いが必要な場合は、お気軽にお知らせください!
    ====================トークン使用量====================
    
    {
      prompt_tokens: 10,
      completion_tokens: 288,
      total_tokens: 298,
      completion_tokens_details: { reasoning_tokens: 188 },
      prompt_tokens_details: { cached_tokens: 0 }
    }

    HTTP

    サンプルコード

    curl

    # ======= 重要 =======
    # API キーはリージョンによって異なります。API キーの取得方法:https://www.alibabacloud.com/en/model-studio/get-api-key
    # base_url はリージョンによって異なります。詳細については、https://www.alibabacloud.com/help/en/model-studio/regions/ をご参照ください。
    # === 実行前にこのコメントを削除 ===
    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": "qwen-plus",
        "messages": [
            {
                "role": "user", 
                "content": "Who are you?"
            }
        ],
        "stream": true,
        "stream_options": {
            "include_usage": true
        },
        "enable_thinking": true
    }'

    DashScope

    Qwen3.5 シリーズの DashScope API はマルチモーダルインターフェイスを使用します。以下の例は url error を返します。正しい使用方法については、「思考モードの有効化または無効化」をご参照ください。

    Python

    サンプルコード

    import os
    from dashscope import Generation
    import dashscope
    
    # 構成はリージョンによって異なります。必要に応じて変更してください。
    dashscope.base_http_api_url = "https://dashscope-intl.aliyuncs.com/api/v1/"
    
    # リクエストパラメーターを初期化。
    messages = [{"role": "user", "content": "Who are you?"}]
    
    completion = Generation.call(
        # 環境変数を設定していない場合、これを Model Studio API キーに置き換えます:api_key="sk-xxx"
        # API キーはリージョン固有です。API キーの取得方法:https://www.alibabacloud.com/help/en/model-studio/regions
        api_key=os.getenv("DASHSCOPE_API_KEY"),
        model="qwen-plus",
        messages=messages,
        result_format="message",  # 結果フォーマットを message に設定。
        enable_thinking=True,     # 思考プロセスを有効化。
        stream=True,              # ストリーミング出力を有効化。
        incremental_output=True,  # 増分出力を有効化。
    )
    
    reasoning_content = ""  # 完全な思考プロセス
    answer_content = ""     # 完全な応答
    is_answering = False    # モデルが応答フェーズにあるかどうかを示す。
    
    print("\n" + "=" * 20 + "思考プロセス" + "=" * 20 + "\n")
    
    for chunk in completion:
        message = chunk.output.choices[0].message
        
        # 思考コンテンツのみを収集。
        if message.reasoning_content:
            if not is_answering:
                print(message.reasoning_content, end="", flush=True)
            reasoning_content += message.reasoning_content
    
        # コンテンツを受信したら、応答の構築を開始。
        if message.content:
            if not is_answering:
                print("\n" + "=" * 20 + "完全な応答" + "=" * 20 + "\n")
                is_answering = True
            print(message.content, end="", flush=True)
            answer_content += message.content
    
    print("\n" + "=" * 20 + "トークン使用量" + "=" * 20 + "\n")
    print(chunk.usage)
    # ループ後、reasoning_content および answer_content 変数には完全なコンテンツが含まれます。
    # 必要に応じてここで後続処理を実行できます。
    # print(f"\n\n完全な思考プロセス:\n{reasoning_content}")
    # print(f"\n完全な応答:\n{answer_content}")
    

    応答

    ====================思考プロセス====================
    
    わかりました。ユーザーが「Who are you?」と尋ねています。彼らが何を知りたいのかを把握する必要があります。私に慣れていないか、私の ID を確認したいのかもしれません。まず、私が通義実験室の Qwen であることを紹介し、次に質問への回答、テキスト作成、コーディングなどの機能を説明して、ユーザーが何ができるかを理解してもらいます。国際的なユーザーのために多言語サポートにも言及します。最後に、フレンドリーな態度で追加の質問を促し、インタラクションを奨励します。簡単な言葉を使い、専門用語を避けます。ユーザーには他のニーズ(能力テストや助けを求めるなど)があるかもしれませんが、最初の応答では具体的な例(物語、公式文書、メールの作成など)を提供すると役立ちます。また、自然な流れの方が箇条書きよりも良いかもしれませんが、構造を整える必要があります。私は個人的な意識を持たない AI アシスタントであり、回答はトレーニングデータに基づいていることを明確にして、誤解を防ぐ必要があります。マルチモーダル機能や最近のアップデートなどの重要な詳細を見逃していないか確認しますが、最初の応答ではあまり詳細に踏み込まない方が良いでしょう。要するに、応答は包括的だが簡潔で、フレンドリーかつ役立つものにし、ユーザーが理解され、サポートされていると感じるようにします。
    ====================完全な応答====================
    
    私は Alibaba Group の通義実験室で開発された大規模言語モデル Qwen です。以下のことができます。
    
    1. **質問への回答**: 学術的、一般的知識、または特定分野の質問に回答しようとします。
    2. **テキスト作成**: 物語、公式文書、メール、スクリプトなどの作成を支援します。
    3. **論理的推論**: 論理的推論と問題解決を支援します。
    4. **プログラミング**: さまざまなプログラミング言語のコードを理解および生成できます。
    5. **多言語サポート**: 中国語、英語、ドイツ語、フランス語、スペイン語をはじめとする多言語をサポートしています。
    
    ご質問やお手伝いが必要な場合は、お気軽にお知らせください!
    ====================トークン使用量====================
    
    {"input_tokens": 11, "output_tokens": 405, "total_tokens": 416, "output_tokens_details": {"reasoning_tokens": 256}, "prompt_tokens_details": {"cached_tokens": 0}}

    Java

    サンプルコード

    // DashScope SDK v2.19.4 以降が必要です。
    import com.alibaba.dashscope.aigc.generation.Generation;
    import com.alibaba.dashscope.aigc.generation.GenerationParam;
    import com.alibaba.dashscope.aigc.generation.GenerationResult;
    import com.alibaba.dashscope.common.Message;
    import com.alibaba.dashscope.common.Role;
    import com.alibaba.dashscope.exception.ApiException;
    import com.alibaba.dashscope.exception.InputRequiredException;
    import com.alibaba.dashscope.exception.NoApiKeyException;
    import com.alibaba.dashscope.utils.Constants;
    import io.reactivex.Flowable;
    import java.lang.System;
    import java.util.Arrays;
    import org.slf4j.Logger;
    import org.slf4j.LoggerFactory;
    
    public class Main {
        private static final Logger logger = LoggerFactory.getLogger(Main.class);
        private static StringBuilder reasoningContent = new StringBuilder();
        private static StringBuilder finalContent = new StringBuilder();
        private static boolean isFirstPrint = true;
    
        private static void handleGenerationResult(GenerationResult message) {
            String reasoning = message.getOutput().getChoices().get(0).getMessage().getReasoningContent();
            String content = message.getOutput().getChoices().get(0).getMessage().getContent();
    
            if (!reasoning.isEmpty()) {
                reasoningContent.append(reasoning);
                if (isFirstPrint) {
                    System.out.println("====================思考プロセス====================");
                    isFirstPrint = false;
                }
                System.out.print(reasoning);
            }
    
            if (!content.isEmpty()) {
                finalContent.append(content);
                if (!isFirstPrint) {
                    System.out.println("\n====================完全な応答====================");
                    isFirstPrint = true;
                }
                System.out.print(content);
            }
        }
        private static GenerationParam buildGenerationParam(Message userMsg) {
            return GenerationParam.builder()
                    // 環境変数を設定していない場合、次の行を Model Studio API キーに置き換えます:.apiKey("sk-xxx")
                    .apiKey(System.getenv("DASHSCOPE_API_KEY"))
                    .model("qwen-plus")
                    .enableThinking(true)
                    .incrementalOutput(true)
                    .resultFormat("message")
                    .messages(Arrays.asList(userMsg))
                    .build();
        }
        public static void streamCallWithMessage(Generation gen, Message userMsg)
                throws NoApiKeyException, ApiException, InputRequiredException {
            GenerationParam param = buildGenerationParam(userMsg);
            Flowable<GenerationResult> result = gen.streamCall(param);
            result.blockingForEach(message -> handleGenerationResult(message));
        }
    
        public static void main(String[] args) {
            try {
                // base_url はリージョンによって異なります。
                Generation gen = new Generation("http", "https://dashscope-intl.aliyuncs.com/api/v1");
                Message userMsg = Message.builder().role(Role.USER.getValue()).content("Who are you?").build();
                streamCallWithMessage(gen, userMsg);
    //             最終結果を出力。
    //            if (reasoningContent.length() > 0) {
    //                System.out.println("\n====================完全な応答====================");
    //                System.out.println(finalContent.toString());
    //            }
            } catch (ApiException | NoApiKeyException | InputRequiredException e) {
                logger.error("例外が発生しました: {}", e.getMessage());
            }
            System.exit(0);
        }
    }

    応答

    ====================思考プロセス====================
    わかりました。ユーザーが「Who are you?」と尋ねています。彼らが私の ID を知りたいのか、ただ私の応答をテストしているのかを把握する必要があります。まず、私が Alibaba Group の大規模言語モデル Qwen であることを明確に述べます。次に、質問への回答、テキスト作成、コーディングなどの機能を簡単に紹介して、ユーザーが何ができるかを理解してもらいます。国際的なユーザーが異なる言語でコミュニケーションできることを知らせるため、多言語サポートにも言及します。最後に、フレンドリーな態度で質問を促し、快適に感じてもらい、さらなるインタラクションを促します。答えは長すぎず、包括的であるべきです。ユーザーは技術的な詳細やユースケースについてのフォローアップ質問があるかもしれませんが、最初の答えはシンプルで明確であるべきです。すべてのユーザーが理解できるように、専門用語を使わないようにします。多言語サポートや機能の具体的な例などの重要な情報が不足していないか確認します。これでユーザーのニーズをカバーできるはずです。
    ====================完全な応答====================
    私は Alibaba Group の大規模言語モデル Qwen です。質問への回答、テキスト(物語、公式文書、メール、スクリプトなど)の作成、論理的推論、コード作成、意見表明、ゲームプレイなどができます。中国語、英語、ドイツ語、フランス語、スペイン語をはじめとする多言語でのコミュニケーションもサポートしています。ご質問やお手伝いが必要な場合は、お気軽にお知らせください!

    HTTP

    サンプルコード

    curl

    # ======= 重要 =======
    # API キーはリージョン固有です。API キーの取得方法:https://www.alibabacloud.com/help/en/model-studio/get-api-key
    # base_url はリージョンによって異なります。必要に応じて変更してください。
    # === 実行前にこのコメントを削除 ===
    curl -X POST "https://dashscope-intl.aliyuncs.com/api/v1/services/aigc/text-generation/generation" \
    -H "Authorization: Bearer $DASHSCOPE_API_KEY" \
    -H "Content-Type: application/json" \
    -H "X-DashScope-SSE: enable" \
    -d '{
        "model": "qwen-plus",
        "input":{
            "messages":[      
                {
                    "role": "user",
                    "content": "Who are you?"
                }
            ]
        },
        "parameters":{
            "enable_thinking": true,
            "incremental_output": true,
            "result_format": "message"
        }
    }'

    応答

    id:1
    event:result
    :HTTP_STATUS/200
    data:{"output":{"choices":[{"message":{"content":"","reasoning_content":"Hmm","role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":14,"input_tokens":11,"output_tokens":3},"request_id":"25d58c29-c47b-9e8d-a0f1-d6c309ec58b1"}
    
    id:2
    event:result
    :HTTP_STATUS/200
    data:{"output":{"choices":[{"message":{"content":"","reasoning_content":",","role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":15,"input_tokens":11,"output_tokens":4},"request_id":"25d58c29-c47b-9e8d-a0f1-d6c309ec58b1"}
    
    id:3
    event:result
    :HTTP_STATUS/200
    data:{"output":{"choices":[{"message":{"content":"","reasoning_content":"user","role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":16,"input_tokens":11,"output_tokens":5},"request_id":"25d58c29-c47b-9e8d-a0f1-d6c309ec58b1"}
    
    id:4
    event:result
    :HTTP_STATUS/200
    data:{"output":{"choices":[{"message":{"content":"","reasoning_content":" asks","role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":17,"input_tokens":11,"output_tokens":6},"request_id":"25d58c29-c47b-9e8d-a0f1-d6c309ec58b1"}
    
    id:5
    event:result
    :HTTP_STATUS/200
    data:{"output":{"choices":[{"message":{"content":"","reasoning_content":" \"","role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":18,"input_tokens":11,"output_tokens":7},"request_id":"25d58c29-c47b-9e8d-a0f1-d6c309ec58b1"}
    ......
    
    id:358
    event:result
    :HTTP_STATUS/200
    data:{"output":{"choices":[{"message":{"content":"help","reasoning_content":"","role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":373,"input_tokens":11,"output_tokens":362},"request_id":"25d58c29-c47b-9e8d-a0f1-d6c309ec58b1"}
    
    id:359
    event:result
    :HTTP_STATUS/200
    data:{"output":{"choices":[{"message":{"content":",","reasoning_content":"","role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":374,"input_tokens":11,"output_tokens":363},"request_id":"25d58c29-c47b-9e8d-a0f1-d6c309ec58b1"}
    
    id:360
    event:result
    :HTTP_STATUS/200
    data:{"output":{"choices":[{"message":{"content":" feel free","reasoning_content":"","role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":375,"input_tokens":11,"output_tokens":364},"request_id":"25d58c29-c47b-9e8d-a0f1-d6c309ec58b1"}
    
    id:361
    event:result
    :HTTP_STATUS/200
    data:{"output":{"choices":[{"message":{"content":" to","reasoning_content":"","role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":376,"input_tokens":11,"output_tokens":365},"request_id":"25d58c29-c47b-9e8d-a0f1-d6c309ec58b1"}
    
    id:362
    event:result
    :HTTP_STATUS/200
    data:{"output":{"choices":[{"message":{"content":" let me know","reasoning_content":"","role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":377,"input_tokens":11,"output_tokens":366},"request_id":"25d58c29-c47b-9e8d-a0f1-d6c309ec58b1"}
    
    id:363
    event:result
    :HTTP_STATUS/200
    data:{"output":{"choices":[{"message":{"content":"!","reasoning_content":"","role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":378,"input_tokens":11,"output_tokens":367},"request_id":"25d58c29-c47b-9e8d-a0f1-d6c309ec58b1"}
    
    id:364
    event:result
    :HTTP_STATUS/200
    data:{"output":{"choices":[{"message":{"content":"","reasoning_content":"","role":"assistant"},"finish_reason":"stop"}]},"usage":{"total_tokens":378,"input_tokens":11,"output_tokens":367},"request_id":"25d58c29-c47b-9e8d-a0f1-d6c309ec58b1"}

    さらに、Qwen3 オープンソースハイブリッド思考モデルおよび qwen-plus-2025-04-28 と qwen-turbo-2025-04-28 モデルでは、プロンプトで思考モードを制御できます。enable_thinking が true に設定されている場合、プロンプトに /no_think を追加して、そのリクエストの思考モードを無効にできます。マルチターン対話で再び有効にするには、最新のプロンプトに /think を追加します。モデルは、最新の /think または /no_think コマンドに従います。

    思考長の制限

    ディープシンキングモデルは長い思考プロセスを生成する可能性があり、これにより遅延とトークン消費が増加します。thinking_budget パラメーターを使用して、思考に使用されるトークン数を制限できます。この制限を超えると、モデルはすぐに応答を生成します。

    thinking_budget のデフォルト値は、モデルの最大 Chain-of-Thought 長です。コンソールで確認してください。
    重要

    thinking_budget パラメーターは、Qwen3(思考モード時)および Kimi モデルでサポートされています。

    OpenAI 互換

    Python

    サンプルコード

    from openai import OpenAI
    import os
    
    # OpenAI クライアントを初期化。
    client = OpenAI(
        # 環境変数が設定されていない場合、「sk-xxx」を Model Studio API キーに置き換えます。
        # API キーはリージョン固有です。API キーの取得方法:https://www.alibabacloud.com/help/en/model-studio/get-api-key。
        api_key=os.getenv("DASHSCOPE_API_KEY"),
        # 構成はリージョンによって異なります。base_url をご利用のリージョンに合わせて変更してください。
        base_url="https://dashscope-intl.aliyuncs.com/compatible-mode/v1",
    )
    
    messages = [{"role": "user", "content": "Who are you"}]
    
    completion = client.chat.completions.create(
        model="qwen-plus",
        messages=messages,
        # enable_thinking パラメーターで思考プロセスを有効化し、thinking_budget でそのトークン制限を設定します。
        extra_body={
            "enable_thinking": True,
            "thinking_budget": 50
            },
        stream=True,
        stream_options={
            "include_usage": True
        },
    )
    
    reasoning_content = ""  # 完全な思考プロセス
    answer_content = ""  # 完全な応答
    is_answering = False  # 応答フェーズが開始されたかどうかを追跡
    print("\n" + "=" * 20 + "思考プロセス" + "=" * 20 + "\n")
    
    for chunk in completion:
        if not chunk.choices:
            print("\n使用量:")
            print(chunk.usage)
            continue
    
        delta = chunk.choices[0].delta
    
        # 思考コンテンツのみを収集。
        if hasattr(delta, "reasoning_content") and delta.reasoning_content is not None:
            if not is_answering:
                print(delta.reasoning_content, end="", flush=True)
            reasoning_content += delta.reasoning_content
    
        # コンテンツを受信したら、応答フェーズが始まります。
        if hasattr(delta, "content") and delta.content:
            if not is_answering:
                print("\n" + "=" * 20 + "完全な応答" + "=" * 20 + "\n")
                is_answering = True
            print(delta.content, end="", flush=True)
            answer_content += delta.content

    応答

    ====================思考プロセス====================
    
    わかりました。ユーザーが「Who are you?」と尋ねています。明確でフレンドリーな応答を提供する必要があります。まず、私が Alibaba Group の通義実験室で開発された Qwen であることを述べます。次に、主な機能(質問への回答など)を説明します。
    ====================完全な応答====================
    
    私は Alibaba Group の通義実験室で開発された大規模言語モデル Qwen です。質問への回答、テキスト作成、論理的推論、コード作成ができます。

    Node.js

    サンプルコード

    import OpenAI from "openai";
    import process from 'process';
    
    // OpenAI クライアントを初期化します。
    const openai = new OpenAI({
        apiKey: process.env.DASHSCOPE_API_KEY, // 環境変数から読み取ります。
        // 設定はリージョンによって異なります。リージョンに応じて baseURL を変更してください。
        baseURL: 'https://dashscope-intl.aliyuncs.com/compatible-mode/v1'
    });
    
    let reasoningContent = '';
    let answerContent = '';
    let isAnswering = false;
    
    
    async function main() {
        try {
            const messages = [{ role: 'user', content: 'Who are you' }];
            const stream = await openai.chat.completions.create({
                model: 'qwen-plus',
                messages,
                stream: true,
                // enable_thinking パラメーターは思考プロセスを有効にします。thinking_budget はそのトークン制限を設定します。
                enable_thinking: true,
                thinking_budget: 50
            });
            console.log('\n' + '='.repeat(20) + 'Thinking process' + '='.repeat(20) + '\n');
    
            for await (const chunk of stream) {
                if (!chunk.choices?.length) {
                    console.log('\nUsage:');
                    console.log(chunk.usage);
                    continue;
                }
    
                const delta = chunk.choices[0].delta;
                
                // 思考コンテンツのみを収集します。
                if (delta.reasoning_content !== undefined && delta.reasoning_content !== null) {
                    if (!isAnswering) {
                        process.stdout.write(delta.reasoning_content);
                    }
                    reasoningContent += delta.reasoning_content;
                }
    
                // コンテンツを受信すると、応答フェーズが始まります。
                if (delta.content !== undefined && delta.content) {
                    if (!isAnswering) {
                        console.log('\n' + '='.repeat(20) + 'Complete response' + '='.repeat(20) + '\n');
                        isAnswering = true;
                    }
                    process.stdout.write(delta.content);
                    answerContent += delta.content;
                }
            }
        } catch (error) {
            console.error('Error:', error);
        }
    }
    
    main();

    応答

    ====================思考プロセス====================
    
    わかりました。ユーザーが「Who are you?」と尋ねています。明確で正確な応答を提供する必要があります。まず、私が Alibaba Group の通義実験室で開発された Qwen であることを述べます。次に、主な機能(質問への回答など)を説明します。
    ====================完全な応答====================
    
    私は Alibaba Group の通義実験室で開発された大規模言語モデル Qwen です。質問への回答、テキスト作成、論理的推論、コード作成ができます。

    HTTP

    サンプルコード

    curl

    # ======= 重要 =======
    # 以下はシンガポールリージョンのベース URL です。中国(北京)リージョンのモデルの場合は、URL を https://dashscope.aliyuncs.com/compatible-mode/v1/chat/completions に置き換えてください。
    # 米国(バージニア)リージョンのモデルの場合は、URL を https://dashscope-us.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": "qwen-plus",
        "messages": [
            {
                "role": "user", 
                "content": "Who are you"
            }
        ],
        "stream": true,
        "stream_options": {
            "include_usage": true
        },
        "enable_thinking": true,
        "thinking_budget": 50
    }'

    応答

    data: {"choices":[{"delta":{"content":null,"role":"assistant","reasoning_content":""},"index":0,"logprobs":null,"finish_reason":null}],"object":"chat.completion.chunk","usage":null,"created":1745485391,"system_fingerprint":null,"model":"qwen-plus","id":"chatcmpl-e2edaf2c-8aaf-9e54-90e2-b21dd5045503"}
    
    .....
    
    data: {"choices":[{"finish_reason":"stop","delta":{"content":"","reasoning_content":null},"index":0,"logprobs":null}],"object":"chat.completion.chunk","usage":null,"created":1745485391,"system_fingerprint":null,"model":"qwen-plus","id":"chatcmpl-e2edaf2c-8aaf-9e54-90e2-b21dd5045503"}
    
    data: {"choices":[],"object":"chat.completion.chunk","usage":{"prompt_tokens":10,"completion_tokens":360,"total_tokens":370},"created":1745485391,"system_fingerprint":null,"model":"qwen-plus","id":"chatcmpl-e2edaf2c-8aaf-9e54-90e2-b21dd5045503"}
    
    data: [DONE]

    DashScope

    Qwen3.5 シリーズの DashScope API はマルチモーダルインターフェイスを使用します。以下の例は url error を返します。正しい使用方法については、「思考モードの有効化または無効化」をご参照ください。

    Python

    サンプルコード

    import os
    from dashscope import Generation
    import dashscope
    
    # base_url はリージョンによって異なります。URL をご利用のリージョンに合わせて変更してください。
    dashscope.base_http_api_url = "https://dashscope-intl.aliyuncs.com/api/v1/"
    
    messages = [{"role": "user", "content": "Who are you?"}]
    
    completion = Generation.call(
        # 環境変数が設定されていない場合、次の行を Model Studio API キーに置き換えます:api_key = "sk-xxx"。
        api_key=os.getenv("DASHSCOPE_API_KEY"),
        model="qwen-plus",
        messages=messages,
        result_format="message",
        enable_thinking=True,
        # 思考プロセスのトークン制限を設定。
        thinking_budget=50,
        stream=True,
        incremental_output=True,
    )
    
    # 完全な思考プロセスを格納。
    reasoning_content = ""
    # 完全な応答を格納。
    answer_content = ""
    # 応答フェーズが開始されたかどうかを追跡。
    is_answering = False
    
    print("=" * 20 + "思考プロセス" + "=" * 20)
    
    for chunk in completion:
        # 思考コンテンツと応答コンテンツが両方空のチャンクは無視。
        if (
            chunk.output.choices[0].message.content == ""
            and chunk.output.choices[0].message.reasoning_content == ""
        ):
            pass
        else:
            # 現在のチャンクが思考コンテンツを含む場合。
            if (
                chunk.output.choices[0].message.reasoning_content != ""
                and chunk.output.choices[0].message.content == ""
            ):
                print(chunk.output.choices[0].message.reasoning_content, end="", flush=True)
                reasoning_content += chunk.output.choices[0].message.reasoning_content
            # 現在のチャンクが応答コンテンツを含む場合。
            elif chunk.output.choices[0].message.content != "":
                if not is_answering:
                    print("\n" + "=" * 20 + "完全な応答" + "=" * 20)
                    is_answering = True
                print(chunk.output.choices[0].message.content, end="", flush=True)
                answer_content += chunk.output.choices[0].message.content
    
    # 完全な思考プロセスと応答を出力するには、以下のコードのコメントを解除して実行してください。
    # print("=" * 20 + "完全な思考プロセス" + "=" * 20 + "\n")
    # print(f"{reasoning_content}")
    # print("=" * 20 + "完全な応答" + "=" * 20 + "\n")
    # print(f"{answer_content}")
    

    応答

    ====================思考プロセス====================
    わかりました。ユーザーが「Who are you?」と尋ねています。明確でフレンドリーな応答を提供する必要があります。まず、私が Alibaba Group の通義実験室で開発された Qwen であることを紹介します。次に、主な機能(質問への回答など)を説明します。
    ====================完全な応答====================
    私は Alibaba Group の通義実験室で開発された大規模言語モデル Qwen です。質問への回答、テキスト作成、論理的推論、コード作成ができます。

    Java

    サンプルコード

    // DashScope SDK のバージョンは 2.19.4 以降である必要があります。
    import java.util.Arrays;
    import org.slf4j.Logger;
    import org.slf4j.LoggerFactory;
    import com.alibaba.dashscope.aigc.generation.Generation;
    import com.alibaba.dashscope.aigc.generation.GenerationParam;
    import com.alibaba.dashscope.aigc.generation.GenerationResult;
    import com.alibaba.dashscope.common.Message;
    import com.alibaba.dashscope.common.Role;
    import com.alibaba.dashscope.exception.ApiException;
    import com.alibaba.dashscope.exception.InputRequiredException;
    import com.alibaba.dashscope.exception.NoApiKeyException;
    import io.reactivex.Flowable;
    import java.lang.System;
    import com.alibaba.dashscope.utils.Constants;
    
    public class Main {
        static {
            // ベース HTTP API URL はリージョンによって異なります。URL をご利用のリージョンに合わせて変更してください。
            Constants.baseHttpApiUrl="https://dashscope-intl.aliyuncs.com/api/v1";
        }
        private static final Logger logger = LoggerFactory.getLogger(Main.class);
        private static StringBuilder reasoningContent = new StringBuilder();
        private static StringBuilder finalContent = new StringBuilder();
        private static boolean isFirstPrint = true;
    
        private static void handleGenerationResult(GenerationResult message) {
            String reasoning = message.getOutput().getChoices().get(0).getMessage().getReasoningContent();
            String content = message.getOutput().getChoices().get(0).getMessage().getContent();
    
            if (!reasoning.isEmpty()) {
                reasoningContent.append(reasoning);
                if (isFirstPrint) {
                    System.out.println("====================思考プロセス====================");
                    isFirstPrint = false;
                }
                System.out.print(reasoning);
            }
    
            if (!content.isEmpty()) {
                finalContent.append(content);
                if (!isFirstPrint) {
                    System.out.println("\n====================完全な応答====================");
                    isFirstPrint = true;
                }
                System.out.print(content);
            }
        }
        private static GenerationParam buildGenerationParam(Message userMsg) {
            return GenerationParam.builder()
                    // 環境変数が設定されていない場合、次の行を Model Studio API キーに置き換えます:.apiKey("sk-xxx")
                    .apiKey(System.getenv("DASHSCOPE_API_KEY"))
                    .model("qwen-plus")
                    .enableThinking(true)
                    .thinkingBudget(50)
                    .incrementalOutput(true)
                    .resultFormat("message")
                    .messages(Arrays.asList(userMsg))
                    .build();
        }
        public static void streamCallWithMessage(Generation gen, Message userMsg)
                throws NoApiKeyException, ApiException, InputRequiredException {
            GenerationParam param = buildGenerationParam(userMsg);
            Flowable<GenerationResult> result = gen.streamCall(param);
            result.blockingForEach(message -> handleGenerationResult(message));
        }
    
        public static void main(String[] args) {
            try {
                Generation gen = new Generation();
                Message userMsg = Message.builder().role(Role.USER.getValue()).content("Who are you?").build();
                streamCallWithMessage(gen, userMsg);
    //             最終結果を出力。
    //            if (reasoningContent.length() > 0) {
    //                System.out.println("\n====================完全な応答====================");
    //                System.out.println(finalContent.toString());
    //            }
            } catch (ApiException | NoApiKeyException | InputRequiredException e) {
                logger.error("例外が発生しました: {}", e.getMessage());
            }
            System.exit(0);
        }
    }

    応答

    ====================思考プロセス====================
    わかりました。ユーザーが「Who are you?」と尋ねています。明確でフレンドリーな応答を提供する必要があります。まず、私が Alibaba Group の通義実験室で開発された Qwen であることを紹介します。次に、主な機能(質問への回答など)を説明します。
    ====================完全な応答====================
    私は Alibaba Group の通義実験室で開発された大規模言語モデル Qwen です。質問への回答、テキスト作成、論理的推論、コード作成ができます。

    HTTP

    サンプルコード

    curl

    # ======= 重要 =======
    # API キーはリージョン固有です。API キーの取得方法:https://www.alibabacloud.com/help/zh/model-studio/get-api-key。
    # エンドポイント URL はリージョンによって異なります。URL をご利用のリージョンに合わせて変更してください。
    # === 実行前にこのコメントを削除 ===
    curl -X POST "https://dashscope-intl.aliyuncs.com/api/v1/services/aigc/text-generation/generation" \
    -H "Authorization: Bearer $DASHSCOPE_API_KEY" \
    -H "Content-Type: application/json" \
    -H "X-DashScope-SSE: enable" \
    -d '{
        "model": "qwen-plus",
        "input":{
            "messages":[      
                {
                    "role": "user",
                    "content": "Who are you?"
                }
            ]
        },
        "parameters":{
            "enable_thinking": true,
            "thinking_budget": 50,
            "incremental_output": true,
            "result_format": "message"
        }
    }'

    応答

    id:1
    event:result
    :HTTP_STATUS/200
    data:{"output":{"choices":[{"message":{"content":"","reasoning_content":"Okay","role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":14,"output_tokens":3,"input_tokens":11,"output_tokens_details":{"reasoning_tokens":1}},"request_id":"2ce91085-3602-9c32-9c8b-fe3d583a2c38"}
    
    id:2
    event:result
    :HTTP_STATUS/200
    data:{"output":{"choices":[{"message":{"content":"","reasoning_content":",","role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":15,"output_tokens":4,"input_tokens":11,"output_tokens_details":{"reasoning_tokens":2}},"request_id":"2ce91085-3602-9c32-9c8b-fe3d583a2c38"}
    
    ......
    
    id:133
    event:result
    :HTTP_STATUS/200
    data:{"output":{"choices":[{"message":{"content":"!","reasoning_content":"","role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":149,"output_tokens":138,"input_tokens":11,"output_tokens_details":{"reasoning_tokens":50}},"request_id":"2ce91085-3602-9c32-9c8b-fe3d583a2c38"}
    
    id:134
    event:result
    :HTTP_STATUS/200
    data:{"output":{"choices":[{"message":{"content":"","reasoning_content":"","role":"assistant"},"finish_reason":"stop"}]},"usage":{"total_tokens":149,"output_tokens":138,"input_tokens":11,"output_tokens_details":{"reasoning_tokens":50}},"request_id":"2ce91085-3602-9c32-9c8b-fe3d583a2c38"}

    思考プロセスの受け渡し

    マルチターン対話では、モデルは reasoning_content を messages 配列で受け取っても参照しません。後続の応答でモデルが以前の思考プロセスを参照するようにするには、preserve_thinking を true に設定します。このパラメーターを有効にすると、会話履歴のアシスタントメッセージの reasoning_content がモデルの入力に追加されます。

    重要

    preserve_thinking パラメーターは、qwen3.6-max-preview、qwen3.6-plus、qwen3.6-plus-2026-04-02、Alibaba Cloud Model Studio にデプロイされた kimi-k2.6、および Moonshot AI にデプロイされた kimi/kimi-k2.6 のみでサポートされています。

    履歴メッセージに reasoning_content が含まれていない場合でも、このパラメーターを有効にしてもエラーは発生しません。
    このパラメーターを有効にすると、会話履歴の reasoning_content が入力トークン数および課金に含まれます。

    OpenAI 互換

    説明

    preserve_thinking は標準的な OpenAI パラメーターではありません。Python SDK を使用する場合、このパラメーターを extra_body で渡します。

    Python

    サンプルコード

    from openai import OpenAI
    import os
    
    client = OpenAI(
        api_key=os.getenv("DASHSCOPE_API_KEY"),
        # 構成はリージョンによって異なります。実際のご利用リージョンに基づいて変更してください。
        base_url="https://dashscope-intl.aliyuncs.com/compatible-mode/v1",
    )
    
    # 会話の最初のターン
    messages = [
        {"role": "user", "content": "1 日あたり数千万件のメッセージを処理する E コマースシステム向けのメッセージキューを選択する必要があります。おすすめを教えてください。"}
    ]
    
    first_reasoning = ""
    first_content = ""
    is_answering = False
    
    completion = client.chat.completions.create(
        model="qwen3.6-plus",
        messages=messages,
        extra_body={"enable_thinking": True},
        stream=True,
        stream_options={"include_usage": True},
    )
    
    print("=" * 20 + "最初のターンの思考プロセス" + "=" * 20)
    
    for chunk in completion:
        if not chunk.choices:
            continue
        delta = chunk.choices[0].delta
        if hasattr(delta, "reasoning_content") and delta.reasoning_content is not None:
            first_reasoning += delta.reasoning_content
            if not is_answering:
                print(delta.reasoning_content, end="", flush=True)
        if hasattr(delta, "content") and delta.content:
            if not is_answering:
                print("\n" + "=" * 20 + "最初のターンの応答" + "=" * 20)
                is_answering = True
            print(delta.content, end="", flush=True)
            first_content += delta.content
    
    # 2 番目のターン:思考プロセスを渡し、Kafka を比較から除外した理由を尋ねる
    messages = [
        {"role": "user", "content": "1 日あたり数千万件のメッセージを処理する E コマースシステム向けのメッセージキューを選択する必要があります。おすすめを教えてください。"},
        {
            "role": "assistant",
            "content": first_content,
            "reasoning_content": first_reasoning,
        },
        {"role": "user", "content": "比較で Kafka を除外したのはなぜですか?"},
    ]
    
    reasoning_content = ""
    answer_content = ""
    is_answering = False
    
    # preserve_thinking を extra_body で渡す
    completion = client.chat.completions.create(
        model="qwen3.6-plus",
        messages=messages,
        extra_body={
            "enable_thinking": True,
            "preserve_thinking": True,
        },
        stream=True,
        stream_options={"include_usage": True},
    )
    
    print("\n" + "=" * 20 + "2 番目のターンの思考プロセス" + "=" * 20)
    
    for chunk in completion:
        if not chunk.choices:
            continue
        delta = chunk.choices[0].delta
        if hasattr(delta, "reasoning_content") and delta.reasoning_content is not None:
            if not is_answering:
                print(delta.reasoning_content, end="", flush=True)
            reasoning_content += delta.reasoning_content
        if hasattr(delta, "content") and delta.content:
            if not is_answering:
                print("\n" + "=" * 20 + "2 番目のターンの応答" + "=" * 20)
                is_answering = True
            print(delta.content, end="", flush=True)
            answer_content += delta.content

    応答

    ====================最初のターンの思考プロセス====================
    ユーザーは、1 日あたり数千万件のメッセージを処理する E コマースシステム向けのメッセージキューを必要としています。スループット、信頼性、遅延メッセージ、トランザクションサポートなどのディメンションに基づいて、主流のソリューションを比較します...
    
    RocketMQ:Alibaba の E コマースシナリオで検証済みで、トランザクションメッセージと遅延メッセージをネイティブサポートし、パーティションレベルの厳密な順序付けを提供...
    Kafka:非常に高いスループットを実現しますが、トランザクションメッセージと遅延メッセージのネイティブサポートがなく、カスタム補償メカニズムが必要...
    RabbitMQ:低遅延ですが、クラスタのスケーラビリティが限定的で、ピーク TPS は数万件...
    ====================最初のターンの応答====================
    E コマースシナリオの中核的なニーズ(トランザクションメッセージ、遅延メッセージ、順序付け、ピーク処理)を考慮すると、Apache RocketMQ をおすすめします。チームがすでに Kafka エコシステムを導入している場合や、強力なリアルタイム分析が必要な場合は、Kafka も有効な選択肢です。
    ====================2 番目のターンの思考プロセス====================
    ユーザーは、Kafka を除外した理由を尋ねています。過去の思考プロセスを確認すると、Kafka を除外しておらず、4 つ星評価を付けています。以前の詳細な比較を参照して説明します...
    
    前回のターンで、RocketMQ と Kafka のトランザクションメッセージ、遅延メッセージ、順序付けに関する違いを比較しました。Kafka の主な欠点は、E コマース固有のセマンティクスを補うために追加のアーキテクチャ設計が必要になることです...
    ====================2 番目のターンの応答====================
    Kafka を除外していません。Kafka はスループットとエコシステムに優れています。RocketMQ がわずかに高い評価を受けた理由は、E コマースの中核的なワークフローによりすぐれた「すぐに使える」マッチングを提供するためです。RocketMQ はトランザクションメッセージと遅延メッセージをネイティブサポートしていますが、Kafka はアウトボックスパターンなどのアーキテクチャパターンを通じて自己実装する必要があります。チームがすでに Kafka エコシステムを導入している場合、数千万件のメッセージを処理するシナリオを十分にこなせます。

    Node.js

    サンプルコード

    import OpenAI from "openai";
    import process from 'process';
    
    const openai = new OpenAI({
        apiKey: process.env.DASHSCOPE_API_KEY,
        // 構成はリージョンによって異なります。実際のご利用リージョンに基づいて変更してください。
        baseURL: 'https://dashscope-intl.aliyuncs.com/compatible-mode/v1'
    });
    
    async function main() {
        // 会話の最初のターン
        let firstReasoning = '';
        let firstContent = '';
        let isAnswering = false;
    
        const stream1 = await openai.chat.completions.create({
            model: 'qwen3.6-plus',
            messages: [{ role: 'user', content: '1 日あたり数千万件のメッセージを処理する E コマースシステム向けのメッセージキューを選択する必要があります。おすすめを教えてください。' }],
            stream: true,
            enable_thinking: true
        });
    
        console.log('='.repeat(20) + '最初のターンの思考プロセス' + '='.repeat(20));
    
        for await (const chunk of stream1) {
            if (!chunk.choices?.length) continue;
            const delta = chunk.choices[0].delta;
            if (delta.reasoning_content !== undefined && delta.reasoning_content !== null) {
                firstReasoning += delta.reasoning_content;
                if (!isAnswering) process.stdout.write(delta.reasoning_content);
            }
            if (delta.content !== undefined && delta.content) {
                if (!isAnswering) {
                    console.log('\n' + '='.repeat(20) + '最初のターンの応答' + '='.repeat(20));
                    isAnswering = true;
                }
                process.stdout.write(delta.content);
                firstContent += delta.content;
            }
        }
    
        // 2 番目のターン:思考プロセスを渡す
        let reasoningContent = '';
        let answerContent = '';
        isAnswering = false;
    
        const stream2 = await openai.chat.completions.create({
            model: 'qwen3.6-plus',
            messages: [
                { role: 'user', content: '1 日あたり数千万件のメッセージを処理する E コマースシステム向けのメッセージキューを選択する必要があります。おすすめを教えてください。' },
                {
                    role: 'assistant',
                    content: firstContent,
                    reasoning_content: firstReasoning
                },
                { role: 'user', content: '比較で Kafka を除外したのはなぜですか?' }
            ],
            stream: true,
            enable_thinking: true,
            // preserve_thinking をトップレベルパラメーターとして渡す
            preserve_thinking: true
        });
    
        console.log('\n' + '='.repeat(20) + '2 番目のターンの思考プロセス' + '='.repeat(20));
    
        for await (const chunk of stream2) {
            if (!chunk.choices?.length) continue;
            const delta = chunk.choices[0].delta;
            if (delta.reasoning_content !== undefined && delta.reasoning_content !== null) {
                if (!isAnswering) process.stdout.write(delta.reasoning_content);
                reasoningContent += delta.reasoning_content;
            }
            if (delta.content !== undefined && delta.content) {
                if (!isAnswering) {
                    console.log('\n' + '='.repeat(20) + '2 番目のターンの応答' + '='.repeat(20));
                    isAnswering = true;
                }
                process.stdout.write(delta.content);
                answerContent += delta.content;
            }
        }
    }
    
    main();

    応答

    ====================最初のターンの思考プロセス====================
    ユーザーは、1 日あたり数千万件のメッセージを処理する E コマースシステム向けのメッセージキューを必要としています。スループット、信頼性、遅延メッセージ、トランザクションサポートなどのディメンションに基づいて、主流のソリューションを比較します...
    ====================最初のターンの応答====================
    E コマースシナリオの中核的なニーズを考慮すると、Apache RocketMQ をおすすめします。チームがすでに Kafka エコシステムを導入している場合、Kafka も有効な選択肢です。
    ====================2 番目のターンの思考プロセス====================
    ユーザーは、Kafka を除外した理由を尋ねています。過去の思考プロセスを参照すると、Kafka を除外していません...
    ====================2 番目のターンの応答====================
    Kafka を除外していません。Kafka はスループットとエコシステムに優れています。RocketMQ がわずかに高い評価を受けた理由は、E コマースの中核的なワークフローによりすぐれた「すぐに使える」マッチングを提供するためです。

    HTTP

    サンプルコード

    curl

    # base_url はリージョンによって異なります。実際のご利用リージョンに基づいて変更してください。
    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.6-plus",
        "messages": [
            {
                "role": "user",
                "content": "1 日あたり数千万件のメッセージを処理する E コマースシステム向けのメッセージキューを選択する必要があります。おすすめを教えてください。"
            },
            {
                "role": "assistant",
                "content": "E コマースシナリオの中核的なニーズを考慮すると、Apache RocketMQ をおすすめします。",
                "reasoning_content": "ユーザーは、1 日あたり数千万件のメッセージを処理する E コマースシステム向けのメッセージキューを必要としています。RocketMQ はトランザクションメッセージと遅延メッセージをネイティブサポートしており、E コマースシナリオにより適しています。Kafka は非常に高いスループットを実現しますが、カスタム補償メカニズムが必要です。"
            },
            {
                "role": "user",
                "content": "比較で Kafka を除外したのはなぜですか?"
            }
        ],
        "stream": true,
        "stream_options": {
            "include_usage": true
        },
        "enable_thinking": true,
        "preserve_thinking": true
    }'

    応答

    data: {"choices":[{"delta":{"content":null,"role":"assistant","reasoning_content":""},"index":0,"logprobs":null,"finish_reason":null}],"object":"chat.completion.chunk","usage":null,"created":1743523200,"system_fingerprint":null,"model":"qwen3.6-plus","id":"chatcmpl-example-001"}
    
    .....
    
    data: {"choices":[{"finish_reason":"stop","delta":{"content":"","reasoning_content":null},"index":0,"logprobs":null}],"object":"chat.completion.chunk","usage":null,"created":1743523200,"system_fingerprint":null,"model":"qwen3.6-plus","id":"chatcmpl-example-001"}
    
    data: {"choices":[],"object":"chat.completion.chunk","usage":{"prompt_tokens":3463,"completion_tokens":2387,"total_tokens":5850},"created":1743523200,"system_fingerprint":null,"model":"qwen3.6-plus","id":"chatcmpl-example-001"}
    
    data: [DONE]

    DashScope

    説明

    Java SDK は現在、preserve_thinking パラメーターをサポートしていません。HTTP 呼び出しを行う場合、preserve_thinking パラメーターを parameters オブジェクトに配置します。

    Python

    サンプルコード

    import os
    from dashscope import Generation
    import dashscope
    
    # base_url はリージョンによって異なります。実際のご利用リージョンに基づいて変更してください。
    dashscope.base_http_api_url = "https://dashscope-intl.aliyuncs.com/api/v1/"
    
    # 会話の最初のターン
    messages = [
        {"role": "user", "content": "1 日あたり数千万件のメッセージを処理する E コマースシステム向けのメッセージキューを選択する必要があります。おすすめを教えてください。"}
    ]
    
    first_reasoning = ""
    first_content = ""
    is_answering = False
    
    completion = Generation.call(
        # 環境変数が設定されていない場合、次の行を Model Studio API キーに置き換えます:api_key="sk-xxx"
        api_key=os.getenv("DASHSCOPE_API_KEY"),
        model="qwen3.6-plus",
        messages=messages,
        result_format="message",
        enable_thinking=True,
        stream=True,
        incremental_output=True,
    )
    
    print("=" * 20 + "最初のターンの思考プロセス" + "=" * 20)
    
    for chunk in completion:
        if (
            chunk.output.choices[0].message.content == ""
            and chunk.output.choices[0].message.reasoning_content == ""
        ):
            pass
        else:
            if (
                chunk.output.choices[0].message.reasoning_content != ""
                and chunk.output.choices[0].message.content == ""
            ):
                print(chunk.output.choices[0].message.reasoning_content, end="", flush=True)
                first_reasoning += chunk.output.choices[0].message.reasoning_content
            elif chunk.output.choices[0].message.content != "":
                if not is_answering:
                    print("\n" + "=" * 20 + "最初のターンの応答" + "=" * 20)
                    is_answering = True
                print(chunk.output.choices[0].message.content, end="", flush=True)
                first_content += chunk.output.choices[0].message.content
    
    # 2 番目のターン:思考プロセスを渡す
    messages = [
        {"role": "user", "content": "1 日あたり数千万件のメッセージを処理する E コマースシステム向けのメッセージキューを選択する必要があります。おすすめを教えてください。"},
        {
            "role": "assistant",
            "content": first_content,
            "reasoning_content": first_reasoning,
        },
        {"role": "user", "content": "比較で Kafka を除外したのはなぜですか?"},
    ]
    
    reasoning_content = ""
    answer_content = ""
    is_answering = False
    
    completion = Generation.call(
        api_key=os.getenv("DASHSCOPE_API_KEY"),
        model="qwen3.6-plus",
        messages=messages,
        result_format="message",
        enable_thinking=True,
        # 思考プロセスを渡す
        preserve_thinking=True,
        stream=True,
        incremental_output=True,
    )
    
    print("\n" + "=" * 20 + "2 番目のターンの思考プロセス" + "=" * 20)
    
    for chunk in completion:
        if (
            chunk.output.choices[0].message.content == ""
            and chunk.output.choices[0].message.reasoning_content == ""
        ):
            pass
        else:
            if (
                chunk.output.choices[0].message.reasoning_content != ""
                and chunk.output.choices[0].message.content == ""
            ):
                print(chunk.output.choices[0].message.reasoning_content, end="", flush=True)
                reasoning_content += chunk.output.choices[0].message.reasoning_content
            elif chunk.output.choices[0].message.content != "":
                if not is_answering:
                    print("\n" + "=" * 20 + "2 番目のターンの応答" + "=" * 20)
                    is_answering = True
                print(chunk.output.choices[0].message.content, end="", flush=True)
                answer_content += chunk.output.choices[0].message.content

    応答

    ====================最初のターンの思考プロセス====================
    ユーザーは、1 日あたり数千万件のメッセージを処理する E コマースシステム向けのメッセージキューを必要としています。スループット、信頼性、遅延メッセージ、トランザクションサポートなどのディメンションに基づいて、主流のソリューションを比較します...
    ====================最初のターンの応答====================
    E コマースシナリオの中核的なニーズを考慮すると、Apache RocketMQ をおすすめします。チームがすでに Kafka エコシステムを導入している場合、Kafka も有効な選択肢です。
    ====================2 番目のターンの思考プロセス====================
    ユーザーは、Kafka を除外した理由を尋ねています。過去の思考プロセスを参照すると、Kafka を除外していません...
    ====================2 番目のターンの応答====================
    Kafka を除外していません。Kafka はスループットとエコシステムに優れています。RocketMQ がわずかに高い評価を受けた理由は、E コマースの中核的なワークフローによりすぐれた「すぐに使える」マッチングを提供するためです。

    HTTP

    サンプルコード

    curl

    # base_url はリージョンによって異なります。実際のご利用リージョンに基づいて変更してください。
    curl -X POST "https://dashscope-intl.aliyuncs.com/api/v1/services/aigc/text-generation/generation" \
    -H "Authorization: Bearer $DASHSCOPE_API_KEY" \
    -H "Content-Type: application/json" \
    -H "X-DashScope-SSE: enable" \
    -d '{
        "model": "qwen3.6-plus",
        "input":{
            "messages":[
                {
                    "role": "user",
                    "content": "1 日あたり数千万件のメッセージを処理する E コマースシステム向けのメッセージキューを選択する必要があります。おすすめを教えてください。"
                },
                {
                    "role": "assistant",
                    "content": "E コマースシナリオの中核的なニーズを考慮すると、Apache RocketMQ をおすすめします。",
                    "reasoning_content": "ユーザーは、1 日あたり数千万件のメッセージを処理する E コマースシステム向けのメッセージキューを必要としています。RocketMQ はトランザクションメッセージと遅延メッセージをネイティブサポートしており、E コマースシナリオにより適しています。Kafka は非常に高いスループットを実現しますが、カスタム補償メカニズムが必要です。"
                },
                {
                    "role": "user",
                    "content": "比較で Kafka を除外したのはなぜですか?"
                }
            ]
        },
        "parameters":{
            "enable_thinking": true,
            "preserve_thinking": true,
            "incremental_output": true,
            "result_format": "message"
        }
    }'

    応答

    id:1
    event:result
    :HTTP_STATUS/200
    data:{"output":{"choices":[{"message":{"content":"","reasoning_content":"user"},"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":3466,"output_tokens":3,"input_tokens":3463,"output_tokens_details":{"reasoning_tokens":1}},"request_id":"example-request-001"}
    
    id:2
    event:result
    :HTTP_STATUS/200
    data:{"output":{"choices":[{"message":{"content":"","reasoning_content":"follow-up"},"role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":3467,"output_tokens":4,"input_tokens":3463,"output_tokens_details":{"reasoning_tokens":2}},"request_id":"example-request-001"}
    
    ......
    
    id:200
    event:result
    :HTTP_STATUS/200
    data:{"output":{"choices":[{"message":{"content":"","reasoning_content":"","role":"assistant"},"finish_reason":"stop"}]},"usage":{"total_tokens":5850,"output_tokens":2387,"input_tokens":3463,"output_tokens_details":{"reasoning_tokens":1347}},"request_id":"example-request-001"}

    その他の機能

    • マルチターン対話

    • ツール呼び出し

    • ウェブ検索

    課金

    • 思考コンテンツは、出力トークン単位で課金されます。

    • 一部のハイブリッド思考モデルでは、思考モードとノンシンキングモードで価格が異なります。

      思考モードのモデルが思考プロセスを出力できなかった場合、ノンシンキングモードの価格で課金されます。

    よくある質問

    Q: 思考モードを無効にするにはどうすればよいですか?

    思考モードを無効にできるかどうかは、モデルのタイプによって異なります。

    • ハイブリッド思考モデル(qwen-plus や deepseek-v3.2-exp など)の場合、enable_thinking を false に設定します。

    • 思考専用モデル(qwen3-235b-a22b-thinking-2507 や deepseek-r1 など)の場合、思考モードを無効にすることはできません。

    Q: 無料クォータを使い切った後、トークンを購入するにはどうすればよいですか?

    課金管理センターにアクセスして、アカウントをチャージしてください。モデルを呼び出すには、アカウントに支払い遅延があってはなりません。

    無料クォータを使い切ると、モデル呼び出しは自動的に分単位で課金されます。支出の詳細を確認するには、「請求明細」にアクセスしてください。

    Q: 入力として画像やドキュメントをアップロードできますか?

    これらのモデルはテキスト入力のみをサポートします。Qwen3-VL および QVQ モデルは画像に対するディープシンキングをサポートしており。

    Q: トークン使用量と呼び出し回数を確認するにはどうすればよいですか?

    モデルを呼び出してから 1 時間後に、「モニタリング (シンガポール または 北京)」ページにアクセスします。時間範囲やワークスペースなどのクエリ条件を設定します。次に、モデルエリアで対象のモデルを見つけ、操作列のモニターをクリックして、モデルの呼び出し統計を確認します。詳細については、「モニタリング」ドキュメントをご参照ください。

    データは 1 時間ごとに更新されます。ピーク時には、1 時間程度の遅延が発生する場合があります。

    image

    API リファレンス

    入力およびレスポンスパラメーターについては、「Qwen」をご参照ください。

    エラーコード

    呼び出しが失敗した場合は、「エラーメッセージ」をご参照ください。

    ありがとうございます。フィードバックを受け取りました。