Qwen3.6-Max-Preview リリースノート / 新機能

Qwen3.6-Max-Preview は、エージェントコーディング、世界知識、指示遵守において Qwen3.6-Plus よりも大幅な改善を提供することを目的とした、独自モデルの早期プレビューです。現在も積極的に開発が進められており、Qwen チームは次のバージョンでさらなる向上を期待しています。

技術的改善とパフォーマンス

Qwen3.6-Max-Preview は、いくつかの主要ベンチマークにおいて Qwen3.6-Plus に対する測定可能なパフォーマンス向上を示しています。モデルはより強力な世界知識と改善された指示遵守を示し、エージェントコーディングタスクに特化して最適化されています。

エージェントコーディング

Qwen3.6-Max-Preview は、SWE-bench Pro、Terminal-Bench 2.0、SkillsBench、QwenClawBench、QwenWebBench、SciCode の 6 つの主要コーディングベンチマークで最高スコアを達成しています。Qwen3.6-Plus と比較して、以下の改善が見られます:

  • SkillsBench: +9.9
  • SciCode: +6.3
  • NL2Repo: +5.0
  • Terminal-Bench 2.0: +3.8

世界知識と指示遵守

モデルは、以下のベンチマークで Qwen3.6-Plus に対して向上したことから、より強力な世界知識と改善された指示遵守能力を示しています:

  • SuperGPQA: +2.3
  • QwenChineseBench: +5.3
  • ToolcallFormatIFBench: +2.8

API と統合

Qwen3.6-Max-Preview は、Alibaba Cloud Model Studio API で qwen3.6-max-preview として利用可能です。また、Qwen Studio でインタラクティブチャットとしても利用できます。

思考機能

API は preserve_thinking 機能をサポートしており、モデルがメッセージのすべての前のターンからの思考内容を保持できるようにします。この機能は、コンテキストと推論の痕跡を維持するためにエージェントタスクに推奨されます。

互換性

Alibaba Cloud Model Studio は、OpenAI の仕様に準拠したチャット完了およびレスポンス API を含む業界標準プロトコルをサポートし、Anthropic にも互換性のある API インターフェースを提供しています。

実装例

Qwen3.6-Max-Preview を使用するには、OpenAI 互換 API と OpenAI Python クライアントを利用し、以下の環境変数が必要です:

  • DASHSCOPE_API_KEY: Alibaba Cloud Model Studio から取得した API キー。
  • DASHSCOPE_BASE_URL: 互換モード API のベース URL(北京、シンガポール、米国バージニアリージョンで利用可能)。
  • DASHSCOPE_MODEL: モデル名。異なるモデルに対して上書きできるモデル名。
from openai import OpenAI
import os

api_key = os.environ.get("DASHSCOPE_API_KEY")
if not api_key:
    raise ValueError("DASHSCOPE_API_KEY is required.")

client = OpenAI(
    api_key=api_key,
    base_url=os.environ.get("DASHSCOPE_BASE_URL", "https://dashscope-intl.aliyuncs.com/compatible-mode/v1"),
)

messages = [{"role": "user", "content": "Introduce vibe coding."}]
model = os.environ.get("DASHSCOPE_MODEL", "qwen3.6-max-preview")

completion = client.chat.completions.create(
    model=model,
    messages=messages,
    extra_body = {
        "enable_thinking": True,
        "preserve_thinking": True,
    },
    stream=True
)

reasoning_content = ""
answer_content = ""
 is_answering = False

print("\n" + "=" * 20 + "Reasoning" + "=" * 20 + "\n")
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 + "Answer" + "* 20 + "\n")
            is_answering = True
        print(delta.content, end="", flush=True)
        answer_content += delta.content

Sources