Skip to Content
ユーザーガイド設定モデルプロバイダー

モデルプロバイダー

Qwen Code では、settings.jsonmodelProviders 設定を使用して複数のモデルプロバイダーを構成できます。これにより、/model コマンドを使用して異なる AI モデルやプロバイダーを切り替えることができます。

概要

modelProviders を使用して、/model ピッカーで切り替え可能な、認証タイプごとのモデルを宣言します。キーは有効な認証タイプ(openaianthropicgemini など)である必要があります。各認証タイプは、protocol フィールドと models フィールド(モデル定義の配列)を持つ ProviderConfig オブジェクトにマッピングされます。models の各エントリには id が必要です。envKeyオプションですが推奨 です(省略した場合、認証タイプのデフォルトの環境変数キー(例:openai の場合は OPENAI_API_KEY)にフォールバックします)。オプションで namedescriptionbaseUrlgenerationConfig を指定できます。認証情報は設定に永続化されず、ランタイムが process.env[envKey] から読み取ります。Qwen OAuth のモデルはハードコードされており、上書きできません。

Note

/model コマンドのみがデフォルト以外の認証タイプを公開します。Anthropic、Gemini などは modelProviders を介して定義する必要があります。/auth コマンドは 3 つのトップレベルのオプションを表示します: Alibaba ModelStudio(サブメニューに Coding Plan、Token Plan、Standard API Key を含む)、Third-party ProvidersCustom Provider。(Qwen OAuth はダイアログエントリとして選択できなくなりました。その無料ティアは 2026-04-15 に廃止されました。)

Note

モデルの一意性: 同じ authType 内のモデルは、id + baseUrl の組み合わせで一意に識別されます。つまり、同じモデル ID(例:"gpt-4o")を、それぞれ異なる baseUrl を持つ限り、単一の authType の下に複数回定義できます。たとえば、1 つは OpenAI を直接指し、もう 1 つはプロキシエンドポイントを指す場合です。2 つのエントリが同じ idbaseUrl を共有する(または両方とも baseUrl を省略する)場合、最初の出現が優先され、後続の重複は警告とともにスキップされます。

認証タイプ別の構成例

以下は、さまざまな認証タイプの包括的な構成例であり、使用可能なパラメータとその組み合わせを示しています。

サポートされている認証タイプ

modelProviders オブジェクトのキーは、有効な authType 値である必要があります。現在サポートされている認証タイプは次のとおりです。

Auth Type説明
openaiOpenAI 互換の API(OpenAI、Azure OpenAI、vLLM/Ollama などのローカル推論サーバー)
anthropicAnthropic Claude API
geminiGoogle Gemini API
qwen-oauthQwen OAuth(ハードコードされており、modelProviders で上書き不可)
vertex-aiGoogle Vertex AI(gemini プロトコルと Vertex AI モードの @google/genai SDK を使用。選択すると GOOGLE_GENAI_USE_VERTEXAI=true が設定されます)

[!warning] 未知の認証タイプキーが使用された場合(例:タイプミスの "openai-custom")、空でないキーはそのまま独自の認証タイプグループとして受け入れられますが、既知のプロトコルにマッピングされないため、そのモデルは意図したとおりに機能せず、/model ピッカーで正しく動作しません。空(空白のみ)のキーのみがスキップされます。常に上記のサポートされている認証タイプ値のいずれかを使用してください。

API リクエストに使用される SDK

Qwen Code は、各プロバイダーにリクエストを送信するために、次の公式 SDK を使用します。

Auth TypeSDK パッケージ
openaiopenai - 公式 OpenAI Node.js SDK
anthropic@anthropic-ai/sdk - 公式 Anthropic SDK
gemini@google/genai - 公式 Google GenAI SDK
qwen-oauthopenai(カスタムプロバイダー、DashScope 互換)

これは、設定する baseUrl が、対応する SDK の期待する API 形式と互換性がある必要があることを意味します。たとえば、openai 認証タイプを使用する場合、エンドポイントは OpenAI API 形式のリクエストを受け入れる必要があります。

OpenAI 互換プロバイダー (openai)

この認証タイプは、OpenAI の公式 API だけでなく、OpenRouter や Requesty などの集約モデルプロバイダーを含む、OpenAI 互換のエンドポイントもサポートしています。

