Вызов Qwen3.7 Plus через OpenAI SDK в совместимом режиме DashScope
23 июля 2026 г. · 27 мин чтения · Claude / GPT / Gemini

Qwen3.7 Plus достаточно дешев, чтобы тестировать его всерьез: по состоянию на 23 июля 2026 года Qwen Cloud указывает цену qwen3.7-plus как $0.40 за 1 млн входных токенов и $1.60 за 1 млн выходных токенов при объеме до 256K входных токенов, затем $1.20 за входные и $4.80 за выходные токены в диапазоне от 256K до 1M (цены Qwen Cloud). Это главная причина, почему такой порт стоит сделать до того, как вы начнете что-то переписывать.
Самое полезное здесь — форма API. Qwen Cloud документирует OpenAI-совместимый endpoint Chat Completions по адресу:
https://dashscope-intl.aliyuncs.com/compatible-mode/v1
На собственной странице миграции сказано, что существующий код для OpenAI SDK можно переключить, изменив base_url, api_key и model, а в примерах используется model="qwen3.7-plus" (совместимость Qwen Cloud с OpenAI). Это значит, что большинство чат-приложений, eval-скриптов, небольших агентов и внутренних инструментов можно перенести за минуты. Внимания требуют параметры thinking, игнорируемые поля OpenAI, тарификация длинного контекста и поведение кэша.

