TL;DR
Qwen 3.6 Plus Previewは2026年3月30日にリリースされ、100万トークンのコンテキストウィンドウ、必須の思考連鎖推論、およびツール使用のサポートを備えています。現在、OpenRouterで完全に無料で利用できます。モデルID qwen/qwen3.6-plus-preview:free を任意のOpenAI互換クライアントで使用して、今日からリクエストを送信できます。
静かに登場したモデル
Alibaba CloudはQwen 3.6 Plus Previewを2026年3月30日にリリースしました。派手な発表も、ウェイティングリストもありませんでした。OpenRouterで100万トークンあたり0ドルで利用できる新しいモデルとして登場しました。

最初の2日間で、約40万件のリクエストに対して4億トークン以上の完了を処理しました。開発者たちはその速さに驚きました。
この記事では、アカウント設定、APIキー、cURL、Python、Node.jsでの動作するコード例、そしてこのモデルが最も優れたパフォーマンスを発揮する場所に関する具体的なアドバイスなど、作業を開始するために必要なすべてを説明します。
このガイドを読み終えるまでに、Qwen 3.6を無料で呼び出す方法、その機能、そして限界を正確に理解できるでしょう。
Qwen 3.6が3.5シリーズに追加した機能
3.5から3.6への飛躍は漸進的なものではありません。3つの点が大きく変わりました。
1. コンテキストウィンドウが100万トークンに拡大
Qwen 3.5は、バリアントによって32Kから128Kのコンテキストウィンドウを持っていました。Qwen 3.6は100万トークンの入力をサポートしています。
これを実用的な言葉で表現すると、100万トークンは概ね75万語に相当します。これは、モデルにコードベース全体、1年間のSlackログ、完全な法的文書ライブラリ、または大規模な研究コーパスを1つのリクエストで提供するのに十分な量です。
ほとんどの無料モデルは8Kから32Kが上限です。1Mトークンを無料で利用できるのは珍しいことです。
2. 推論機能は組み込みであり、オプションではない
Qwen 3.6は必須の推論トークンを使用します。モデルが最終的な回答を生成する前に、内部的な思考連鎖を生成します。「ステップバイステップで考えてください」といった特別な指示を与える必要はありません。
これはDeepSeek R1が普及させたのと同じパターンです。Qwen 3.6の場合、数学だけでなく、コーディング、フロントエンド、一般的な問題解決タスク全体に適用される点が異なります。
3. エージェント的な振る舞いがより信頼できるようになった
3.5シリーズのツール呼び出しは一貫性がありませんでした。関数が誤った引数タイプで呼び出されたり、モデルが存在しない関数呼び出しを幻覚したりすることがありました。
Qwen 3.6はこれを直接的に改善しています。Alibaba Cloud自身の説明によると、3.5シリーズと比較して「より強力な推論と信頼性の高いエージェント的な振る舞いを提供します」。実際には、これにより多段階ワークフローでの壊れたツール呼び出しが減少します。
このモデルは特に3つのタスクに特化しています。
- エージェント的コーディング(ツール使用による多段階コード生成)
- フロントエンド開発(HTML、CSS、JavaScriptコンポーネント生成)
- 複雑な問題解決(研究、分析、長文コンテキスト要約)
Qwen 3.6に無料でアクセスする方法
OpenRouterアカウントとAPIキーの2つが必要です。無料モデルの場合、クレジットカードは必要ありません。
ステップ1:OpenRouterアカウントを作成する
openrouter.aiにアクセスし、メールアドレスまたはGoogleアカウントでサインアップしてください。プロセス全体は2分もかかりません。
無料モデルの場合、支払い方法を追加する必要はありません。メール認証後すぐにアクセスできます。
ステップ2:APIキーを生成する
- 右上隅にあるプロフィールアバターをクリックします
- ドロップダウンからAPI Keysを選択します
- Create Keyをクリックします
- 名前を付け(例:
qwen-test)、Createをクリックします - キーをコピーします。
sk-or-v1-...で始まります

