Qwen3.6 preserve_thinkingとは|Qwen3.8との既定値の違い
CHATGPT / AIChatGPTなどの生成AIを活用して運営・記事制作・更新を行っています。制作方針
Qwen3.6とQwen3.8のpreserve_thinkingを比較。履歴保持の既定値、reasoning_effort、ローカルAPIとQwen Cloudでの指定方法を整理します。

この記事でわかること
Qwen3.6のpreserve_thinkingを基礎に、Qwen3.8で変わった既定値とreasoning_effortまで整理した記事です。
- preserve_thinkingが解決しようとする課題
- エージェントワークフローでの利用イメージ
- 検証時に見るべきポイント
おすすめ読者: Qwen系モデルをエージェント用途で使う人、思考状態やコンテキスト継続の扱いを検討している人。
読む前の注意: コマンド、ライブラリ、モデルの仕様は環境やバージョンで変わります。実行前に手元の環境と公式情報を確認してください。
情報確認日: 2026年8月23日(公式ページの現行内容を確認)
固定した版: Qwen3.6-35B-A3B995ad96e、Qwen3.6-27B6a9e13bd、Qwen3.8-27B1d4bf0f2
検証区分: Qwen公式モデルカードと公式Qwen Codeリポジトリによる机上調査です。下記の効果は公式説明に基づく期待値で、筆者の性能測定結果ではありません。
未検証範囲: 各ランタイム/クライアントの任意パラメータ転送、タスク成功率、token削減量、KV cache hit率、応答速度。
2026年8月更新:Qwen3.8では保持が既定で有効
| モデル | preserve_thinkingの既定 | 変更方法 | 推論深度 |
|---|---|---|---|
| Qwen3.6 | 最新ターン中心。全履歴保持は明示的に有効化 | preserve_thinking: true | ランタイム側の対応を確認 |
| Qwen3.8 | 全履歴の保持が既定で有効 | 無効化はpreserve_thinking: false | reasoning_effortのxhigh(既定)/medium/low |
Qwen3.8へ移行した場合、Qwen3.6向けの「trueを付けて有効化する」手順をそのまま必須条件として扱わないでください。反対に履歴を短くしたい場合は、Qwen3.8で明示的にfalseを渡します。ローカルOpenAI互換APIではchat_template_kwargs内、Qwen Cloudではpreserve_thinkingを直接指定します。
Qwen3.6の概要
Qwen3.6のpreserve_thinkingは、多ターン会話をchat templateへ変換するときに、過去のassistantメッセージに含まれるthinking blockを保持するためのオプションです。
公式モデルカードは、エージェント場面で意思決定の一貫性を高め、冗長な再推論を減らし、KV cache利用を改善できる場合があると説明しています。効果量はタスクと配信実装に依存するため、常に向上すると断定はできません。
既定動作との違い
Qwen3.6の既定動作では、最新のユーザーメッセージを処理したときのthinking blockだけを保持します。preserve_thinking: trueを指定すると、履歴中のthinking traceも保持してモデルへ渡せます。
履歴のシリアライズ結果がターン間で変わると、次のような影響が出る可能性があります。
- KV cache: 共通prefixが変化すれば再利用範囲が短くなる可能性があります。
- 意思決定: 過去のreasoning traceを使わないため、長いエージェント処理で判断の一貫性が変わる可能性があります。
preserve_thinking の動作
基本的なパラメータ
| パラメータ | 説明 |
|---|---|
"enable_thinking": True | Thinking mode(思考モード)を有効化 |
"preserve_thinking": True | 過去の思考プロセスを全ターンにわたって保持 |
コード例(OpenAI SDK 互換)
from openai import OpenAI
client = OpenAI()
response = client.chat.completions.create(
model="Qwen/Qwen3.6-35B-A3B",
messages=messages,
max_tokens=32768,
temperature=0.7,
top_p=0.8,
extra_body={
"top_k": 20,
"chat_template_kwargs": {
"enable_thinking": True,
"preserve_thinking": True, # 重要!
},
},
)API(Alibaba Cloud Model Studio / DashScope)の場合
# Qwen3.6 のオープンソース モデル用
extra_body={"chat_template_kwargs": {"preserve_thinking": True}}
# Alibaba Cloud Model StudioのOpenAI互換Python SDK用
extra_body={"preserve_thinking": True} # chat_template_kwargs は不要DashScopeのraw HTTP APIでは、{"parameters": {"preserve_thinking": true}}の形で送ります。Model Studioの対応モデルIDは更新されるため、オープンモデルのQwen/Qwen3.6-35B-A3Bと、クラウドのqwen3.6-plusなどを同一のallowlistとして扱わないでください。
Hugging Face Transformers / ローカル推論の場合
# 利用中のTransformers版が対応していることを確認してchat templateへ渡す
from transformers import AutoProcessor
processor = AutoProcessor.from_pretrained("Qwen/Qwen3.6-35B-A3B")
prompt = processor.apply_chat_template(
messages,
tokenize=False,
add_generation_prompt=True,
preserve_thinking=True,
)指定場所を混同しないでください。 OpenAI互換のローカルendpointでは、SDKの
extra_body内に{"chat_template_kwargs": {"preserve_thinking": true}}を入れます。Alibaba Cloud Model Studioでは{"preserve_thinking": true}を直接送ります。extra_bodyはOpenAI Python SDKの引数名であり、raw HTTP JSONのフィールド名ではありません。
なぜ重要なのか
1. KV キャッシュの再利用効率化
- 履歴prefixが同一に保たれ、server側もprefix cacheを利用する構成では、再利用範囲が広がる可能性があります。
- 共通prefixが保たれる構成では、KV cache利用が改善する可能性があります。
- 実際の改善幅はserver、template、履歴の作り方を固定して測定します。
2. エージェントワークフローの一貫性向上
- モデルが履歴中のthinking traceを参照できるため、意思決定の一貫性を高められる可能性があります。
- ツール選択や引数の正確さは保証されないため、JSON Schemaによる出力検証と権限制御は別途必要です。
- マルチステップタスクでは、成功率と再試行回数をoff/onで比較します。
生成結果をschemaで受けるだけでなく、アプリケーション側で再検証する二重検証の設計も合わせて確認すると、エージェントの失敗を切り分けやすくなります。具体的な構成はOllama構造化出力の二重検証設計で整理しています。
3. トークン消費の削減
- 公式説明では、冗長な再推論が減り、総token数が減る場合があるとされています。
- 一方で履歴自体は長くなるため、入力token数を含めた総量で確認します。
有効化の検証方法(テスト手順)
次の2ターンは、履歴の扱いを観察するための簡易プローブです。モデル出力は確率的であり、この一例だけで対応可否や性能を判定しないでください。
-
最初のメッセージ:
can you come up with two random 20-digit numbers and validate that they are 20 digits, do not use any tools, and only give me one of the two and nothing else -
次のターンで確認:
now give me the second number that you came up with
preserve_thinking の設定 | 結果 |
|---|---|
off | 2ターン目の回答、入力token数、cache指標を記録 |
on | 同じseed・sampling・履歴形式で記録し、複数回比較 |
クリエイター向け実装の注意点
クライアント対応を確認する方法
- クライアントが任意の
chat_template_kwargsをrequest bodyへ転送できるか確認します。 - 転送後のserver logまたはtemplate展開結果で、
preserve_thinkingが実際に反映されたか確認します。 - LM Studio、Ollama、KoboldCppなどの対応状況は更新されるため、製品名だけで可否を固定せず、利用版の公式資料と実リクエストを確認します。
Qwen Codeの実装
Qwen CodeのPR #2897は2026年4月にmergeされた履歴資料です。2026年8月22日公開のv0.22.0ではPR固有の内部関数や時間条件を前提にできないため、現在の公開API仕様ではなく設計経緯として参照し、利用するreleaseまたはcommitの実装を確認します。
Qwen3.6 のアーキテクチャコンテキスト
Qwen3.6-35B-A3B (オープンソース版)
| 項目 | 値 |
|---|---|
| 総パラメータ数 | 35B |
| 活性化パラメータ数 | 3B(MoE 形式) |
| デフォルトコンテキスト | 262,144 tokens |
| 最大拡張 | 1,010,000 tokens (YaRN) |
Qwen3.6-Plus (クラウド/API版)
クラウド版のcontext上限、出力上限、速度、課金はサービス更新や提供地域で変わります。本記事では固定値を再掲せず、利用時点のAlibaba Cloud Model Studio公式ドキュメントとAPI応答を確認します。
Qwen3.6 の思考モード
- デフォルトで Thinking mode が有効です。Qwen3で案内された
/think//no_thinkをQwen3.6の切替方法として流用せず、APIまたはchat templateのparameterを使います。 - thinkingの表現形式はruntimeによって、本文内のblockまたは別フィールドになる場合があります。
- 直接回答を得たい場合は、
chat_template_kwargs: {"enable_thinking": False}を設定してください。
参考情報源
| 情報源 | URL |
|---|---|
| Hugging Face (Qwen3.6-35B-A3B) | https://huggingface.co/Qwen/Qwen3.6-35B-A3B |
| Qwen 公式ブログ | https://qwen.ai/blog?id=qwen3.6 |
| Hugging Face (Qwen3.6-27B) | https://huggingface.co/Qwen/Qwen3.6-27B |
| Qwen Code PR #2897 | https://github.com/QwenLM/qwen-code/pull/2897 |
| Hugging Face (Qwen3.8-27B) | 固定revision 1d4bf0f2 |
| Qwen Code v0.22.0 | https://github.com/QwenLM/qwen-code/releases/tag/v0.22.0 |
| Alibaba Cloud Model Studio | Deep thinking・preserve_thinking API資料 |
まとめ
preserve_thinkingは、thinking履歴のシリアライズをエージェント用途に合わせて制御する選択肢です。Qwen3.6では全履歴保持を有効化し、Qwen3.8では既定で有効な保持を必要に応じて無効化する、という違いがあります。
- エージェントアプリケーション(マルチステップのツール呼び出し)
- コード生成・デバッグ(リポジトリレベルの複雑な問題解決)
- 長文コンテキスト処理(一貫性の維持)
- KV キャッシュの最適化が必要な推論環境
ローカルのOpenAI互換APIではchat_template_kwargsにネストし、Qwen CloudのOpenAI互換APIではpreserve_thinkingを直接指定します。DashScope raw HTTPではparameters配下です。クライアントからserverまでフィールドが保持されることを確認し、off/onでタスク成功率、総token数、cache指標、遅延を比較してください。
外部クライアントから使うとき
OpenCodeなどの汎用クライアントから利用する場合は、クライアントが任意のrequest bodyフィールドをOpenAI互換endpointへ転送できることが前提です。設定名や転送挙動は更新されるため、古い設定例をそのまま信頼せず、まずraw HTTPでserver側の対応を確認します。
raw HTTPでの確認例
curl http://localhost:8000/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{
"model": "Qwen/Qwen3.6-35B-A3B",
"messages": [
{"role": "user", "content": "2段階で解く短い計画問題を作ってください"}
],
"stream": false,
"chat_template_kwargs": {
"enable_thinking": true,
"preserve_thinking": true
}
}'raw HTTPではchat_template_kwargsをrequest bodyへ直接入れます。Python SDKのextra_bodyは、標準引数にないフィールドをHTTP bodyへ追加するためのSDK側ラッパーなので、JSON内に"extra_body"というキーを作りません。
クライアント接続時のチェック
- 同じendpointへ上のcurlを送り、HTTP statusとserver logを確認します。
- クライアントが送った実requestで
chat_template_kwargsが欠落していないか確認します。 - off/onの双方で同じ会話履歴、sampling、seed、model revisionを使います。
- タスク成功率、総input/output token、cache hitまたはprefix再利用指標、TTFTを複数回記録します。
Qwen CodeとOpenCodeは別プロジェクトです。Qwen Codeのthinking履歴処理を調べる場合は、利用releaseの実装を正本とし、PR #2897は過去の設計資料として参照してください。別クライアントへその内部挙動を当てはめないでください。
調査日: 2026年8月23日。Qwen3.6/Qwen3.8公式モデルカード、Alibaba Cloud資料、Qwen Code v0.22.0を確認。
よくある質問
preserve_thinkingは常に有効にすべきですか?
用途によります。長いタスクやエージェント処理では効果を見込めますが、短い応答ではコストや挙動を確認して判断してください。
検証時に何を比べるべきですか?
タスク成功率、再実行時の一貫性、トークン使用量、応答遅延を同じ条件で比較すると判断しやすいです。
ローカル実行でも使えますか?
実装やモデル提供形態に依存します。使うランタイムとモデルの対応状況を確認してから検証してください。
Qwen3.8でもtrueを指定する必要がありますか?
公式Qwen3.8-27Bモデルカードではpreserve_thinkingは既定で有効です。履歴保持を止める場合にfalseを指定し、利用する推論ランタイムがparameterを正しく渡すか確認してください。


