ディープシンキングモデルは、応答を生成する前に思考することで、論理的推論や数値計算などの複雑なタスクにおける精度を向上させます。このトピックでは、Qwen や DeepSeek などのディープシンキングモデルを呼び出す方法について説明します。
このトピックでは、OpenAI 互換の Chat Completion API または DashScope API を使用してディープシンキングモデルを呼び出す方法について説明します。Responses API の使用方法については、「ディープシンキング」をご参照ください。
使用方法
Alibaba Cloud Model Studio は、混合思考モードと思考専用モードを含む、さまざまなディープシンキングモデル 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 パラメーターを設定する必要がない点を除き、混合思考モードと同じです。
思考内容は reasoning_content フィールドで返され、応答内容は content フィールドで返されます。ディープシンキングモデルは応答前に思考するため、応答時間が増加します。ほとんどのモデルはストリーミング出力のみをサポートしているため、このドキュメントの例ではストリーミング呼び出しを使用しています。
サポート対象モデル
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-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-v3.2, deepseek-v3.2-exp, deepseek-v3.1
思考専用モード: deepseek-r1, deepseek-r1-0528, deepseek-r1 蒸留モデル
GLM (北京リージョン)
混合思考モード、デフォルトで有効: glm-5, glm-4.7, glm-4.6
Kimi (北京リージョン)
思考専用モード: kimi-k2-thinking
モデル名、コンテキスト、価格、スナップショットバージョンについては、「モデルリスト」をご参照ください。同時実行レート制限については、「レート制限」をご参照ください。
クイックスタート
開始する前に、「API キーの取得」と「API キーを環境変数として設定」(このステップは非推奨となり、API キーの設定プロセスに統合されます) を行う必要があります。SDK を介して API を呼び出す場合は、「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/ja/model-studio/get-api-key をご参照ください
# 環境変数が設定されていない場合は、次の行を Model Studio API キーに置き換えます:api_key="sk-xxx"
api_key=os.getenv("DASHSCOPE_API_KEY"),
# 構成はリージョンによって異なります。実際のリージョンに基づいてこれを変更してください。
base_url="https://dashscope-intl.aliyuncs.com/compatible-mode/v1",
)
messages = [{"role": "user", "content": "あなたは誰ですか?"}]
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
応答
====================思考プロセス====================
ユーザーが「あなたは誰ですか?」と尋ねたので、正確でフレンドリーな回答を提供する必要があります。まず、自分のアイデンティティ、つまり Alibaba Group 傘下の Tongyi ラボによって開発された Qwen であることを確認する必要があります。次に、質問への回答、テキストの作成、論理的推論などの主な機能を説明する必要があります。また、ユーザーが安心できるように、フレンドリーなトーンを保ち、専門的になりすぎないようにする必要があります。回答が簡潔で明確になるように、複雑な専門用語も避けるべきです。さらに、さらなるコミュニケーションを促すために、ユーザーにさらに質問するように促すインタラクティブな要素を追加する必要があるかもしれません。最後に、中国語名「Qianwen」と英語名「Qwen」、および親会社とラボなど、重要な情報を見逃していないか確認します。回答が包括的で、ユーザーの期待に応えるものであることを確認する必要があります。
====================完全な応答====================
こんにちは!私は Qwen、Alibaba Group 傘下の Tongyi ラボによって独自に開発された超大規模言語モデルです。質問への回答、テキストの作成、論理的推論、コードの作成など、すべてユーザーに高品質の情報とサービスを提供することを目的としています。Qwen と呼んでください。何かお手伝いできることはありますか?Node.js
サンプルコード
import OpenAI from "openai";
import process from 'process';
// OpenAI クライアントを初期化します。
const openai = new OpenAI({
apiKey: process.env.DASHSCOPE_API_KEY, // 環境変数から読み取ります
// 以下はシンガポールリージョンの base_url です。バージニアリージョンのモデルを使用している場合は、base_url を https://dashscope-us.aliyuncs.com/compatible-mode/v1 に変更してください。
// 構成はリージョンによって異なります。実際のリージョンに基づいてこれを変更してください。
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: 'あなたは誰ですか?' }];
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();応答
====================思考プロセス====================
ユーザーが「あなたは誰ですか?」と尋ねたので、自分のアイデンティティについて答える必要があります。まず、私が Alibaba Cloud によって開発された超大規模言語モデルである Qwen であることを明確に述べるべきです。次に、質問への回答、テキストの作成、論理的推論などの主な機能について言及できます。また、ユーザーが異なる言語でのリクエストを処理できることを知るように、中国語や英語を含む多言語サポートを強調する必要があります。さらに、学習、仕事、日常生活の支援など、私のアプリケーションシナリオを説明する必要があるかもしれません。しかし、ユーザーの質問は非常に直接的なので、あまり詳細を提供する必要はなく、簡潔で明確に保つ方が良いでしょう。同時に、フレンドリーなトーンを確保し、ユーザーにさらなる質問を促す必要があります。バージョンや最新の更新など、重要な情報を見逃していないか確認しますが、ユーザーはおそらくそのレベルの詳細を必要としていません。最後に、回答が正確でエラーがないことを確認します。
====================完全な応答====================
私は Qwen、Alibaba Group 傘下の Tongyi ラボによって独自に開発された超大規模言語モデルです。質問への回答、テキストの作成、論理的推論、プログラミングなど、さまざまなタスクを処理でき、中国語や英語を含む複数の言語をサポートしています。ご質問やお手伝いが必要な場合は、お気軽にお知らせください!HTTP
サンプルコード
curl
# ======= 重要 =======
# 以下はシンガポールリージョンの base_url です。北京リージョンのモデルを使用している場合は、base_url を https://dashscope.aliyuncs.com/compatible-mode/v1/chat/completions に置き換えてください
# バージニアリージョンのモデルを使用している場合は、base_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": "あなたは誰ですか?"
}
],
"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
# エンドポイント URL はリージョンによって異なります。実際のリージョンに基づいてこれを更新してください。
dashscope.base_http_api_url = "https://dashscope-intl.aliyuncs.com/api/v1"
messages = [{"role": "user", "content": "あなたは誰ですか?"}]
completion = Generation.call(
# 環境変数を設定していない場合は、次の行を Alibaba Cloud 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}")
応答
====================思考プロセス====================
ユーザーが「あなたは誰ですか?」と尋ねました。この質問に答える必要があります。まず、自分のアイデンティティを明確にする必要があります:私は 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 {
// これはシンガポールリージョンのベース URL です。バージニアリージョンを使用する場合は、ベース URL を https://dashscope-us.aliyuncs.com/api/v1 に変更してください
// エンドポイント 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()
// API キーはリージョンによって異なります。API キーを取得してください:https://www.alibabacloud.com/help/ja/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("あなたは誰ですか?").build();
streamCallWithMessage(gen, userMsg);
// 最終結果を印刷します。
// if (reasoningContent.length() > 0) {
// System.out.println("\n====================完全な応答====================");
// System.out.println(finalContent.toString());
// }
} catch (ApiException | NoApiKeyException | InputRequiredException e) {
logger.error("An exception occurred: {}", e.getMessage());
}
System.exit(0);
}
}応答
====================思考プロセス====================
ユーザーが「あなたは誰ですか?」と尋ねました。定義された役割に基づいて応答する必要があります。まず、私は Alibaba Group 傘下の大規模言語モデルである Qwen です。会話のトーンを保ち、シンプルにしてください。
ユーザーは私に初めて会ったか、私のアイデンティティを確認しているのかもしれません。まず、私が誰であるかを明確に述べ、次に質問への回答、テキストの作成、コーディングなどの機能を簡単に説明します。多言語サポートについても言及し、ユーザーがさまざまな言語を扱えることを知らせます。
ガイドラインに従い、人間らしいトーンを維持します。親しみやすい表現や絵文字を使用して、親しみやすく聞こえるようにします。どのように手伝えるかを尋ねることで、さらなる対話を促します。
専門用語や長い説明は避けます。多言語サポートやコア機能など、すべてのキーポイントが含まれていることを確認します。応答が会話的で簡潔であることを確認します。
====================完全な応答====================
こんにちは!私は Alibaba Group 傘下の大規模言語モデルである Qwen です。質問への回答、テキストの作成(物語、公式文書、メール、プレイブックなど)、論理的推論、コードの作成、意見の表明、ゲームのプレイなどができます。中国語、英語、ドイツ語、フランス語、スペイン語など、多くの言語に堪能です。どのようにお手伝いできますか?HTTP
コード例
curl
# ======= 重要事項 =======
# API キーはリージョンによって異なります。API キーを取得してください:https://www.alibabacloud.com/help/ja/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": "あなたは誰ですか?"
}
]
},
"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":"Welcome","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":"at any time","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(
# 環境変数を設定していない場合は、DashScope API キーに置き換えてください:api_key="sk-xxx"
# API キーはリージョンによって異なります。API キーを取得してください:https://www.alibabacloud.com/help/ja/model-studio/get-api-key
api_key=os.getenv("DASHSCOPE_API_KEY"),
# ベース URL はリージョンによって異なります。ご利用のリージョンに合わせて更新してください。
base_url="https://dashscope-intl.aliyuncs.com/compatible-mode/v1",
)
messages = [{"role": "user", "content": "あなたは誰ですか?"}]
completion = client.chat.completions.create(
model="qwen-plus",
messages=messages,
# extra_body を使用して思考モードを有効にする
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
応答出力
====================思考プロセス====================
うーん、ユーザーが「あなたは誰ですか?」と尋ねました。彼らが何を知りたいのかを理解する必要があります。おそらく、これが私との最初の対話であるか、私のアイデンティティを確認したいのかもしれません。私は Tongyi Lab によって開発された Qwen として自己紹介すべきです。次に、質問への回答、テキストの作成、コーディング、意見の表明などの私の能力をリストアップし、海外のユーザーが他の言語も使用できることを知るように多言語サポートに言及する必要があります。最後に、フレンドリーに保ち、対話を促すためにさらなる質問を招待します。理解しやすいように、専門用語を避け、明確に保ちます。ユーザーは私に何ができるかの簡単な概要を求めている可能性が高いので、機能とユースケースに焦点を当てます。また、Alibaba Group やより深い技術的な詳細に言及するなど、重要なことを見逃していないか確認しますが、今のところ、基本的な情報で十分です。トーンがフレンドリーでプロフェッショナルでありながら、より多くの質問を促すようにします。
====================完全な応答====================
私は Tongyi Lab によって開発された大規模言語モデルである 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({
// 環境変数を設定していない場合は、DashScope API キーに置き換えてください:apiKey: "sk-xxx"
apiKey: process.env.DASHSCOPE_API_KEY,
// ベース 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: 'あなたは誰ですか?' }];
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) + '思考プロセス' + '='.repeat(20) + '\n');
for await (const chunk of stream) {
if (!chunk.choices?.length) {
console.log('\n' + '='.repeat(20) + 'トークン使用量' + '='.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) + '完全な応答' + '='.repeat(20) + '\n');
isAnswering = true;
}
process.stdout.write(delta.content);
answerContent += delta.content;
}
}
} catch (error) {
console.error('エラー:', error);
}
}
main();応答出力
====================思考プロセス====================
うーん、ユーザーが「あなたは誰ですか?」と尋ねました。彼らが何を知りたいのかを理解する必要があります。おそらく、これが私との最初の対話であるか、私のアイデンティティを確認したいのかもしれません。まず、私の名前とアイデンティティ、つまり Qwen を紹介すべきです。次に、私が Alibaba Group 傘下の Tongyi Lab によって開発された大規模言語モデルであることを説明します。次に、質問への回答、テキストの作成(物語、公式文書、メール、スクリプトなど)、論理的推論、コーディング、意見の表明、ゲームのプレイなどの私の能力をリストアップします。海外のユーザーが多くの言語で動作することを知るように、中国語、英語、ドイツ語、フランス語、スペイン語などを含む多言語サポートに言及します。フレンドリーな招待で質問を促して締めくくります。言語をシンプルで会話的に保ちます。専門用語は避けます。ユーザーは助けが必要か、単に好奇心旺盛かもしれないので、トーンを暖かくオープンに保ちます。また、私の能力をテストしたり、特定の助けを求めたりするような、より深いニーズも考慮しますが、最初の返信は基本とガイダンスに焦点を当てます。明確にするために短い文を使用します。
====================完全な応答====================
こんにちは!私は Alibaba Group 傘下の Tongyi Lab によって開発された大規模言語モデルである Qwen です。質問への回答、テキストの作成(物語、公式文書、メール、スクリプトなど)、論理的推論、コーディング、意見の表明、さらにはゲームのプレイなどを手伝うことができます。私は中国語、英語、ドイツ語、フランス語、スペイン語など、複数の言語をサポートしています。
ご質問やお手伝いが必要な場合は、お気軽にお知らせください!
====================トークン使用量====================
{
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/ja/model-studio/get-api-key
# ベース URL はリージョンによって異なります。https://www.alibabacloud.com/help/ja/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": "あなたは誰ですか?"
}
],
"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
# ベース URL はリージョンによって異なります。ご利用のリージョンに合わせて更新してください。
dashscope.base_http_api_url = "https://dashscope-intl.aliyuncs.com/api/v1/"
# リクエストパラメーターを初期化
messages = [{"role": "user", "content": "あなたは誰ですか?"}]
completion = Generation.call(
# 環境変数を設定していない場合は、DashScope API キーに置き換えてください:api_key="sk-xxx"
# API キーはリージョンによって異なります。https://www.alibabacloud.com/help/ja/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}")
応答出力
====================思考プロセス====================
うーん、ユーザーが「あなたは誰ですか?」と尋ねました。彼らが何を知りたいのかを理解する必要があります。おそらく、これが私との最初の対話であるか、私のアイデンティティを確認したいのかもしれません。まず、私の名前、Qwen を紹介し、私が Tongyi Lab によって開発された大規模言語モデルであることを伝えます。次に、質問への回答、テキストの作成、コーディング、論理的推論などの私の能力を説明し、海外のユーザーが異なる言語を使用できることを知るように多言語サポートに言及します。最後に、フレンドリーに保ち、対話を促すために質問を招待します。シンプルで明確な言語を使用し、専門用語を避けます。ユーザーは、私の能力をテストしたり、助けを求めたりするなど、より深いニーズを持っているかもしれないので、物語、公式文書、メール、スクリプトの作成などの具体的な例を挙げます。私は個人的な意識を持たない AI アシスタントであり、すべての応答はトレーニングデータから来ていることを強調します。箇条書きを使用せずに構造を明確かつ自然に保ちますが、すべてを明確かつ簡潔にカバーします。
====================完全な応答====================
私は Alibaba Group 傘下の Tongyi Lab によって開発された大規模言語モデルである 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 バージョン >= 2.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()
// 環境変数を設定していない場合は、DashScope 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 {
// ベース URL はリージョンによって異なります。
Generation gen = new Generation("http", "https://dashscope-intl.aliyuncs.com/api/v1");
Message userMsg = Message.builder().role(Role.USER.getValue()).content("あなたは誰ですか?").build();
streamCallWithMessage(gen, userMsg);
// 最終結果を印刷
// if (reasoningContent.length() > 0) {
// System.out.println("\n====================完全な応答====================");
// System.out.println(finalContent.toString());
// }
} catch (ApiException | NoApiKeyException | InputRequiredException e) {
logger.error("An exception occurred: {}", e.getMessage());
}
System.exit(0);
}
}応答出力
====================思考プロセス====================
うーん、ユーザーが「あなたは誰ですか?」と尋ねました。彼らが何を知りたいのかを理解する必要があります。おそらく、彼らは私のアイデンティティを知りたいか、私の応答をテストしているのかもしれません。まず、直接答えます:私は Alibaba Group 傘下の大規模言語モデルである Qwen です。次に、質問への回答、テキストの作成、コーディングなどの私の能力を簡単に説明し、海外のユーザーが異なる言語を使用できることを知るように多言語サポートに言及します。最後に、フレンドリーに保ち、対話を促すために質問を招待します。答えを簡潔かつ完全に保ちます。ユーザーは技術的な詳細やユースケースについてフォローアップの質問をするかもしれませんが、今のところ、シンプルで明確に保ちます。誰もが理解できるように専門用語は避けます。多言語サポートや具体的な例などの重要なポイントを見逃していないか再確認し、トーンが暖かく役立つものであることを確認します。
====================完全な応答====================
私は Alibaba Group 傘下の大規模言語モデルである Qwen です。質問への回答、テキストの作成(物語、公式文書、メール、スクリプトなど)、論理的推論、コーディング、意見の表明、ゲームのプレイ、および中国語、英語、ドイツ語、フランス語、スペイン語などを含む多言語コミュニケーションをサポートできます。ご質問やお手伝いが必要な場合は、お気軽にお尋ねください!HTTP
サンプルコード
curl
# ======= 重要なお知らせ =======
# API キーはリージョンによって異なります。API キーを取得してください:https://www.alibabacloud.com/ja/model-studio/get-api-key
# ベース 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": "あなたは誰ですか?"
}
]
},
"parameters":{
"enable_thinking": true,
"incremental_output": true,
"result_format": "message"
}
}'応答出力
id:1
event:result
:HTTP_STATUS/200
data:{"output":{"choices":[{"message":{"content":"","reasoning_content":"うーん","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":"ユーザー","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":"要求します","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":"ヘルプ","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":"ようこそ","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":"いつでも","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":"教えてください","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(
# 環境変数を設定していない場合は、この行を Alibaba Cloud DashScope API キーに置き換えてください:api_key="sk-xxx"
# API キーはリージョンによって異なります。API キーを取得するには、https://www.alibabacloud.com/help/ja/model-studio/get-api-key にアクセスしてください
api_key=os.getenv("DASHSCOPE_API_KEY"),
# 構成はリージョンによって異なります。リージョンに基づいてこの URL を更新してください
base_url="https://dashscope-intl.aliyuncs.com/compatible-mode/v1",
)
messages = [{"role": "user", "content": "あなたは誰ですか"}]
completion = client.chat.completions.create(
model="qwen-plus",
messages=messages,
# enable_thinking を True に設定して思考をオンにします。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応答
====================思考ステップ====================
ユーザーが「あなたは誰ですか?」と尋ねました。明確でフレンドリーな答えを出す必要があります。まず、自分のアイデンティティを述べるべきです—私は Alibaba Group 傘下の Tongyi Lab によって開発された大規模言語モデルである Qwen です。次に、質問への回答などの主な能力を説明する必要があります
====================完全な応答====================
私は Alibaba Group 傘下の Tongyi Lab によって開発された大規模言語モデルである Qwen です。質問への回答、テキストの作成、論理的推論、コーディングができます。私の目標は、ユーザーを助け、サポートすることです。今日はどのようにお手伝いできますか?Node.js
サンプルコード
import OpenAI from "openai";
import process from 'process';
// OpenAI クライアントを初期化
const openai = new OpenAI({
apiKey: process.env.DASHSCOPE_API_KEY, // 環境変数から読み込む
// 構成はリージョンによって異なります。リージョンに基づいてこの 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: 'あなたは誰ですか' }];
const stream = await openai.chat.completions.create({
model: 'qwen-plus',
messages,
stream: true,
// enable_thinking を True に設定して思考をオンにします。thinking_budget を使用して思考の最大トークン数を設定します。
enable_thinking: true,
thinking_budget: 50
});
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();応答
====================思考ステップ====================
ユーザーが「あなたは誰ですか?」と尋ねました。明確で正確な答えを出す必要があります。まず、自己紹介をすべきです—私は Alibaba Group 傘下の Tongyi Lab によって開発された大規模言語モデルである Qwen です。次に、質問への回答などの主な能力を説明する必要があります
====================完全な応答====================
私は Alibaba Group 傘下の Tongyi Lab によって独自に開発された大規模言語モデルである Qwen です。質問への回答、テキストの作成、論理的推論、コーディングができます。ご質問やお手伝いが必要な場合は、いつでもお気軽にお尋ねください!HTTP
サンプルコード
curl
# ======= 重要なお知らせ =======
# この例ではシンガポールのベース 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": "あなたは誰ですか"
}
],
"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
# ベース URL はリージョンによって異なります。リージョンに基づいてこの設定を更新してください
dashscope.base_http_api_url = "https://dashscope-intl.aliyuncs.com/api/v1/"
messages = [{"role": "user", "content": "あなたは誰ですか?"}]
completion = Generation.call(
# 環境変数を設定していない場合は、次の行を Alibaba Cloud DashScope 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}")
応答
====================思考ステップ====================
ユーザーが「あなたは誰ですか?」と尋ねました。明確でフレンドリーな答えを出す必要があります。まず、自己紹介をすべきです—私は Alibaba Group 傘下の Tongyi Lab によって開発された大規模言語モデルである Qwen です。次に、質問への回答などの主な能力を説明する必要があります
====================完全な応答====================
私は Alibaba Group 傘下の Tongyi Lab によって独自に開発された大規模言語モデルである 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 {
// ベース 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()
// 環境変数を設定していない場合は、次の行を Alibaba Cloud DashScope 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("あなたは誰ですか?").build();
streamCallWithMessage(gen, userMsg);
// 最終結果を印刷
// if (reasoningContent.length() > 0) {
// System.out.println("\n====================完全な応答====================");
// System.out.println(finalContent.toString());
// }
} catch (ApiException | NoApiKeyException | InputRequiredException e) {
logger.error("An exception occurred: {}", e.getMessage());
}
System.exit(0);
}
}応答
====================思考ステップ====================
ユーザーが「あなたは誰ですか?」と尋ねました。明確でフレンドリーな答えを出す必要があります。まず、自己紹介をすべきです—私は Alibaba Group 傘下の Tongyi Lab によって開発された大規模言語モデルである Qwen です。次に、質問への回答などの主な能力を説明する必要があります
====================完全な応答====================
私は Alibaba Group 傘下の Tongyi Lab によって独自に開発された大規模言語モデルである Qwen です。質問への回答、テキストの作成、論理的推論、コーディングができます。私の目標は、ユーザーに包括的で正確かつ役立つ情報とサポートを提供することです。今日はどのようにお手伝いできますか?HTTP
サンプルコード
curl
# ======= 重要なお知らせ =======
# API キーはリージョンによって異なります。API キーを取得するには、https://www.alibabacloud.com/help/ja/model-studio/get-api-key にアクセスしてください
# ベース 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": "あなたは誰ですか?"
}
]
},
"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":"オーケー","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"}その他の機能
課金
思考コンテンツは、出力トークン数に基づいて課金されます。
一部の混合思考モデルでは、思考モードとノンシンキングモードで価格が異なります。
モデルが思考モードで実行されても思考プロセスを出力しない場合、ノンシンキングモードの料金で課金されます。
よくある質問
Q: 思考モードを無効にするにはどうすればよいですか?
Q: どのモデルが非ストリーミング出力をサポートしていますか?
Q: 無料クォータがなくなった後、トークンを購入するにはどうすればよいですか?
Q: 画像やドキュメントをアップロードして質問することはできますか?
Q: トークンの使用量と呼び出し回数を表示するにはどうすればよいですか?
API リファレンス
ディープシンキングモデルの入力および応答パラメーターについては、「Qwen」をご参照ください。
エラーコード
実行が失敗した場合は、「エラーメッセージ」でトラブルシューティング情報をご確認ください。