1. Настройте клиент
Установите официальный Python SDK OpenAI:
python -m pip install --upgrade openai
Задайте ключ DashScope:
export DASHSCOPE_API_KEY="sk-your-dashscope-key"
Затем выполните минимальный возможный вызов Chat Completions:
# qwen_chat.py
import os
from openai import OpenAI
client = OpenAI(
api_key=os.environ["DASHSCOPE_API_KEY"],
base_url="https://dashscope-intl.aliyuncs.com/compatible-mode/v1",
)
completion = client.chat.completions.create(
model="qwen3.7-plus",
messages=[
{"role": "system", "content": "You are a concise senior Python engineer."},
{"role": "user", "content": "Write a Python function that chunks a list into size-n batches."},
],
temperature=0.2,
)
print(completion.choices[0].message.content)
print(completion.usage)
Запустите его:
python qwen_chat.py
Та же схема работает в Node. На странице быстрой миграции Qwen Cloud для JavaScript SDK также показаны baseURL: "https://dashscope-intl.aliyuncs.com/compatible-mode/v1" и model: "qwen3.7-plus" (совместимость Qwen Cloud с OpenAI).
Если вы поддерживаете код, который переключается между провайдерами, держите настройки провайдера вне места вызова:
PROVIDERS = {
"qwen": {
"api_key_env": "DASHSCOPE_API_KEY",
"base_url": "https://dashscope-intl.aliyuncs.com/compatible-mode/v1",
"model": "qwen3.7-plus",
}
}
def make_client(provider_name: str) -> tuple[OpenAI, str]:
cfg = PROVIDERS[provider_name]
return (
OpenAI(
api_key=os.environ[cfg["api_key_env"]],
base_url=cfg["base_url"],
),
cfg["model"],
)
Сам OpenAI SDK поддерживает base_url, пользовательские таймауты, повторы и доступ к raw-ответам; в README описаны автоматические повторы при ошибках соединения, а также ошибках 408, 409, 429 и 500-го уровня, плюс параметры max_retries и timeout (openai-python).
2. Перенесите параметры, а не только URL
Счастливый путь прост. Острые углы — в различиях параметров.
Qwen Cloud говорит, что Chat Completions API в целом совместим с Chat API OpenAI, но Qwen-специфичные параметры в Python SDK нужно передавать через extra_body (совместимость Qwen Cloud с OpenAI). Это важно для thinking, поиска и некоторых настроек sampling.
Пример с включенным thinking:
import os
from openai import OpenAI
client = OpenAI(
api_key=os.environ["DASHSCOPE_API_KEY"],
base_url="https://dashscope-intl.aliyuncs.com/compatible-mode/v1",
)
stream = client.chat.completions.create(
model="qwen3.7-plus",
messages=[
{"role": "user", "content": "Find the bug in this retry loop and explain the fix."}
],
extra_body={
"enable_thinking": True,
"thinking_budget": 500,
},
stream=True,
)
for chunk in stream:
if not chunk.choices:
continue
delta = chunk.choices[0].delta
if getattr(delta, "reasoning_content", None):
print(delta.reasoning_content, end="", flush=True)
if getattr(delta, "content", None):
print(delta.content, end="", flush=True)
В гайде Qwen по thinking сказано, что enable_thinking включает reasoning для гибридных моделей, thinking_budget ограничивает токены thinking, а токены thinking тарифицируются как выходные токены (Qwen Cloud thinking). Именно последний пункт разработчики часто упускают. Модель, которая «думает» 2 000 токенов перед тем, как написать ответ на 300 токенов, — это не вызов с 300 выходными токенами.
Также проверьте неподдерживаемые поля OpenAI перед переносом production-кода. Qwen Cloud сообщает, что поля, включая reasoning_effort, max_completion_tokens, metadata, store, verbosity, prompt_cache_key и ряд других, молча игнорируются в совместимом режиме Chat Completions (совместимость Qwen Cloud с OpenAI). Если ваше OpenAI-приложение зависит от одного из этих полей для контроля стоимости или поведения продукта, замените его явно.
3. Оцените стоимость длинного контекста до отправки
Разделение тарифов для qwen3.7-plus простое, но с последствиями.
| Входные токены в одном запросе | Цена входа / 1M | Цена выхода / 1M |
|---|---|---|
| ≤ 256K | $0.40 | $1.60 |
| 256K to 1M | $1.20 | $4.80 |
Источник: цены Qwen Cloud.
Страница модели в маркетплейсе для снапшота от 26 мая указывает qwen3.7-plus-2026-05-26 как модель с текстовым, image- и video-входом и текстовым выходом, а также определяет ее как снапшот от 26 мая 2026 года (страница модели Qwen Cloud). В changelog Qwen Cloud отдельно перечислены qwen3.7-plus и qwen3.7-plus-2026-05-26 под датой 1 июня 2026 года, а серия Plus описана как добавляющая улучшенные vision-language-возможности при сохранении сценариев для coding, tool use и продуктивных workflow (релизы моделей Qwen Cloud).
Для продуктового кода добавьте предварительную оценку. Вам не нужна идеальная токенизация, чтобы предотвратить случайную отправку запросов на 900K токенов в дорогой тарифный уровень.
def estimate_qwen37_plus_cost(input_tokens: int, output_tokens: int) -> float:
if input_tokens <= 256_000:
input_per_m = 0.40
output_per_m = 1.60
else:
input_per_m = 1.20
output_per_m = 4.80
return (input_tokens / 1_000_000 * input_per_m) + (
output_tokens / 1_000_000 * output_per_m
)
print(estimate_qwen37_plus_cost(180_000, 4_000)) # 0.0784
print(estimate_qwen37_plus_cost(400_000, 4_000)) # 0.4992
Второй вызов — это не просто «немного больше контекста». Он пересекает границу тарифного уровня.

