[開発者向け]AlibabaがQwen3.6-35B-A3Bをオープンウェイトで公開——エージェントコーディングと思考保持機能が強化

目次

はじめに

 AlibabaのQwenチームが2026年4月、コーディング能力を大幅に強化したマルチモーダルLLM「Qwen3.6-35B-A3B」をオープンウェイトで公開しました。2月リリースのQwen3.5シリーズに続く新モデルで、コミュニティからのフィードバックをもとに実用性と安定性を重視した設計が採用されています。本稿では、サーバー起動からAPI利用・エージェント構築まで、実装に必要な情報を中心に解説します。

参考記事

関連記事

あわせて読みたい
[ニュース解説]中国AIはなぜオープンソースを手放せないのか——アリババの方針転換とDeepSeekが問うもの はじめに  Channel News Asiaが2026年4月19日に掲載したBloomberg Opinionのコラムをもとに、中国AIのオープンソース戦略をめぐる現状と今後の行方を解説します。アリ...
あわせて読みたい
[ニュース解説]Alibaba Qwenの技術リーダーが新モデル発表翌日に突然退任——中国AI開発の内側で何が起... はじめに  TechCrunchが2026年3月3日に報じたところによると、中国テック大手アリババのAIプロジェクト「Qwen(千問)」の中心的技術リーダーであるJunyang Lin氏が、...

要点

  • Qwen3.6-35B-A3Bは総パラメータ35B・有効化3BのMoEアーキテクチャを採用したマルチモーダルLLMで、HuggingFaceからオープンウェイトで公開されている
  • エージェントコーディング機能が強化され、フロントエンド開発やリポジトリ規模の推論において精度・流暢さが向上した
  • 推論履歴を後続の処理に引き継ぐ「Thinking Preservation(思考保持)」が新たに導入され、反復的な開発作業での効率化が期待できる
  • ネイティブのコンテキスト長は262,144トークンで、YaRN拡張により最大1,010,000トークンまで対応可能
  • SWE-bench Verifiedで73.4%、Terminal-Bench 2.0で51.5%を記録し、Gemma4-31B(52.0%)を上回るコーディング性能を示している

詳細解説