これを安全な場所に保管してください。OpenRouterは再度表示しません。
ステップ3:最初のリクエストを送信する
モデルIDはqwen/qwen3.6-plus-preview:freeです。
OpenRouterはOpenAI APIと同じリクエスト形式を使用するため、OpenAI互換のクライアントは修正なしで動作します。
cURL:
curl https://openrouter.ai/api/v1/chat/completions \
-H "Authorization: Bearer sk-or-v1-YOUR_KEY_HERE" \
-H "Content-Type: application/json" \
-d '{
"model": "qwen/qwen3.6-plus-preview:free",
"messages": [
{
"role": "user",
"content": "JWTトークンを解析し、ペイロードを辞書として返すPython関数を記述してください。"
}
]
}'
Python (requestsライブラリ):
import requests
def call_qwen(prompt: str, api_key: str) -> str:
response = requests.post(
"https://openrouter.ai/api/v1/chat/completions",
headers={
"Authorization": f"Bearer {api_key}",
"Content-Type": "application/json",
},
json={
"model": "qwen/qwen3.6-plus-preview:free",
"messages": [{"role": "user", "content": prompt}],
},
timeout=60,
)
response.raise_for_status()
return response.json()["choices"][0]["message"]["content"]
result = call_qwen(
"JWTトークンを解析し、ペイロードを返すPython関数を記述してください。",
api_key="sk-or-v1-YOUR_KEY_HERE"
)
print(result)
Node.js (fetch):
async function callQwen(prompt, apiKey) {
const response = await fetch("https://openrouter.ai/api/v1/chat/completions", {
method: "POST",
headers: {
"Authorization": `Bearer ${apiKey}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
model: "qwen/qwen3.6-plus-preview:free",
messages: [{ role: "user", content: prompt }],
}),
});
if (!response.ok) {
throw new Error(`OpenRouter error: ${response.status} ${await response.text()}`);
}
const data = await response.json();
return data.choices[0].message.content;
}
callQwen(
"メールアドレスを検証するJavaScript関数を記述してください。",
"sk-or-v1-YOUR_KEY_HERE"
).then(console.log);
OpenAI SDKを使用したPython:
OpenAI Python SDKをすでに使用している場合、他の変更なしでOpenRouterを指すようにできます。
from openai import OpenAI
client = OpenAI(
base_url="https://openrouter.ai/api/v1",
api_key="sk-or-v1-YOUR_KEY_HERE",
)
response = client.chat.completions.create(
model="qwen/qwen3.6-plus-preview:free",
messages=[
{
"role": "system",
"content": "あなたはベテランのバックエンドエンジニアです。クリーンで本番環境対応のコードを記述してください。"
},
{
"role": "user",
"content": "指数関数的バックオフを使用して、失敗したHTTPリクエストを最大3回再試行するPython関数を記述してください。"
}
],
)
print(response.choices[0].message.content)
ツール使用とエージェントワークフロー
ツール使用は、Qwen 3.6が無料ティアで際立つ点です。動作する例を次に示します。
from openai import OpenAI
import json
client = OpenAI(
base_url="https://openrouter.ai/api/v1",
api_key="sk-or-v1-YOUR_KEY_HERE",
)
# モデルで利用可能なツールを定義します
tools = [
{
"type": "function",
"function": {
"name": "search_api_docs",
"description": "特定のエンドポイントまたはパラメーターのAPIドキュメントを検索します",
"parameters": {
"type": "object",
"properties": {
"query": {
"type": "string",
"description": "検索クエリ"
},
"version": {
"type": "string",
"enum": ["v1", "v2", "v3"],
"description": "検索するAPIバージョン"
}
},
"required": ["query"]
}
}
},
{
"type": "function",
"function": {
"name": "run_api_test",
"description": "APIエンドポイントに対してテストリクエストを実行します",
"parameters": {
"type": "object",
"properties": {
"endpoint": {"type": "string"},
"method": {"type": "string", "enum": ["GET", "POST", "PUT", "DELETE"]},
"body": {"type": "object"}
},
"required": ["endpoint", "method"]
}
}
}
]
messages = [
{
"role": "user",
"content": "/usersエンドポイントのドキュメントを見つけて、それに対してテストGETリクエストを実行してください。"
}
]
response = client.chat.completions.create(
model="qwen/qwen3.6-plus-preview:free",
messages=messages,
tools=tools,
tool_choice="auto",
)
message = response.choices[0].message
# モデルがツールを呼び出したいかどうかを確認します
if message.tool_calls:
for tool_call in message.tool_calls:
print(f"Tool: {tool_call.function.name}")
args = json.loads(tool_call.function.arguments)
print(f"Arguments: {json.dumps(args, indent=2)}")
else:
print(message.content)
モデルは、自由形式の応答を幻覚するのではなく、構造化された関数呼び出しを生成します。その後、あなたは自分のコードでその関数を実行し、結果を次のターンでフィードバックします。
このようにして、多段階のエージェントワークフローが構築されます。モデルがツールを呼び出し、あなたのコードがそれらを実行し、タスクが完了するまでループします。
100万トークンのコンテキストウィンドウを使用する
1Mトークンのコンテキストは、単純な質問には役立ちません。これは、モデルに大量のコンテキストを一度に与える必要があるタスク向けに設計されています。
これが実際に重要となる3つのパターンを以下に示します。
コードベース全体レビュー
コードベース全体(トークン制限内)をモデルに提供し、セキュリティの問題、一貫性のないパターン、または文書化されていない関数を特定するよう依頼します。
import os
from pathlib import Path
from openai import OpenAI
client = OpenAI(
base_url="https://openrouter.ai/api/v1",
api_key="sk-or-v1-YOUR_KEY_HERE",
)
def load_codebase(directory: str, extensions: list[str]) -> str:
"""ディレクトリからすべてのソースファイルを1つの文字列に読み込みます。"""
content_parts = []
for path in Path(directory).rglob("*"):
if path.suffix in extensions and path.is_file():
try:
text = path.read_text(encoding="utf-8", errors="ignore")
content_parts.append(f"--- FILE: {path} ---\n{text}\n")
except Exception:
continue
return "\n".join(content_parts)
codebase = load_codebase("./src", [".py", ".js", ".ts"])
response = client.chat.completions.create(
model="qwen/qwen3.6-plus-preview:free",
messages=[
{
"role": "user",
"content": f"このコードベースをレビューし、以下を特定してください。\n1. セキュリティ脆弱性\n2. エラー処理がない関数\n3. 一貫性のない命名規則\n\nコードベース:\n{codebase}"
}
],
)
print(response.choices[0].message.content)
大規模なドキュメント分析
長い法的文書、財務報告書、または研究論文を渡し、それについて具体的な質問をします。
with open("annual_report_2025.txt", "r") as f:
document = f.read()
response = client.chat.completions.create(
model="qwen/qwen3.6-plus-preview:free",
messages=[
{
"role": "user",
"content": f"このドキュメントから、APIレート制限と料金変更に関するすべての言及を抽出してください。\n\n{document}"
}
],
)
完全な履歴を含む複数ターン会話
長いデバッグセッションや技術面接に役立つ、会話履歴全体を切り捨てることなくコンテキストに保持します。
conversation = []
def chat(user_message: str) -> str:
conversation.append({"role": "user", "content": user_message})
response = client.chat.completions.create(
model="qwen/qwen3.6-plus-preview:free",
messages=conversation,
)
assistant_message = response.choices[0].message.content
conversation.append({"role": "assistant", "content": assistant_message})
return assistant_message
# 長いやり取りのデバッグセッション
print(chat("GitHub APIから401エラーが出ています。コードはこれです..."))
print(chat("トークンを追加しましたが、今度は403エラーが出ます。トークンにはリポジトリスコープがあります。"))
print(chat("リポジトリはプライベートです。実際に必要なスコープは何ですか?"))
ApidogでOpenRouter APIリクエストをテストする
OpenRouter APIの上に構築している場合、失敗したリクエストのデバッグはすぐに面倒になります。HTTPリクエストを作成し、JSONレスポンスを確認し、プロンプトを繰り返し修正する必要があります。これをコマンドラインやPostmanから行うのは時間がかかります。

Apidogはここで試す価値があります。これは、リクエストの構築、レスポンスの検査、テストの自動化を1か所で処理する無料のAPIクライアントです。
ApidogでQwen 3.6エンドポイントをテストするには:
https://openrouter.ai/api/v1/chat/completionsへの新しいPOSTリクエストを作成しますAuthorization: Bearer sk-or-v1-...ヘッダーを追加します- ボディを
modelおよびmessagesフィールドを含むJSONに設定します - リクエストを送信し、レスポンスを検査します
これをコレクションとして保存したり、モデルIDを切り替えて出力を比較したり、レスポンス構造をチェックする自動テストを作成したり、choices[0].message.contentが空でないことを確認したり、ツール呼び出しに期待される関数名が含まれていることをアサートしたりできます。
OpenRouterを呼び出すアプリを構築している場合、Apidogでいくつかのリクエストテストを早期に作成することで、モデルが予期しない動作をしたときに時間を節約できます。
この上に構築する前に知っておくべき無料ティアの制限
Qwen 3.6は現在無料です。これは永久に続くわけではなく、計画すべき実用的な制約があります。
レート制限は共有されます。 OpenRouterの無料モデルは、すべてのユーザー間で容量を共有します。ピーク時(通常、米国の夕方)には、より高いレイテンシと時折のレート制限エラーが発生します。本番コードにはリトライロジックを組み込んでください。
import time
import requests
from requests.adapters import HTTPAdapter
from urllib3.util.retry import Retry
session = requests.Session()
retry_strategy = Retry(
total=3,
backoff_factor=2,
status_forcelist=[429, 500, 502, 503, 504],
)
adapter = HTTPAdapter(max_retries=retry_strategy)
session.mount("https://", adapter)
response = session.post(
"https://openrouter.ai/api/v1/chat/completions",
headers={"Authorization": "Bearer sk-or-v1-YOUR_KEY_HERE"},
json={
"model": "qwen/qwen3.6-plus-preview:free",
"messages": [{"role": "user", "content": "こんにちは"}],
},
timeout=30,
)
データはログに記録されます。 OpenRouterのモデルページには、「モデルはプロンプトと完了データを収集し、モデルの改善に使用できます」と記載されています。APIキー、パスワード、または個人を特定できる情報をこのエンドポイントを通じて送信しないでください。
プレビュー状態。 これはプレビューリリースです。モデルの動作が変更される可能性があります。本番推論で使用する場合は、現在のモデルIDに統合テストを固定し、回帰がないか監視してください。
テキストのみ。 Qwen 3.6はテキスト入力を受け取り、テキスト出力を生成します。画像、音声、ファイルアップロードはできません。
実際のユースケース
コードレビューエージェントの構築。 社内PRレビューツールを構築しているチームは、プルリクエストの差分全体(時には10K行以上)をQwen 3.6に渡し、ロジックエラー、欠落しているテスト、セキュリティの問題に関する詳細なフィードバックを得ました。1Mトークンのウィンドウにより、チャンキングなしでそれが可能になりました。
フロントエンドコンポーネント生成。 SaaSダッシュボードを構築している個人開発者は、Qwen 3.6を使用してデザイン仕様からReactコンポーネントを生成しました。このモデルは、複数の修正パスを必要とせずに、適切なプロップタイプとレスポンシブCSSを備えたクリーンなTypeScriptを生成しました。
APIドキュメントの要約。 サードパーティの支払いAPI間で移行しているチームは、両方のAPI(それぞれ約10万トークン)の完全なドキュメントを1つのリクエストで渡し、認証方法、Webhook形式、レート制限のサイドバイサイド比較を求めました。モデルは30秒以内に構造化されたテーブルを返しました。
openrouter.aiでサインアップし、キーを取得して、現在料金を支払っているモデルの代わりにqwen/qwen3.6-plus-preview:freeを交換してください。
よくある質問
Qwen 3.6は本当に無料で利用できますか?
はい。2026年3月現在、このモデルはOpenRouterで100万入力トークンあたり0ドル、100万出力トークンあたり0ドルと記載されています。プレビュー期間が終了すると無料ステータスが変更される可能性があるため、コストがゼロのままであることに依存するものを構築する前に、OpenRouterの料金ページを確認してください。
無料ティアのレート制限は何ですか?
OpenRouterは、無料ティアモデルの正確なレート制限を公開していません。実際には、無料モデルは容量を共有しており、トラフィックが多い時間帯にはスロットリングの対象となります。最初は一度に1つのリクエストから始め、同時実行数を増やす前にリトライロジックを追加してください。
Qwen 3.6を商用プロジェクトで使用できますか?
はい、OpenRouterは商用利用を許可しています。特に成果物を配布する場合は、基盤となるモデル自体の制限について、Alibaba CloudのQwenモデルライセンスを確認してください。
Qwen 3.6は他のモデルよりも応答に時間がかかるのはなぜですか?
必須の推論トークンがレイテンシを追加します。応答を生成する前に、モデルは内部的な思考連鎖を通じて作業します。単純なプロンプトの場合、これには数秒かかることがあります。複雑な推論タスクの場合、追加のレイテンシはそれに見合う価値があります。部分的な出力を生成中に表示したい場合はストリーミングを使用してください。
推論トークンを無効にする方法はありますか?
現在のプレビュー時点では、推論は必須であり、オフにすることはできません。思考連鎖なしでより速い応答が必要な場合は、利用可能になったときに別のモデルバリアントを試すか、レイテンシに敏感なタスクにはLLaMA 3.1 8Bのようなより小さな無料モデルを使用してください。
1Mトークンのコンテキストウィンドウはコストにどのように影響しますか?
無料ティアでは、影響はありません。送信するトークンの数に関係なく、0ドルを支払います。非常に大きなリクエストは処理に時間がかかり、無料ティアではタイムアウトする可能性があることに注意してください。最初は30~60秒のタイムアウトから始め、10万トークンを超えるリクエストの場合はそれを増やしてください。