4. Используйте кэш, когда префиксы повторяются
Кэширование контекста — место, где Qwen может стать заметно дешевле для повторяющихся длинных промптов. Qwen Cloud документирует три режима кэша: explicit, implicit и session cache (кэш контекста Qwen Cloud).
Правила биллинга конкретные:
| Режим кэша | Стоимость создания | Стоимость hit | Минимум кэшируемых токенов |
|---|---|---|---|
| Explicit cache | 125% от стандартной цены входа | 10% от стандартной цены входа | 1,024 |
| Implicit cache | 100% от стандартной цены входа | 20% от стандартной цены входа | 256 |
| Session cache | 125% от стандартной цены входа | 10% от стандартной цены входа | 1,024 |
Для qwen3.7-plus на уровне ≤256K это соответствует $0.08 за 1 млн токенов при hit implicit-cache, $0.50 за 1 млн токенов создания explicit-cache и $0.04 за 1 млн токенов чтения explicit-cache на странице модели (страница модели Qwen Cloud).
Используйте кэш для стабильных префиксов: документов с политиками, длинных system prompts, руководств по инструментам, схем или сводок репозитория. Не рассчитывайте, что он спасет промпты, где каждый запрос начинается по-разному. Qwen Cloud также указывает, что скидки Batch и cache нельзя совмещать в одном запросе (цены Qwen Cloud).
5. Production-чеклист и вариант с gateway
Перед переключением трафика проверьте такие случаи:
- Базовый non-streaming chat.
- Streaming chat.
- Режим thinking с
extra_body. - Tool calling, если ваше приложение использует functions.
- JSON-вывод, помня, что совместимый режим Qwen поддерживает
json_object, а не OpenAIjson_schema. - Длинные промпты рядом с 256K входных токенов.
- Вызовы с повторяющимся префиксом, активно использующие кэш.
- Поведение повторов и таймаутов.
Для fallback-маршрутизации между семействами моделей простой путь — onehop. Измените один base URL OpenAI SDK на https://api.onehop.ai/v1 и используйте один gateway для GPT, Claude, Gemini и других моделей. OneHop документирует OpenAI-совместимый endpoint https://api.onehop.ai/v1, Anthropic-совместимый https://api.onehop.ai/anthropic и Vertex/Gemini-совместимый https://api.onehop.ai/vertex-ai (документация onehop). Он также позиционируется как более дешевый, чем first-party, а новые аккаунты получают $10 бесплатно без необходимости указывать карту.
import os
from openai import OpenAI
client = OpenAI(
api_key=os.environ["ONEHOP_API_KEY"],
base_url="https://api.onehop.ai/v1",
)
response = client.chat.completions.create(
model="openai/gpt-5.5",
messages=[{"role": "user", "content": "Summarize this incident report in 5 bullets."}],
)
print(response.choices[0].message.content)
Это не заменяет Qwen-специфичную работу выше. Это дает более чистый маршрут, когда вашему приложению нужен Claude для одного workflow, GPT для другого и Gemini для мультимодальных тестов — без подключения трех биллинговых систем и трех конфигураций SDK. Начните здесь, чтобы вызывать Claude и другие модели через onehop, или зарегистрируйтесь и получите $10 бесплатного кредита.
6. Практический перенос
Перенос — это три строки, пока все не становится сложнее: base_url, api_key, model. После этого реальная работа — убрать игнорируемые параметры OpenAI, перенести настройки Qwen в extra_body и поставить жесткие ограничения вокруг длинного контекста.
Используйте qwen3.7-plus, когда вам нужна сбалансированная модель стоимости с длинным контекстом и поддержкой мультимодального входа. Оставляйте thinking выключенным для простой extraction и classification. Включайте его для code review, оркестрации инструментов или многошагового reasoning, задавая thinking_budget, чтобы стоимость не уплывала. Кэшируйте стабильные префиксы. Следите за границей уровня 256K.
Командам, которым в том же продукте также нужны Claude, GPT или Gemini, стоит держать готовым путь через gateway: вызывайте Claude и другие модели через onehop, а затем зарегистрируйтесь и получите $10 бесплатного кредита, когда захотите запустить настоящие smoke tests без добавления карты.
Похожие материалы

Используйте Groq GPT-OSS 120B с OpenAI SDK: базовый URL, цены и кэширование
Замените base URL в OpenAI SDK, запускайте GPT-OSS 120B на Groq, оценивайте стоимость кэшированных токенов и избегайте сюрпризов с оплатой инструментов.
17 июня 2026 г. · 26 мин чтения

Вызов Gemini API через OpenAI SDK: руководство по миграции с заменой только base_url, API Key и имени модели
Чек-лист миграции на совместимый интерфейс Gemini для проектов на OpenAI SDK: код, сопоставление параметров и цены.
14 июня 2026 г. · 9 мин чтения

Вызов Gemini API через OpenAI SDK: руководство по подключению с изменением только base_url, key и имени модели
Подключение Gemini к существующему коду на OpenAI SDK: минимально нужно изменить всего три настройки.
14 июня 2026 г. · 9 мин чтения