{ "env": { "OPENAI_API_KEY": "sk-your-actual-openai-key-here", "OPENROUTER_API_KEY": "sk-or-your-actual-openrouter-key-here", "REQUESTY_API_KEY": "sk-your-actual-requesty-key-here" }, "modelProviders": { "openai": { "protocol": "openai", "models": [ { "id": "gpt-4o", "name": "GPT-4o", "envKey": "OPENAI_API_KEY", "baseUrl": "https://api.openai.com/v1", "generationConfig": { "timeout": 60000, "maxRetries": 3, "enableCacheControl": true, "contextWindowSize": 128000, "modalities": { "image": true }, "customHeaders": { "X-Client-Request-ID": "req-123" }, "extra_body": { "enable_thinking": true, "service_tier": "priority" }, "samplingParams": { "temperature": 0.2, "top_p": 0.8, "max_tokens": 4096, "presence_penalty": 0.1, "frequency_penalty": 0.1 } } }, { "id": "gpt-4o-mini", "name": "GPT-4o Mini", "envKey": "OPENAI_API_KEY", "baseUrl": "https://api.openai.com/v1", "generationConfig": { "timeout": 30000, "samplingParams": { "temperature": 0.5, "max_tokens": 2048 } } }, { "id": "openai/gpt-4o", "name": "GPT-4o (via OpenRouter)", "envKey": "OPENROUTER_API_KEY", "baseUrl": "https://openrouter.ai/api/v1", "generationConfig": { "timeout": 120000, "maxRetries": 3, "samplingParams": { "temperature": 0.7 } } }, { "id": "openai/gpt-4o-mini", "name": "GPT-4o Mini (via Requesty)", "envKey": "REQUESTY_API_KEY", "baseUrl": "https://router.requesty.ai/v1", "generationConfig": { "timeout": 120000, "maxRetries": 3, "samplingParams": { "temperature": 0.7 } } } ] } } }

Anthropic (anthropic)

{ "env": { "ANTHROPIC_API_KEY": "sk-ant-your-actual-anthropic-key-here" }, "modelProviders": { "anthropic": { "protocol": "anthropic", "models": [ { "id": "claude-3-5-sonnet", "name": "Claude 3.5 Sonnet", "envKey": "ANTHROPIC_API_KEY", "baseUrl": "https://api.anthropic.com/v1", "generationConfig": { "timeout": 120000, "maxRetries": 3, "contextWindowSize": 200000, "samplingParams": { "temperature": 0.7, "max_tokens": 8192, "top_p": 0.9 } } }, { "id": "claude-3-opus", "name": "Claude 3 Opus", "envKey": "ANTHROPIC_API_KEY", "baseUrl": "https://api.anthropic.com/v1", "generationConfig": { "timeout": 180000, "samplingParams": { "temperature": 0.3, "max_tokens": 4096 } } } ] } } }

Google Gemini (gemini)

{ "env": { "GEMINI_API_KEY": "AIza-your-actual-gemini-key-here" }, "modelProviders": { "gemini": { "protocol": "gemini", "models": [ { "id": "gemini-2.0-flash", "name": "Gemini 2.0 Flash", "envKey": "GEMINI_API_KEY", "baseUrl": "https://generativelanguage.googleapis.com", "capabilities": { "vision": true }, "generationConfig": { "timeout": 60000, "maxRetries": 2, "contextWindowSize": 1000000, "schemaCompliance": "auto", "samplingParams": { "temperature": 0.4, "top_p": 0.95, "max_tokens": 8192, "top_k": 40 } } } ] } } }

ローカルセルフホストモデル(OpenAI 互換 API 経由)

ほとんどのローカル推論サーバー(vLLM、Ollama、LM Studio など)は、OpenAI 互換の API エンドポイントを提供しています。これらは openai 認証タイプとローカルの baseUrl を使用して構成します。

