DEV Community

Cover image for OpenRouterでQwen 3.6を利用可能:いますぐ使う方法
Akira
Akira

Posted on • Originally published at apidog.com

OpenRouterでQwen 3.6を利用可能:いますぐ使う方法

TL;DR

Qwen 3.6 Plus Previewは2026年3月30日にリリースされ、100万トークンのコンテキストウィンドウ、必須の思考連鎖推論、ツール使用のサポートを備えています。現在、OpenRouterで完全に無料で利用可能です。モデルID qwen/qwen3.6-plus-preview:free をOpenAI互換クライアントで指定するだけで、すぐにリクエストを送信できます。

Apidogを今すぐ試す

静かに登場したモデル

Alibaba CloudはQwen 3.6 Plus Previewを2026年3月30日にリリースしました。派手な発表やウェイティングリストはありません。OpenRouter上で100万トークンあたり0ドルで利用できる新モデルとして登場しました。

OpenRouterのQwen 3.6 Plus Previewのスクリーンショット

リリース直後の2日間で約40万リクエスト、4億トークン以上の完了を処理し、開発者たちからその高速性に注目が集まりました。

この記事では、アカウント設定からAPIキー発行、cURL/Python/Node.jsの動作サンプル、パフォーマンスを最大限活かすための具体的なアドバイスまで、すぐに実装を開始するための情報をまとめています。

💡 AI APIで構築する場合、リクエストのテストやデバッグも不可欠です。Apidogは無料で使え、OpenRouterを含むあらゆるREST APIに対応しています。

このガイドを読めば、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リクエストで処理可能です。

無料モデルで1Mトークン対応はほぼ例外的なスペックです。

2. 推論機能は組み込みで必須

Qwen 3.6は必ず推論トークンを使い、回答前に自動で思考チェーンを生成します。「step by stepで考えて」などの追加指示は不要です。

DeepSeek R1型の思考パターンが、数学だけでなくコーディングや一般的な問題解決まで適用されます。

3. エージェント的なツール呼び出しが信頼性向上

3.5系はツール呼び出しで引数型の誤りや幻覚がありましたが、3.6では大きく改善。多段階ワークフローでの壊れた関数呼び出しが減少します。

特に強いタスクは以下の3つです。

  • エージェント的コーディング(多段階コード生成)
  • フロントエンド開発(HTML/CSS/JavaScriptの自動生成)
  • 複雑な問題解決(長文要約・分析・研究支援)

Qwen 3.6に無料でアクセスする方法

必要なのはOpenRouterアカウントとAPIキーのみ。無料モデルならクレジットカードも不要です。

ステップ1:OpenRouterアカウント作成

openrouter.ai にアクセスし、メールアドレスまたはGoogleアカウントでサインアップ。2分で完了します。

支払い方法の登録は不要。メール認証後すぐにAPIが使えます。

ステップ2:APIキーを発行

  1. 右上のプロフィールアイコンをクリック
  2. ドロップダウンからAPI Keysを選択
  3. Create Keyをクリック
  4. 名前を入力(例:qwen-test)、Createをクリック
  5. 表示されたキー(sk-or-v1-...で始まる)をコピー

OpenRouterのAPIキー生成ページ

このキーは再表示されないので必ず安全に保管してください。

ステップ3:最初のリクエストを送信

モデルIDはqwen/qwen3.6-plus-preview:freeです。OpenAI API互換なので、既存クライアントがそのまま利用可能です。

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関数を記述してください。"
      }
    ]
  }'
Enter fullscreen mode Exit fullscreen mode

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)
Enter fullscreen mode Exit fullscreen mode

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);
Enter fullscreen mode Exit fullscreen mode

OpenAI SDK (Python):

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)
Enter fullscreen mode Exit fullscreen mode

ツール使用とエージェントワークフロー

Qwen 3.6は無料モデルでありながらツール呼び出しに対応しています。以下はOpenAI SDKを使ったサンプルです。

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)
Enter fullscreen mode Exit fullscreen mode

モデルは構造化された関数呼び出しを返し、それを実行して結果を次ターンで渡すことで、多段階のエージェントワークフローを簡単に構築できます。

100万トークンのコンテキストウィンドウを活用する

1Mトークンの大容量コンテキストは、以下のようなシナリオで真価を発揮します。

コードベース全体レビュー

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:
    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)
Enter fullscreen mode Exit fullscreen mode