モデルの概要と位置づけ

 Qwen3.6-35B-A3Bは、AlibabaのQwenチームが2026年4月に公開した最新のオープンウェイトモデルです。名称の「35B-A3B」はパラメータ構成を表しており、総パラメータ数35Bのうち推論時に有効化されるのは3Bです。これはMixture of Experts(MoE)と呼ばれるアーキテクチャの特徴で、すべてのパラメータを毎回使うのではなく、入力に応じて必要な専門家モジュールだけを選択的に活性化することで、計算コストを抑えながら大規模モデルの表現力を実現します。

 前シリーズからの差分として特に強調されているのが、エージェントコーディングと思考保持の2点です。アリババがオープンウェイト戦略を継続する背景については、中国AI開発における戦略的文脈として別途考察した記事もご参照いただければと思います(https://jobirun.com/china-ai-open-source-strategy-alibaba-deepseek/)。

ベンチマーク結果

 コーディングエージェントの主要指標であるSWE-bench Verifiedでは 73.4% を記録しており、Qwen3.5-27B(75.0%)にはわずかに届かないものの、Gemma4-31B(52.0%)やQwen3.5-35B-A3B(70.0%)は上回っています。ターミナル操作を評価するTerminal-Bench 2.0では 51.5% と、比較5モデルの中で最高スコアを達成しています。

 フロントエンド開発に特化した内部ベンチマーク「QwenWebBench」では 1397ポイント(EloレーティングまたはBTスコア)を記録しており、Qwen3.5-27B(1068)やGemma4-31B(1197)から大幅に向上しています。このベンチマークは、Webデザイン・Webアプリ・ゲーム・SVG・データ可視化・アニメーション・3Dの7カテゴリを英中バイリンガルで評価するもので、フロントエンド開発能力の向上が数値にも表れていると言えます。

サーバー起動方法

 モデルカードによれば、本番環境や高スループット要件にはSGLang(0.5.10以上)またはvLLM(0.19.0以上)が推奨されています。

SGLangでの起動

# インストール
uv pip install sglang[all]

# 標準起動(8GPU、最大コンテキスト262,144トークン)
python -m sglang.launch_server \
  --model-path Qwen/Qwen3.6-35B-A3B \
  --port 8000 \
  --tp-size 8 \
  --mem-fraction-static 0.8 \
  --context-length 262144 \
  --reasoning-parser qwen3

# ツール呼び出しを有効化する場合
python -m sglang.launch_server \
  --model-path Qwen/Qwen3.6-35B-A3B \
  --port 8000 \
  --tp-size 8 \
  --mem-fraction-static 0.8 \
  --context-length 262144 \
  --reasoning-parser qwen3 \
  --tool-call-parser qwen3_coder

# MTP(Multi-Token Prediction)を有効化する場合
python -m sglang.launch_server \
  --model-path Qwen/Qwen3.6-35B-A3B \
  --port 8000 \
  --tp-size 8 \
  --mem-fraction-static 0.8 \
  --context-length 262144 \
  --reasoning-parser qwen3 \
  --speculative-algo NEXTN \
  --speculative-num-steps 3 \
  --speculative-eagle-topk 1 \
  --speculative-num-draft-tokens 4

vLLMでの起動

# インストール
uv pip install vllm --torch-backend=auto

# 標準起動
vllm serve Qwen/Qwen3.6-35B-A3B \
  --port 8000 \
  --tensor-parallel-size 8 \
  --max-model-len 262144 \
  --reasoning-parser qwen3

# ツール呼び出しを有効化する場合
vllm serve Qwen/Qwen3.6-35B-A3B \
  --port 8000 \
  --tensor-parallel-size 8 \
  --max-model-len 262144 \
  --reasoning-parser qwen3 \
  --enable-auto-tool-choice \
  --tool-call-parser qwen3_coder

# MTP(Multi-Token Prediction)を有効化する場合
vllm serve Qwen/Qwen3.6-35B-A3B \
  --port 8000 \
  --tensor-parallel-size 8 \
  --max-model-len 262144 \
  --reasoning-parser qwen3 \
  --speculative-config '{"method":"qwen3_next_mtp","num_speculative_tokens":2}'

# ビジョンエンコーダをスキップしてKVキャッシュを節約する場合
vllm serve Qwen/Qwen3.6-35B-A3B \
  --port 8000 \
  --tensor-parallel-size 8 \
  --max-model-len 262144 \
  --reasoning-parser qwen3 \
  --language-model-only

Hugging Face Transformersでの起動(軽量確認用)

pip install "transformers[serving]"

transformers serve Qwen/Qwen3.6-35B-A3B \
  --port 8000 \
  --continuous-batching

軽量なテストや中程度の負荷には使えますが、本番用途にはSGLang/vLLMを推奨とされています。

Chat Completions APIの利用

 サーバー起動後、OpenAI互換APIとして利用できます。まず環境変数を設定します。

pip install -U openai
export OPENAI_BASE_URL="http://localhost:8000/v1"
export OPENAI_API_KEY="EMPTY"

テキスト入力

from openai import OpenAI

client = OpenAI()

messages = [
    {"role": "user", "content": "Type \"I love Qwen3.6\" backwards"},
]

chat_response = client.chat.completions.create(
    model="Qwen/Qwen3.6-35B-A3B",
    messages=messages,
    max_tokens=81920,
    temperature=1.0,
    top_p=0.95,
    presence_penalty=1.5,
    extra_body={"top_k": 20},
)
print(chat_response)

画像入力

from openai import OpenAI

client = OpenAI()

messages = [
    {
        "role": "user",
        "content": [
            {
                "type": "image_url",
                "image_url": {
                    "url": "https://example.com/image.jpg"
                }
            },
            {
                "type": "text",
                "text": "この画像を説明してください。"
            }
        ]
    }
]

response = client.chat.completions.create(
    model="Qwen/Qwen3.6-35B-A3B",
    messages=messages,
    max_tokens=81920,
    temperature=1.0,
    top_p=0.95,
    presence_penalty=1.5,
    extra_body={"top_k": 20},
)
print(response)

動画入力

from openai import OpenAI

client = OpenAI()

messages = [
    {
        "role": "user",
        "content": [
            {
                "type": "video_url",
                "video_url": {
                    "url": "https://example.com/video.mp4"
                }
            },
            {
                "type": "text",
                "text": "この動画で何が起きていますか?"
            }
        ]
    }
]

response = client.chat.completions.create(
    model="Qwen/Qwen3.6-35B-A3B",
    messages=messages,
    max_tokens=81920,
    temperature=1.0,
    top_p=0.95,
    presence_penalty=1.5,
    extra_body={
        "top_k": 20,
        "mm_processor_kwargs": {"fps": 2, "do_sample_frames": True},
    },
)
print(response)

思考モードの制御

 Qwen3.6はデフォルトで 思考モード(Thinking Mode) が有効になっており、回答前に <think>…</think> タグ内で推論プロセスを生成します。モデルカードによれば、Qwen3系の /think /nothink ソフトスイッチには非対応で、思考モードのオン・オフはAPIパラメータで制御します。

思考なしの直接回答(Non-Thinking Mode)

chat_response = client.chat.completions.create(
    model="Qwen/Qwen3.6-35B-A3B",
    messages=messages,
    max_tokens=32768,
    temperature=0.7,
    top_p=0.8,
    presence_penalty=1.5,
    extra_body={
        "top_k": 20,
        "chat_template_kwargs": {"enable_thinking": False},
        # Alibaba Cloud Model Studio の場合は上記の代わりに:
        # "enable_thinking": False,
    },
)

思考保持(Thinking Preservation)の有効化

 Thinking Preservationは、過去の会話ターンで生成した推論履歴を後続の処理でも保持・活用する機能です。通常は最新の1ターン分の思考ブロックだけが保持されますが、この機能を有効にすると複数ターンにわたる推論の積み重ねが可能になります。エージェントが前ステップの判断を参照しながら継続的にタスクを進める場面で特に有効だと考えられます。

chat_response = client.chat.completions.create(
    model="Qwen/Qwen3.6-35B-A3B",
    messages=messages,
    max_tokens=32768,
    temperature=0.7,
    top_p=0.8,
    presence_penalty=1.5,
    extra_body={
        "top_k": 20,
        "chat_template_kwargs": {"preserve_thinking": True},
        # Alibaba Cloud Model Studio の場合は上記の代わりに:
        # "preserve_thinking": True,
    },
)

 モデルカードでは、冗長な推論の削減によりトークン消費の抑制やKVキャッシュ効率の向上が期待できると説明されています。

サンプリングパラメータの推奨設定

 モデルカードでは、タスク種別に応じた推奨設定が提示されています。

モード用途temperaturetop_ptop_kpresence_penalty
思考モード(汎用)一般タスク1.00.95201.5
思考モード(精密)WebDev等0.60.95200.0
非思考モード(汎用)一般タスク0.70.8201.5
非思考モード(推論)推論タスク1.00.95201.5

 presence_penalty を0〜2の範囲で調整することで無限ループ的な繰り返しを抑制できますが、値が高すぎると言語混在や性能低下が起きる可能性があるとされています。

Qwen-Agentを使ったエージェント構築

 公式の「Qwen-Agent」フレームワークを使うことで、MCPサーバーや独自ツールと連携したエージェントを簡単に構築できます。以下はAlibabaのDashScope(OpenAI互換APIエンドポイント)を使う例です。

import os
from qwen_agent.agents import Assistant

# LLMの設定(DashScope使用時)
llm_cfg = {
    'model': 'Qwen3.6-35B-A3B',
    'model_type': 'qwenvl_oai',
    'model_server': 'https://dashscope.aliyuncs.com/compatible-mode/v1',
    'api_key': os.getenv('DASHSCOPE_API_KEY'),
    'generate_cfg': {
        'use_raw_api': True,
        'extra_body': {
            'enable_thinking': True,
            'preserve_thinking': True,  # 思考保持を有効化
        },
    },
}

# vLLM/SGLangの自前サーバーを使う場合は上記を以下に置き換える:
# llm_cfg = {
#     'model': 'Qwen/Qwen3.6-35B-A3B',
#     'model_type': 'qwenvl_oai',
#     'model_server': 'http://localhost:8000/v1',
#     'api_key': 'EMPTY',
#     'generate_cfg': {
#         'use_raw_api': True,
#         'extra_body': {
#             'chat_template_kwargs': {'enable_thinking': True, 'preserve_thinking': True}
#         },
#     },
# }

# ツールの定義(MCPサーバーを利用する例)
tools = [
    {
        'mcpServers': {
            "filesystem": {
                "command": "npx",
                "args": [
                    "-y",
                    "@modelcontextprotocol/server-filesystem",
                    "/Users/yourname/Desktop"
                ]
            }
        }
    }
]

# エージェントの定義と実行
bot = Assistant(llm=llm_cfg, function_list=tools)

messages = [{'role': 'user', 'content': 'デスクトップを整理してください。'}]
for responses in bot.run(messages=messages):
    pass
print(responses)

超長文テキストの処理(YaRN拡張)

 ネイティブの262,144トークンを超える長文処理が必要な場合は、YaRN(Yet another RoPE extensioN)によってコンテキスト長を最大1,010,000トークンまで拡張できます。YaRNはロータリー位置エンコーディング(RoPE)をスケーリングして長文に対応させる技術で、transformers・vLLM・SGLang・KTransformersで利用可能です。

config.json を編集する方法

{
    "mrope_interleaved": true,
    "mrope_section": [11, 11, 10],
    "rope_type": "yarn",
    "rope_theta": 10000000,
    "partial_rotary_factor": 0.25,
    "factor": 4.0,
    "original_max_position_embeddings": 262144
}

コマンドライン引数で指定する方法(vLLM)

VLLM_ALLOW_LONG_MAX_MODEL_LEN=1 vllm serve Qwen/Qwen3.6-35B-A3B \
  --hf-overrides '{"text_config": {"rope_parameters": {
    "mrope_interleaved": true,
    "mrope_section": [11, 11, 10],
    "rope_type": "yarn",
    "rope_theta": 10000000,
    "partial_rotary_factor": 0.25,
    "factor": 4.0,
    "original_max_position_embeddings": 262144
  }}}' \
  --max-model-len 1010000