{ "env": { "OLLAMA_API_KEY": "ollama", "VLLM_API_KEY": "not-needed", "LMSTUDIO_API_KEY": "lm-studio" }, "modelProviders": { "openai": { "protocol": "openai", "models": [ { "id": "qwen2.5-7b", "name": "Qwen2.5 7B (Ollama)", "envKey": "OLLAMA_API_KEY", "baseUrl": "http://localhost:11434/v1", "generationConfig": { "timeout": 300000, "maxRetries": 1, "contextWindowSize": 32768, "samplingParams": { "temperature": 0.7, "top_p": 0.9, "max_tokens": 4096 } } }, { "id": "llama-3.1-8b", "name": "Llama 3.1 8B (vLLM)", "envKey": "VLLM_API_KEY", "baseUrl": "http://localhost:8000/v1", "generationConfig": { "timeout": 120000, "maxRetries": 2, "contextWindowSize": 128000, "samplingParams": { "temperature": 0.6, "max_tokens": 8192 } } }, { "id": "local-model", "name": "Local Model (LM Studio)", "envKey": "LMSTUDIO_API_KEY", "baseUrl": "http://localhost:1234/v1", "generationConfig": { "timeout": 60000, "samplingParams": { "temperature": 0.5 } } } ] } } }

認証が不要なローカルサーバーの場合、API キーには任意のプレースホルダー値を使用できます。

# For Ollama (no auth required) export OLLAMA_API_KEY="ollama" # For vLLM (if no auth is configured) export VLLM_API_KEY="not-needed"
Note

extra_body パラメータは OpenAI 互換プロバイダー(openaiqwen-oauth)でのみサポートされています。Anthropic および Gemini プロバイダーでは無視されます。

Note

envKey について: envKey フィールドは API キーの値そのものではなく、環境変数の名前 を指定します。この構成を機能させるには、対応する環境変数に実際の API キーが設定されていることを確認する必要があります。これには 2 つの方法があります。

  • 方法 1: .env ファイルを使用する(セキュリティ推奨):
    # ~/.qwen/.env (またはプロジェクトルート) OPENAI_API_KEY=sk-your-actual-key-here
    .gitignore.env を追加して、誤って機密情報をコミットしないようにしてください。
  • 方法 2: settings.jsonenv フィールドを使用する(上記の例のように):
    { "env": { "OPENAI_API_KEY": "sk-your-actual-key-here" } }

各プロバイダーの例には、API キーを構成する方法を示すために env フィールドが含まれています。

Alibaba Cloud Coding Plan

Alibaba Cloud Coding Plan は、コーディングタスクに最適化された、事前構成済みの Qwen モデルセットを提供します。この機能は、Alibaba Cloud Coding Plan API アクセス権を持つユーザーが利用でき、自動モデル構成更新による簡素化された設定エクスペリエンスを提供します。

概要

/auth コマンドを使用して Alibaba Cloud Coding Plan API キーで認証すると、Qwen Code は自動的に以下のモデルを構成します。

モデル ID名前説明
qwen3.5-plusqwen3.5-plus思考機能を有効にした高度なモデル
qwen3.6-plusqwen3.6-plus思考機能を有効にした最新モデル(Pro サブスクリプションのみ)
qwen3.7-plusqwen3.7-plus思考機能を有効にした高度なモデル
qwen3-coder-plusqwen3-coder-plusコーディングタスクに最適化
qwen3-coder-nextqwen3-coder-next実験的なコーディングモデル
qwen3-max-2026-01-23qwen3-max-2026-01-23思考機能を有効にした最新の max モデル
glm-5glm-5思考機能を有効にした GLM モデル
glm-4.7glm-4.7思考機能を有効にした GLM モデル
kimi-k2.5kimi-k2.5思考機能とビジョン/ビデオサポートを備えた Kimi モデル
MiniMax-M2.5MiniMax-M2.5思考機能を有効にした MiniMax モデル

セットアップ

  1. Alibaba Cloud Coding Plan API キーを取得します。
  2. Qwen Code で /auth コマンドを実行します。
  3. Alibaba ModelStudio を選択し、サブメニューから Coding Plan を選択します。
  4. リージョンを選択します。
  5. プロンプトに従って API キーを入力します。

モデルは自動的に構成され、/model ピッカーに追加されます。

リージョン

Alibaba Cloud Coding Plan は 2 つのリージョンをサポートしています。

リージョンエンドポイント説明
中国https://coding.dashscope.aliyuncs.com/v1中国本土のエンドポイント
グローバル/国際https://coding-intl.dashscope.aliyuncs.com/v1国際エンドポイント

リージョンは認証時に選択され、settings.jsonmodelProviders 構成に保存されます。リージョンを切り替えるには、/auth コマンドを再実行し、別のリージョンを選択します。

