Skip to Content
Руководство для пользователейКонфигурацияПровайдеры моделей

Поставщики моделей

Qwen Code позволяет настроить несколько поставщиков моделей с помощью параметра modelProviders в файле settings.json. Это позволяет переключаться между различными ИИ-моделями и поставщиками с помощью команды /model.

Обзор

Используйте modelProviders, чтобы объявить отобранные списки моделей для каждого типа аутентификации, между которыми может переключаться выборщик моделей /model. Ключи должны быть допустимыми типами аутентификации (openai, anthropic, gemini и т. д.). Каждая запись требует поля id и обязательно должна включать envKey, а также опционально — name, description, baseUrl и generationConfig. Учётные данные никогда не сохраняются в настройках; среда выполнения считывает их из process.env[envKey]. Модели Qwen с OAuth остаются жёстко заданными и не могут быть переопределены.

Note

Только команда /model предоставляет доступ к типам аутентификации, отличным от значения по умолчанию. Anthropic, Gemini и другие должны быть определены через modelProviders. Команда /auth отображает встроенные варианты аутентификации: OAuth Qwen, план Alibaba Cloud Coding и ключ API.

Warning

Дублирующиеся идентификаторы моделей в рамках одного типа аутентификации: Определение нескольких моделей с одинаковым значением id в рамках одного authType (например, две записи с "id": "gpt-4o" в разделе openai) в настоящее время не поддерживается. При наличии дубликатов будет использована первая запись, а последующие дубли будут пропущены с предупреждением. Обратите внимание, что поле id используется как для идентификации конфигурации, так и в качестве фактического имени модели, передаваемого в API, поэтому использование уникальных идентификаторов (например, gpt-4o-creative, gpt-4o-balanced) не является рабочим решением. Это известное ограничение, которое мы планируем устранить в одном из будущих релизов.

Примеры конфигурации в зависимости от типа аутентификации

Ниже приведены подробные примеры конфигурации для различных типов аутентификации с указанием доступных параметров и их комбинаций.

Поддерживаемые типы аутентификации

Ключи объекта modelProviders должны быть допустимыми значениями authType. В настоящее время поддерживаются следующие типы аутентификации:

Тип аутентификацииОписание
openaiAPI, совместимые с OpenAI (OpenAI, Azure OpenAI, локальные серверы вывода, например vLLM/Ollama)
anthropicAPI Anthropic Claude
geminiAPI Google Gemini
qwen-oauthOAuth Qwen (жёстко задано, не может быть переопределено в modelProviders)

[!warning] Если используется недопустимый ключ типа аутентификации (например, опечатка вроде "openai-custom"), конфигурация будет тихо пропущена, и модели не появятся в выборе /model. Всегда используйте один из поддерживаемых типов аутентификации, перечисленных выше.

SDK, используемые для API-запросов

Qwen Code использует следующие официальные SDK для отправки запросов каждому провайдеру:

Тип аутентификацииПакет SDK
openaiopenai — официальный Node.js SDK OpenAI
anthropic@anthropic-ai/sdk — официальный SDK Anthropic
gemini@google/genai — официальный SDK Google GenAI
qwen-oauthopenai с пользовательским провайдером (совместимым с DashScope)

Это означает, что настраиваемый параметр baseUrl должен быть совместим с ожидаемым форматом API соответствующего SDK. Например, при использовании типа аутентификации openai конечная точка должна принимать запросы в формате API OpenAI.

Поставщики, совместимые с OpenAI (openai)

Этот тип аутентификации поддерживает не только официальное API OpenAI, но и любые совместимые с OpenAI конечные точки, включая поставщиков агрегированных моделей, такие как OpenRouter.

{ "modelProviders": { "openai": [ { "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 (через OpenRouter)", "envKey": "OPENROUTER_API_KEY", "baseUrl": "https://openrouter.ai/api/v1", "generationConfig": { "timeout": 120000, "maxRetries": 3, "samplingParams": { "temperature": 0.7 } } } ] } }

Anthropic (anthropic)