大規模ドキュメント分析

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}"
        }
    ],
)
Enter fullscreen mode Exit fullscreen mode

長い会話履歴を保持したデバッグや面接

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("リポジトリはプライベートです。実際に必要なスコープは何ですか?"))
Enter fullscreen mode Exit fullscreen mode

ApidogでOpenRouter APIリクエストをテストする

OpenRouter APIでの失敗リクエストのデバッグは手間がかかりがちです。Apidogはリクエスト作成・レスポンス検証・テスト自動化をワンストップで実現できる無料APIクライアントです。

ApidogでOpenRouter APIリクエストをテストする方法のスクリーンショット

ApidogでQwen 3.6エンドポイントをテストする手順:

  1. https://openrouter.ai/api/v1/chat/completions へのPOSTリクエストを作成
  2. Authorization: Bearer sk-or-v1-... ヘッダーを追加
  3. ボディに modelmessages を含むJSONをセット
  4. リクエスト送信→レスポンスを検証

テストコレクション化・モデル比較・自動アサート(例えばchoices[0].message.contentが空でないか、関数名が正しいか等)も可能。OpenRouterアプリを開発する際、早期にテストを整備しておくと運用の手戻りを防げます。

無料ティアの制限と注意点

Qwen 3.6は今は無料ですが、恒久的ではありません。実装時には以下の制約を把握しておきましょう。

レート制限は全ユーザーで共有

無料モデルは全ユーザーで容量共有されるため、ピーク時(米国の夕方など)は高レイテンシやレート制限エラーが発生します。本番コードには必ずリトライロジックを仕込んでください。

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,
)
Enter fullscreen mode Exit fullscreen mode

データはログに記録される

モデルページに「モデルはプロンプトと完了データを収集し、改善に利用」と明記されています。APIキーやパスワード、個人情報は送信しないでください。

プレビュー提供

現状はプレビュー提供のため、仕様変更の可能性があります。本番利用時はモデルIDを固定し、リグレッションテストを運用しましょう。

テキストのみ対応

Qwen 3.6はテキスト入出力のみ。画像・音声・ファイルアップロードは未対応です。

実際のユースケース

  • コードレビューエージェント構築

    社内PRレビューツールで、巨大な差分(1万行超)もQwen 3.6ならチャンキング不要で一括レビュー。ロジックエラーやセキュリティ課題を自動抽出。

  • フロントエンドコンポーネント生成

    SaaSダッシュボード開発で、デザイン指示からReactコンポーネントを自動生成。TypeScript型やレスポンシブCSSも高精度。

  • APIドキュメント比較・要約

    サードパーティAPI移行時、双方の巨大なドキュメントを一括投入し、認証やWebhookなどを比較テーブルで出力。

openrouter.aiでサインアップし、APIキーを発行して、qwen/qwen3.6-plus-preview:freeを指定すればすぐに試せます。

よくある質問

Qwen 3.6は本当に無料で利用できますか?

はい。2026年3月時点でOpenRouterでは100万入力・出力トークンごとに0ドル。プレビュー終了後に無料でなくなる可能性があるので、コスト前提の設計は要注意です。

無料ティアのレート制限は?

OpenRouterは具体的なレート制限値を公開していません。全ユーザーでスロットを共有し、混雑時はスロットリングされます。最初は1リクエストずつ+リトライ実装推奨。

Qwen 3.6を商用プロジェクトで使っていい?

はい。OpenRouterは商用利用を許可しています。ただし成果物を配布する場合は、基盤モデルのライセンス(Alibaba Cloud Qwenモデル)も確認してください。

Qwen 3.6はなぜ他モデルより応答が遅い?

必須推論トークン(思考チェーン)の生成が追加レイテンシとなります。シンプルなプロンプトでも数秒かかることがあります。重い推論が必要な場合はこの遅延が価値に直結します。ストリーミングで部分出力も可能です。

推論トークンを無効化できる?

現時点のプレビューでは不可。思考チェーン不要・高速応答が必要な場合は、今後別バリアントや軽量モデル(例:LLaMA 3.1 8B)を検討してください。

1Mトークンコンテキストのコスト影響は?

無料ティアでは影響なし(0ドル)。ただし極端に大きなリクエストは処理時間が長く、無料ティアではタイムアウトの可能性も。最初は30〜60秒タイムアウトでテストし、10万トークン超では値を調整してください。

Top comments (0)