API キーの保存

/auth コマンドを使用して Coding Plan を構成すると、API キーは予約された環境変数名 BAILIAN_CODING_PLAN_API_KEY を使用して保存されます。デフォルトでは、settings.jsonenv フィールドに保存されます。

Warning

セキュリティ推奨事項: セキュリティを強化するには、API キーを settings.json から別の .env ファイルに移動し、環境変数として読み込むことをお勧めします。例:

# ~/.qwen/.env BAILIAN_CODING_PLAN_API_KEY=your-api-key-here

プロジェクトレベルの設定を使用している場合は、このファイルが .gitignore に追加されていることを確認してください。

自動更新

Coding Plan のモデル構成はバージョン管理されています。Qwen Code がモデルテンプレートの新しいバージョンを検出すると、更新を促すプロンプトが表示されます。更新を受け入れると、以下の処理が行われます。

  • 既存の Coding Plan モデル構成を最新バージョンに置き換えます。
  • 手動で追加したカスタムモデル構成は保持されます。
  • 更新後の構成の最初のモデルに自動的に切り替わります。

この更新プロセスにより、手動での操作なしに、常に最新のモデル構成と機能にアクセスできるようになります。

手動構成(上級者向け)

Coding Plan モデルを手動で構成したい場合は、他の OpenAI 互換プロバイダーと同様に settings.json に追加できます。

{ "modelProviders": { "openai": { "protocol": "openai", "models": [ { "id": "qwen3-coder-plus", "name": "qwen3-coder-plus", "description": "Qwen3-Coder via Alibaba Cloud Coding Plan", "envKey": "YOUR_CUSTOM_ENV_KEY", "baseUrl": "https://coding.dashscope.aliyuncs.com/v1" } ] } } }
Note

手動構成を使用する場合:

  • envKey には任意の環境変数名を使用できます。
  • codingPlan.* を構成する必要はありません。
  • 手動で構成した Coding Plan モデルには 自動更新は適用されません
Warning

自動 Coding Plan 構成も使用している場合、手動構成が自動構成と同じ envKeybaseUrl を使用していると、自動更新によって手動構成が上書きされる可能性があります。これを回避するには、可能であれば手動構成で異なる envKey を使用してください。

解決レイヤーとアトミック性

有効な認証タイプ/モデル/認証情報の値は、以下の優先順位に従ってフィールドごとに選択されます(最初に見つかったものが優先されます)。--auth-type--model と組み合わせてプロバイダーエントリを直接指定できます。これらの CLI フラグは他のレイヤーより先に実行されます。