{ "modelProviders": { "anthropic": [ { "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)

{ "modelProviders": { "gemini": [ { "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 } } } ] } }

Локальные самостоятельно размещённые модели (через API, совместимое с OpenAI)

Большинство локальных серверов вывода (vLLM, Ollama, LM Studio и др.) предоставляют конечную точку API, совместимую с OpenAI. Настройте их, используя тип аутентификации openai и локальный параметр baseUrl:

{ "modelProviders": { "openai": [ { "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": "Локальная модель (LM Studio)", "envKey": "LMSTUDIO_API_KEY", "baseUrl": "http://localhost:1234/v1", "generationConfig": { "timeout": 60000, "samplingParams": { "temperature": 0.5 } } } ] } }

Для локальных серверов, которым не требуется аутентификация, в качестве значения ключа API можно использовать любое заглушечное значение:

# Для Ollama (аутентификация не требуется) export OLLAMA_API_KEY="ollama" # Для vLLM (если аутентификация не настроена) export VLLM_API_KEY="not-needed"
Note

Параметр extra_body поддерживается только для провайдеров, совместимых с OpenAI (openai, qwen-oauth). Он игнорируется провайдерами Anthropic и Gemini.

План кодирования Alibaba Cloud

План кодирования Alibaba Cloud предоставляет предварительно настроенный набор моделей Qwen, оптимизированных для задач программирования. Эта функция доступна пользователям, имеющим доступ к API Плана кодирования Alibaba Cloud, и обеспечивает упрощённый процесс настройки с автоматическим обновлением конфигурации моделей.

Обзор

При аутентификации с помощью ключа API Alibaba Cloud Coding Plan через команду /auth Qwen Code автоматически настраивает следующие модели:

Идентификатор моделиНазваниеОписание
qwen3.5-plusqwen3.5-plusУсовершенствованная модель с включённым режимом рассуждения
qwen3-coder-plusqwen3-coder-plusОптимизирована для задач программирования
qwen3-max-2026-01-23qwen3-max-2026-01-23Последняя модель max с включённым режимом рассуждения

Настройка

  1. Получите API-ключ Alibaba Cloud Coding Plan:
  2. Выполните команду /auth в Qwen Code
  3. Выберите Alibaba Cloud Coding Plan
  4. Выберите свой регион
  5. Введите свой API-ключ при запросе

Модели будут автоматически настроены и добавлены в ваш выбор моделей /model.

Регионы

План кодирования Alibaba Cloud поддерживает два региона:

РегионКонечная точкаОписание
Китайhttps://coding.dashscope.aliyuncs.com/v1Конечная точка для материкового Китая
Глобальный/Международныйhttps://coding-intl.dashscope.aliyuncs.com/v1Международная конечная точка

Регион выбирается во время аутентификации и сохраняется в файле settings.json в параметре codingPlan.region. Чтобы сменить регион, повторно выполните команду /auth и выберите другой регион.

Хранение ключа API

При настройке Coding Plan с помощью команды /auth ключ API сохраняется в зарезервированной переменной окружения BAILIAN_CODING_PLAN_API_KEY. По умолчанию он сохраняется в поле env файла settings.json.

Warning

Рекомендация по безопасности: Для повышения безопасности рекомендуется перенести ключ API из файла settings.json в отдельный файл .env и загружать его как переменную окружения. Например:

# ~/.qwen/.env BAILIAN_CODING_PLAN_API_KEY=ваш-ключ-api-здесь

Затем убедитесь, что этот файл добавлен в ваш .gitignore, если вы используете настройки на уровне проекта.

Автоматические обновления

Конфигурации модели Coding Plan имеют версионность. Когда Qwen Code обнаруживает более новую версию шаблона модели, вам будет предложено выполнить обновление. Принятие обновления приведёт к следующему:

  • Замене существующих конфигураций модели Coding Plan на самые свежие версии
  • Сохранению всех пользовательских конфигураций моделей, добавленных вручную
  • Автоматическому переключению на первую модель в обновлённой конфигурации

Процесс обновления гарантирует, что вы всегда получаете доступ к последним конфигурациям моделей и их возможностям без необходимости ручного вмешательства.

Ручная настройка (расширенный уровень)

Если вы предпочитаете вручную настраивать модели Coding Plan, их можно добавить в файл settings.json, как и любые другие провайдеры, совместимые с OpenAI:

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

При использовании ручной настройки:

  • Для параметра envKey можно использовать любое имя переменной окружения
  • Нет необходимости настраивать параметры codingPlan.*
  • Автоматические обновления не применяются к моделям Coding Plan, настроенным вручную
Warning

Если вы также используете автоматическую настройку Coding Plan, автоматические обновления могут перезаписать ваши ручные настройки, если они используют тот же envKey и baseUrl, что и автоматическая настройка. Чтобы избежать этого, по возможности используйте в ручной настройке отличное имя переменной окружения envKey.

Слои разрешения и атомарность

Эффективные значения аутентификации, модели и учётных данных выбираются для каждого поля в соответствии со следующим приоритетом (первое найденное значение побеждает). Вы можете комбинировать флаг --auth-type с флагом --model, чтобы напрямую указать на запись провайдера; эти флаги CLI выполняются до других слоёв.

Слой (от самого высокого к самому низкому)authTypemodelapiKeybaseUrlapiKeyEnvKeyproxy
Программные переопределения/authВходные данные /authВходные данные /authВходные данные /auth
Выбор провайдера моделиmodelProvider.idenv[modelProvider.envKey]modelProvider.baseUrlmodelProvider.envKey
Аргументы командной строки--auth-type--model--openaiApiKey (или эквиваленты, специфичные для провайдера)--openaiBaseUrl (или эквиваленты, специфичные для провайдера)
Переменные окруженияСопоставление, специфичное для провайдера (например, OPENAI_MODEL)Сопоставление, специфичное для провайдера (например, OPENAI_API_KEY)Сопоставление, специфичное для провайдера (например, OPENAI_BASE_URL)
Настройки (settings.json)security.auth.selectedTypemodel.namesecurity.auth.apiKeysecurity.auth.baseUrl
Значения по умолчанию / вычисленныеИспользуется AuthType.QWEN_OAUTHВстроенное значение по умолчанию (OpenAI ⇒ qwen3-coder-plus)Config.getProxy(), если настроен

*Если присутствуют флаги аутентификации CLI, они переопределяют настройки. В противном случае тип аутентификации определяется значением security.auth.selectedType или неявным значением по умолчанию. Qwen OAuth и OpenAI — единственные типы аутентификации, доступные без дополнительной конфигурации.

Warning

Устаревание параметров security.auth.apiKey и security.auth.baseUrl: Прямая настройка учётных данных API через параметры security.auth.apiKey и security.auth.baseUrl в файле settings.json объявлена устаревшей. Эти параметры использовались в предыдущих версиях для учётных данных, введённых через пользовательский интерфейс, однако поток ввода учётных данных был удалён в версии 0.10.1. Эти поля будут полностью удалены в одной из будущих версий. Настоятельно рекомендуется перейти на использование modelProviders для всех конфигураций моделей и учётных данных. Используйте параметр envKey в modelProviders, чтобы ссылаться на переменные окружения для безопасного управления учётными данными вместо их жёсткого кодирования в файлах настроек.

Слои конфигурации генерации: неизменяемый слой поставщика моделей

Разрешение конфигурации следует строгой многоуровневой модели с одним ключевым правилом: слой modelProvider является неизменяемым.

Как это работает

  1. Когда выбрана модель modelProvider (например, с помощью команды /model, выбирающей модель, настроенную для поставщика):

    • Вся конфигурация generationConfig от поставщика применяется атомарно.
    • Слой поставщика полностью изолирован: нижележащие слои (CLI, переменные окружения, настройки) не участвуют в разрешении generationConfig вообще.
    • Все поля, определённые в modelProviders[].generationConfig, используют значения, заданные поставщиком.
    • Все поля, не определённые поставщиком, устанавливаются в undefined (они не наследуются из настроек).
    • Это гарантирует, что конфигурации поставщиков действуют как полный, самодостаточный «запечатанный пакет».
  2. Когда модель modelProvider НЕ выбрана (например, при использовании флага --model с «сырым» идентификатором модели или при прямом использовании CLI/переменных окружения/настроек):

    • Разрешение переходит к нижележащим слоям.
    • Поля заполняются в порядке: CLI → переменные окружения → настройки → значения по умолчанию.
    • В результате создаётся модель времени выполнения (см. следующий раздел).

Приоритет параметров generationConfig по отдельным полям

ПриоритетИсточникПоведение
1Программные переопределенияИзменения в режиме выполнения через /model, /auth
2modelProviders[authType][].generationConfigНепроницаемый уровень — полностью заменяет все поля generationConfig; уровни ниже не участвуют
3settings.model.generationConfigИспользуется только для моделей времени выполнения (когда не выбрана модель провайдера)
4Стандартные значения генератора контентаСтандартные значения, специфичные для провайдера (например, OpenAI или Gemini) — применяются только к моделям времени выполнения

Обработка атомарных полей

Следующие поля рассматриваются как атомарные объекты: значения провайдера полностью заменяют весь объект, слияние не выполняется:

  • samplingParams — температура, 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": [{ "id": "gpt-4o", "envKey": "OPENAI_API_KEY", "generationConfig": { "timeout": 60000, "samplingParams": { "temperature": 0.2 } } }] } }

Когда gpt-4o выбран из modelProviders:

  • timeout = 60000 (из провайдера, переопределяет настройки);
  • samplingParams.temperature = 0.2 (из провайдера, полностью заменяет объект настроек);
  • samplingParams.max_tokens = undefined (не определено в провайдере, а слой провайдеров не наследует значения из настроек — поля явно устанавливаются в undefined, если они не указаны).

При использовании модели напрямую через флаг --model gpt-4 (не из modelProviders, создаётся модель во время выполнения):

  • timeout = 30000 (из настроек);
  • samplingParams.temperature = 0.5 (из настроек);
  • samplingParams.max_tokens = 1000 (из настроек).

Стратегия объединения для modelProviders — ЗАМЕНА: весь раздел modelProviders из проектных настроек полностью заменит соответствующий раздел в пользовательских настройках, а не объединит их.

Модели провайдеров и модели среды выполнения

Qwen Code различает два типа конфигураций моделей:

Модель провайдера

  • Определяется в конфигурации modelProviders.
  • Имеет полный, атомарный набор параметров.
  • При выборе её конфигурация применяется как непроницаемый слой.
  • Отображается в списке команды /model со всей метаинформацией (имя, описание, возможности).
  • Рекомендуется для рабочих процессов с несколькими моделями и обеспечения согласованности в команде.

Модель среды выполнения

  • Создаётся динамически при использовании «сырых» идентификаторов моделей через CLI (--model), переменные окружения или настройки.
  • Не определена в modelProviders.
  • Конфигурация формируется путём «проекции» через уровни разрешения (CLI → переменные окружения → настройки → значения по умолчанию).
  • Автоматически сохраняется как RuntimeModelSnapshot, когда обнаруживается полная конфигурация.
  • Позволяет повторно использовать модель без повторного ввода учётных данных.

Жизненный цикл RuntimeModelSnapshot

При настройке модели без использования параметра modelProviders Qwen Code автоматически создаёт объект RuntimeModelSnapshot, чтобы сохранить вашу конфигурацию:

# Эта команда создаёт RuntimeModelSnapshot с идентификатором: $runtime|openai|my-custom-model qwen --auth-type openai --model my-custom-model --openaiApiKey $KEY --openaiBaseUrl https://api.example.com/v1

Снимок:

  • Фиксирует идентификатор модели, ключ API, базовый URL и конфигурацию генерации
  • Сохраняется между сеансами (хранится в памяти во время выполнения)
  • Отображается в списке команды /model как вариант для выполнения
  • Может быть выбран с помощью команды /model $runtime|openai|my-custom-model

Ключевые различия

АспектМодель провайдераМодель среды выполнения
Источник конфигурацииmodelProviders в настройкахCLI, переменные окружения, уровни настроек
Атомарность конфигурацииПолный, неизменяемый пакетСлоистая: каждое поле разрешается независимо
Повторное использованиеВсегда доступно в списке /modelСохраняется как снимок; отображается при полном заполнении
Совместное использование в командеДа (через зафиксированные настройки)Нет (локально для пользователя)
Хранение учётных данныхТолько ссылка через envKeyМожет содержать фактический ключ в снимке

Когда использовать каждый из них

  • Используйте модели провайдера, когда: у вас есть стандартные модели, общие для всей команды, необходима согласованная конфигурация или вы хотите предотвратить случайную перезапись параметров
  • Используйте модели времени выполнения, когда: быстро тестируете новую модель, используете временные учётные данные или работаете с разовыми конечными точками

Сохранение выбора модели и рекомендации

Important

Всегда определяйте modelProviders в пользовательском файле настроек ~/.qwen/settings.json, если это возможно, и избегайте сохранения переопределений учётных данных в любом другом контексте. Размещение каталога поставщиков моделей в пользовательских настройках предотвращает конфликты слияния и переопределения между проектным и пользовательским контекстами и гарантирует, что обновления через /auth и /model всегда записываются в согласованный контекст.

  • Команды /model и /auth сохраняют model.name (если применимо) и security.auth.selectedType в ближайший доступный для записи контекст, в котором уже определён параметр modelProviders; в противном случае они используют пользовательский контекст по умолчанию. Это обеспечивает синхронизацию файлов рабочей области и пользователя с активным каталогом поставщиков.
  • При отсутствии modelProviders резолвер объединяет слои CLI/переменных окружения/настроек, создавая модели времени выполнения (Runtime Models). Это допустимо при использовании одного поставщика, но неудобно при частой смене поставщиков. Определяйте каталоги поставщиков всякий раз, когда часто используются многомодельные рабочие процессы — это делает переключения атомарными, привязанными к источнику и удобными для отладки.
Last updated on