コマンドライン引数で指定する方法(SGLang / KTransformers)

SGLANG_ALLOW_OVERWRITE_LONGER_CONTEXT_LEN=1 python -m sglang.launch_server \
  --json-model-override-args '{"text_config": {"rope_parameters": {
    "mrope_interleaved": true,
    "mrope_section": [11, 11, 10],
    "rope_type": "yarn",
    "rope_theta": 10000000,
    "partial_rotary_factor": 0.25,
    "factor": 4.0,
    "original_max_position_embeddings": 262144
  }}}' \
  --context-length 1010000

 YaRNはスケーリングファクターを固定する静的な実装のため、短いテキストへの性能影響が懸念されます。長文処理が必要な場合のみ設定を変更し、用途の典型的なコンテキスト長に合わせて factor の値を調整することが推奨されています(例:52万トークン前後の用途では factor=2.0)。

まとめ

 Qwen3.6-35B-A3Bは、エージェントコーディング強化とThinking Preservationを実装の軸に据えた新世代のオープンウェイトモデルです。vLLM・SGLangでの起動から、思考モード制御・Qwen-Agentによるエージェント構築・YaRNによる長文対応まで、実装の入口が整備されています。実務導入を検討する際は、特にThinking Preservationの有効化とサンプリングパラメータの組み合わせを実際のユースケースで確認することが重要だと思います。

この記事が気に入ったら
フォローしてね!

  • URLをコピーしました!
  • URLをコピーしました!
目次