レイヤー(高い → 低い)authTypemodelapiKeybaseUrlapiKeyEnvKeyproxy
プログラムによるオーバーライド/auth/auth input/auth input/auth input
モデルプロバイダー選択modelProvider.idenv[modelProvider.envKey]modelProvider.baseUrlmodelProvider.envKey
CLI 引数--auth-type--model--openai-api-key(またはプロバイダー固有の同等物)--openai-base-url(またはプロバイダー固有の同等物)
環境変数プロバイダー固有のマッピング(例:OPENAI_MODELプロバイダー固有のマッピング(例:OPENAI_API_KEYプロバイダー固有のマッピング(例:OPENAI_BASE_URL
設定(settings.jsonsecurity.auth.selectedTypemodel.namesecurity.auth.apiKeysecurity.auth.baseUrl
デフォルト / 計算値AuthType.QWEN_OAUTH にフォールバック組み込みデフォルト(OpenAI ⇒ qwen3.5-plusConfig.getProxy()(設定されていれば)
*CLI 認証フラグが存在する場合、設定よりも優先されます。それ以外の場合は、security.auth.selectedType または暗黙のデフォルトによって認証タイプが決定されます。Qwen OAuth と OpenAI は、追加設定なしで利用できる唯一の認証タイプです。
Warning

security.auth.apiKeysecurity.auth.baseUrl の非推奨化: settings.jsonsecurity.auth.apiKeysecurity.auth.baseUrl を直接設定して API 資格情報を構成することは非推奨となりました。これらの設定は、UI から入力された資格情報に使用されていた過去のバージョンで使用されていましたが、バージョン 0.10.1 で資格情報入力フローは削除されました。これらのフィールドは将来のリリースで完全に削除される予定です。すべてのモデルと資格情報の設定には modelProviders への移行を強く推奨します。 設定ファイルに資格情報をハードコーディングする代わりに、modelProvidersenvKey を使用して環境変数を参照し、安全に資格情報を管理してください。

生成設定のレイヤリング:不透過なプロバイダーレイヤー

設定の解決は、厳格なレイヤリングモデルに従い、1つの重要なルールがあります:modelProvider レイヤーは不透過です

仕組み

  1. modelProvider モデルが選択された場合(例:/model コマンドでプロバイダー設定済みモデルを選択):

    • プロバイダーからの generationConfig 全体が アトミックに 適用されます
    • プロバイダーレイヤーは完全に不透過です — 下位レイヤー(CLI、env、settings)は generationConfig の解決にまったく関与しません
    • modelProviders[].generationConfig で定義されたすべてのフィールドはプロバイダーの値を使用します
    • プロバイダーによって 定義されていない すべてのフィールドは undefined に設定されます(settings から継承されません)
    • これにより、プロバイダー設定が完全で自己完結型の「密閉パッケージ」として機能することが保証されます

    モデルが modelProviders にリストされている場合、そのモデルに固有の生成設定はすべて、対応するプロバイダーエントリに配置してください。トップレベルの model.generationConfig の値(contextWindowSizemodalitiescustomHeadersextra_body を含む)は、プロバイダーモデルでは無視されます。それらを適用するには、modelProviders[authType][].generationConfig の下で設定してください。

  2. modelProvider モデルが選択されていない場合(例:--model に raw モデル ID を使用する、または CLI/env/settings を直接使用する):

    • 解決は下位レイヤーにフォールスルーします
    • フィールドは CLI → env → settings → defaults から取り込まれます
    • これにより ランタイムモデル が作成されます(次のセクションを参照)

generationConfig のフィールドごとの優先順位

優先順位ソース動作
1プログラムによるオーバーライドランタイムの /model/auth の変更
2modelProviders[authType][].generationConfig不透過レイヤー - generationConfig のすべてのフィールドを完全に置き換えます。下位レイヤーは関与しません
3settings.model.generationConfigランタイムモデル(プロバイダーモデルが選択されていない場合)でのみ使用されます
4コンテンツジェネレーターのデフォルトプロバイダー固有のデフォルト(例:OpenAI vs Gemini) - ランタイムモデルのみ

アトミックフィールドの扱い

以下のフィールドはアトミックオブジェクトとして扱われます。プロバイダーの値がオブジェクト全体を完全に置き換え、マージは行われません。

  • samplingParams - Temperature, top_p, max_tokens など
  • customHeaders - カスタム HTTP ヘッダー
  • extra_body - 追加のリクエストボディパラメータ

// ユーザー設定 (~/.qwen/settings.json) { "model": { "generationConfig": { "timeout": 30000, "samplingParams": { "temperature": 0.5, "max_tokens": 1000 } } } } // modelProviders 設定 { "modelProviders": { "openai": { "protocol": "openai", "models": [{ "id": "gpt-4o", "envKey": "OPENAI_API_KEY", "generationConfig": { "timeout": 60000, "samplingParams": { "temperature": 0.2 } } }] } } }

gpt-4o が modelProviders から選択された場合:

  • timeout = 60000(プロバイダーからの値、settings を上書き)
  • samplingParams.temperature = 0.2(プロバイダーからの値、settings のオブジェクトを完全に置き換え)
  • samplingParams.max_tokens = undefined(プロバイダーで定義されておらず、プロバイダーレイヤーは settings から継承しません — 提供されていない場合、フィールドは明示的に undefined に設定されます)

raw モデルを --model gpt-4 で使用する場合(modelProviders からのものではなく、ランタイムモデルを作成):

  • timeout = 30000(settings から)
  • samplingParams.temperature = 0.5(settings から)
  • samplingParams.max_tokens = 1000(settings から)

modelProviders 自体のマージ戦略は REPLACE(置換)です。プロジェクト設定からの modelProviders 全体が、ユーザー設定の対応するセクションを、マージではなく上書きします。

推論 / 思考設定

generationConfig のオプションフィールド reasoning は、モデルが応答する前にどれだけ積極的に推論するかを制御します。Anthropic コンバーターと Gemini コンバーターは常にこれを尊重します。OpenAI 互換パイプラインは、generationConfig.samplingParams が設定されている場合を除いて、これを尊重します。下記の「samplingParams との相互作用」に関する注記を参照してください。

{ "modelProviders": { "openai": { "protocol": "openai", "models": [ { "id": "deepseek-v4-pro", "name": "DeepSeek V4 Pro", "baseUrl": "https://api.deepseek.com/v1", "envKey": "DEEPSEEK_API_KEY", "generationConfig": { // 4段階のスケール: // 'low' | 'medium' — DeepSeek ではサーバー側で 'high' にマッピング // 'high' — デフォルトの推論強度 // 'max' — DeepSeek 固有の超強力段階 // または `false` に設定して推論を完全に無効化 "reasoning": { "effort": "max" }, }, }, ], }, }, }

プロバイダーごとの動作

プロトコル / プロバイダーワイヤー形状備考
OpenAI / DeepSeek (api.deepseek.com)平坦な reasoning_effort: <effort> ボディパラメータネストされた設定形状で reasoning.effort が設定されている場合、平坦な reasoning_effort に書き換えられ、'low'/'medium''high' に、'xhigh''max' に正規化されます。これは DeepSeek のサーバー側の後方互換性 を反映しています。トップレベルの samplingParams.reasoning_effort または extra_body.reasoning_effort によるオーバーライドは、この正規化をスキップしてそのまま送信されます。
OpenAI(その他の互換サーバー)reasoning: { effort, ... } をそのまま通過プロバイダーが異なる形状を期待する場合、samplingParams を介して設定します(例:GPT-5/oシリーズの場合は samplingParams.reasoning_effort)。
Anthropic(実際の api.anthropic.comoutput_config: { effort } に加えて effort-2025-11-24 ベータヘッダー実際の Anthropic は 'low'/'medium'/'high' のみを受け入れます。'max''high' に丸められdebugLogger.warn 行が出力されます(ジェネレーターごとに1回)。最大 effort が必要な場合は、それをサポートする DeepSeek 互換エンドポイントに baseURL を切り替えてください。
Anthropicapi.deepseek.com/anthropic同じ output_config: { effort } + ベータヘッダー'max' は変更されずにそのまま渡されます。
Gemini@google/genaithinkingConfig: { includeThoughts: true, thinkingLevel }'low'LOW'high'/'max'HIGH、それ以外 → THINKING_LEVEL_UNSPECIFIED(Gemini に MAX 段階はありません)。

reasoning: false

reasoning: false(リテラルのブール値)を設定すると、すべてのプロバイダーで明示的に思考が無効になります。これは、推論の恩恵を受けない安価なサイドクエリに便利です。これはリクエストレベルでも、request.config.thinkingConfig.includeThoughts: false を介して、1回限りの呼び出し(例:提案生成)で尊重されます。

api.deepseek.com の baseURL の場合、OpenAI パイプラインは、DeepSeek V4+ が必要とする明示的な thinking: { type: 'disabled' } フィールドを出力します。サーバー側のデフォルトは 'enabled' であるため、単に reasoning_effort を省略しても、思考のレイテンシとコストが依然として発生します。セルフホストの DeepSeek バックエンド(sglang/vllm)やその他の OpenAI 互換サーバーは、このフィールドを受け取りません。それらで思考を無効にする必要がある場合は、samplingParams/extra_body を介して thinking: { type: 'disabled' }(または推論フレームワークが公開する任意の設定項目)を注入してください。

samplingParams との相互作用(OpenAI 互換のみ)

Warning

OpenAI 互換プロバイダーで generationConfig.samplingParams が設定されている場合、パイプラインはそれらのキーをそのままワイヤーに送信し、個別の reasoning 注入を完全にスキップします。そのため、{ samplingParams: { temperature: 0.5 }, reasoning: { effort: 'max' } } のような設定は、OpenAI/DeepSeek リクエストで reasoning フィールドを黙ってドロップします。

samplingParams を設定する場合は、その中に推論設定ノブを直接含めてください。DeepSeek の場合は samplingParams.reasoning_effort、GPT-5/oシリーズの場合は samplingParams.reasoning_effort(それらの平坦なフィールド)または samplingParams.reasoning(ネストされたオブジェクト)です。OpenRouter やその他のプロバイダーではフィールド名が異なります。プロバイダーのドキュメントを参照してください。

Anthropic コンバーターと Gemini コンバーターは影響を受けません。これらは samplingParams に関係なく、常に reasoning.effort を直接読み取ります。

budget_tokens

effort と一緒に budget_tokens を含めることで、思考トークンの正確な予算を固定できます。

"reasoning": { "effort": "high", "budget_tokens": 50000 }

Anthropic の場合、これは thinking.budget_tokens になります。OpenAI/DeepSeek の場合、このフィールドは保持されますが、現在サーバー側では無視されます。主要な制御は reasoning_effort です。

プロバイダーモデル vs ランタイムモデル

Qwen Code は、2 種類のモデル設定を区別します。

プロバイダーモデル

  • modelProviders 設定で定義
  • 完全でアトミックな設定パッケージを持つ
  • 選択されると、その設定は不透過レイヤーとして適用される
  • 完全なメタデータ(名前、説明、機能)とともに /model コマンドリストに表示される
  • マルチモデルワークフローとチームの一貫性に推奨

ランタイムモデル

  • CLI(--model)、環境変数、または settings を介して raw モデル ID を使用する際に動的に作成される
  • modelProviders では定義されない
  • 解決レイヤー(CLI → env → settings → defaults)を「投影」して設定が構築される
  • 完全な設定が検出されると、RuntimeModelSnapshot として自動的にキャプチャされる
  • 資格情報を再入力せずに再利用可能

RuntimeModelSnapshot のライフサイクル

modelProviders を使用せずにモデルを設定すると、Qwen Code は自動的に RuntimeModelSnapshot を作成して設定を保存します。

# ID: $runtime|openai|my-custom-model の RuntimeModelSnapshot を作成 qwen --auth-type openai --model my-custom-model --openai-api-key $KEY --openai-base-url https://api.example.com/v1

スナップショットは:

  • モデル ID、API キー、ベース URL、生成設定をキャプチャ
  • セッション間で永続化(ランタイム中はメモリに保存)
  • /model コマンドリストにランタイムオプションとして表示
  • /model $runtime|openai|my-custom-model を使用して切り替え可能

主な違い

側面プロバイダーモデルランタイムモデル
設定ソースsettings 内の modelProvidersCLI、env、settings レイヤー
設定の原子性完全で不透過なパッケージ階層化され、各フィールドが独立して解決される
再利用性/model リストで常に利用可能スナップショットとしてキャプチャ、完全なら表示
チーム共有可能(コミットされた settings 経由)不可(ユーザーローカル)
資格情報の保存envKey 参照のみスナップショットに実際のキーをキャプチャする可能性

それぞれをいつ使用するか

  • プロバイダーモデルを使用する場合: チームで共有する標準モデルがある場合、一貫した設定が必要な場合、または誤ったオーバーライドを防ぎたい場合
  • ランタイムモデルを使用する場合: 新しいモデルをすばやくテストする場合、一時的な資格情報を使用する場合、またはアドホックなエンドポイントを扱う場合

選択の永続化と推奨事項

Important

modelProviders は、可能な限りユーザースコープの ~/.qwen/settings.json で定義し、どのスコープでも資格情報のオーバーライドを永続化しないようにしてください。プロバイダーカタログをユーザー設定に保持することで、プロジェクトスコープとユーザースコープ間のマージ/オーバーライドの競合を防ぎ、/auth/model の更新が常に一貫したスコープに書き戻されることが保証されます。

  • /model/auth は、model.name(該当する場合)と security.auth.selectedType を、すでに modelProviders を定義している最も近い書き込み可能なスコープに永続化します。それ以外の場合はユーザースコープにフォールバックします。これにより、ワークスペース/ユーザーファイルがアクティブなプロバイダーカタログと同期されます。
  • modelProviders がない場合、リゾルバーは CLI/env/settings レイヤーを混在させ、ランタイムモデルを作成します。これは単一プロバイダー設定では問題ありませんが、頻繁に切り替える場合には不便です。マルチモデルワークフローが一般的な場合は、切り替えがアトミックで、ソースに帰属し、デバッグ可能な状態を保つために、プロバイダーカタログを定義してください。
Last updated on