Kembali ke semua artikel
Panduan

Memanggil Qwen3.7 Plus dengan OpenAI SDK melalui DashScope Compatible Mode

23 Juli 2026 · 27 menit baca · Claude / GPT / Gemini

Sampul editorial berlatar krem yang menampilkan terminal developer terhubung oleh tiga garis routing terakota ke a berlabel

Qwen3.7 Plus cukup murah untuk diuji secara serius: per 23 Juli 2026, Qwen Cloud mencantumkan qwen3.7-plus seharga $0.40 per 1 juta token input dan $1.60 per 1 juta token output hingga 256K token input, lalu $1.20 untuk input dan $4.80 untuk output dari 256K hingga 1 juta (harga Qwen Cloud). Itulah alasan utama porting ini layak dilakukan sebelum Anda menulis ulang apa pun.

Bagian yang berguna adalah bentuk API-nya. Qwen Cloud mendokumentasikan endpoint Chat Completions yang kompatibel dengan OpenAI di:

https://dashscope-intl.aliyuncs.com/compatible-mode/v1

Halaman migrasinya sendiri menyebutkan bahwa kode OpenAI SDK yang sudah ada dapat beralih dengan mengubah base_url, api_key, dan model, dan contoh-contohnya menggunakan model="qwen3.7-plus" (kompatibilitas OpenAI Qwen Cloud). Artinya, sebagian besar aplikasi chat, skrip eval, agent kecil, dan tool internal bisa di-port dalam hitungan menit. Bagian yang perlu diperhatikan adalah parameter thinking, field OpenAI yang diabaikan, harga konteks panjang, dan perilaku cache.

Diagram migrasi sebelum-dan-sesudah yang menunjukkan aplikasi OpenAI SDK di kiri hanya mengubah api_key, base_url, dan model menjadi r

1. Siapkan Client

Instal OpenAI Python SDK resmi:

python -m pip install --upgrade openai

Set key DashScope Anda:

export DASHSCOPE_API_KEY="sk-your-dashscope-key"

Lalu buat panggilan Chat Completions paling minimal:

# 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)

Jalankan:

python qwen_chat.py

Pola yang sama bekerja di Node. Halaman migrasi cepat Qwen Cloud juga menampilkan baseURL: "https://dashscope-intl.aliyuncs.com/compatible-mode/v1" dengan model: "qwen3.7-plus" untuk JavaScript SDK (kompatibilitas OpenAI Qwen Cloud).

Jika Anda mengelola kode yang berpindah antar-provider, simpan pengaturan provider di luar call site:

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 sendiri mendukung base_url, timeout kustom, retry, dan akses raw response; README-nya mendokumentasikan retry otomatis untuk error koneksi, 408, 409, 429, dan error level 500, plus opsi max_retries dan timeout (openai-python).

2. Port Parameter, Bukan Hanya URL

Happy path-nya mudah. Bagian yang kurang mulus adalah perbedaan parameter.

Qwen Cloud mengatakan Chat Completions API sebagian besar kompatibel dengan Chat API milik OpenAI, tetapi parameter khusus Qwen harus diteruskan melalui extra_body di Python SDK (kompatibilitas OpenAI Qwen Cloud). Ini penting untuk thinking, search, dan beberapa kontrol sampling.

Contoh dengan thinking diaktifkan:

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)

Panduan thinking Qwen menyebutkan bahwa enable_thinking mengaktifkan reasoning untuk model hybrid, thinking_budget membatasi token thinking, dan token thinking ditagih sebagai token output (thinking Qwen Cloud). Poin terakhir itulah yang sering terlewat oleh developer. Model yang berpikir selama 2.000 token sebelum menulis jawaban 300 token bukanlah panggilan output 300 token.

Periksa juga field OpenAI yang tidak didukung sebelum mem-port kode production. Qwen Cloud menyebutkan field seperti reasoning_effort, max_completion_tokens, metadata, store, verbosity, prompt_cache_key, dan beberapa lainnya akan diabaikan diam-diam dalam Chat Completions compatible mode (kompatibilitas OpenAI Qwen Cloud). Jika aplikasi OpenAI Anda bergantung pada salah satu field tersebut untuk kontrol biaya atau perilaku produk, gantilah secara eksplisit.

3. Hitung Harga Konteks Panjang Sebelum Mengirimnya

Titik perubahan harga qwen3.7-plus sederhana, tetapi dampaknya nyata.

Token input dalam satu request Harga input / 1 juta Harga output / 1 juta
≤ 256K $0.40 $1.60
256K hingga 1 juta $1.20 $4.80

Sumber: harga Qwen Cloud.

Halaman marketplace model untuk snapshot 26 Mei mencantumkan qwen3.7-plus-2026-05-26 sebagai model input teks, gambar, dan video dengan output teks, serta mengidentifikasinya sebagai snapshot 26 Mei 2026 (halaman model Qwen Cloud). Changelog Qwen Cloud secara terpisah mencantumkan qwen3.7-plus dan qwen3.7-plus-2026-05-26 pada 1 Juni 2026, menjelaskan seri Plus sebagai penambahan kemampuan vision-language yang ditingkatkan sambil tetap mempertahankan coding, tool use, dan workflow produktivitas (rilis model Qwen Cloud).

Untuk kode produk, tambahkan estimator preflight. Anda tidak perlu tokenisasi sempurna untuk mencegah panggilan 900K token yang tidak disengaja masuk ke tier mahal.

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

Panggilan kedua itu bukan sekadar “sedikit lebih banyak konteks.” Ia melewati batas tier.

Grafik harga ringkas yang membandingkan tier token qwen3.7-plus, dengan sumbu x berlabel token input per request dari 0 hingga 1 juta dan sumbu y-

4. Gunakan Cache Saat Prefix Berulang

Context caching adalah area tempat Qwen bisa menjadi jauh lebih murah untuk prompt panjang yang berulang. Qwen Cloud mendokumentasikan tiga mode cache: explicit, implicit, dan session cache (context cache Qwen Cloud).

Aturan billing-nya konkret:

Mode cache Biaya create Biaya hit Minimum token yang di-cache
Explicit cache 125% dari input standar 10% dari input standar 1.024
Implicit cache 100% dari input standar 20% dari input standar 256
Session cache 125% dari input standar 10% dari input standar 1.024

Untuk qwen3.7-plus pada tier ≤256K, ini setara dengan $0.08 per 1 juta token hit implicit-cache, $0.50 per 1 juta token pembuatan explicit-cache, dan $0.04 per 1 juta token baca explicit-cache di halaman model (halaman model Qwen Cloud).

Gunakan cache untuk prefix yang stabil: dokumen kebijakan, system prompt panjang, manual tool, schema, atau ringkasan repo. Jangan berharap cache menyelamatkan prompt ketika setiap request dimulai secara berbeda. Qwen Cloud juga menyatakan diskon Batch dan cache tidak dapat digabungkan pada request yang sama (harga Qwen Cloud).

5. Checklist Production dan Opsi Gateway

Sebelum Anda memindahkan traffic, uji kasus-kasus ini:

  1. Chat non-streaming dasar.
  2. Chat streaming.
  3. Mode thinking dengan extra_body.
  4. Tool calling jika aplikasi Anda menggunakan function.
  5. Output JSON, dengan mengingat bahwa Qwen compatible mode mendukung json_object, bukan json_schema OpenAI.
  6. Prompt panjang mendekati 256K token input.
  7. Panggilan dengan prefix berulang yang banyak memakai cache.
  8. Perilaku retry dan timeout.

Untuk fallback routing lintas keluarga model, onehop adalah jalur yang mudah. Ubah satu base URL OpenAI SDK menjadi https://api.onehop.ai/v1 dan gunakan satu gateway untuk GPT, Claude, Gemini, dan model lain. OneHop mendokumentasikan endpoint yang kompatibel dengan OpenAI https://api.onehop.ai/v1, kompatibel dengan Anthropic https://api.onehop.ai/anthropic, dan kompatibel dengan Vertex/Gemini https://api.onehop.ai/vertex-ai (dokumentasi onehop). Layanan ini juga diposisikan lebih murah daripada first-party, dan akun baru mendapat $10 gratis tanpa perlu kartu.

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)

Itu tidak menggantikan pekerjaan khusus Qwen di atas. Ini memberi Anda jalur yang lebih rapi ketika aplikasi membutuhkan Claude untuk satu workflow, GPT untuk workflow lain, dan Gemini untuk pengujian multimodal tanpa harus merangkai tiga sistem billing dan tiga konfigurasi SDK. Mulai di sini untuk memanggil Claude dan model lain di onehop, atau daftar untuk kredit gratis $10.

6. Porting Praktis

Porting ini hanya tiga baris sampai ternyata tidak: base_url, api_key, model. Setelah itu, pekerjaan sebenarnya adalah menghapus parameter OpenAI yang diabaikan, memindahkan kontrol Qwen ke extra_body, dan memasang guard ketat di sekitar konteks panjang.

Gunakan qwen3.7-plus saat Anda menginginkan model biaya yang seimbang dengan dukungan konteks panjang dan input multimodal. Matikan thinking untuk ekstraksi dan klasifikasi sederhana. Aktifkan untuk code review, orkestrasi tool, atau reasoning multi-langkah, dengan thinking_budget agar biaya tidak meleset. Cache prefix yang stabil. Perhatikan batas tier 256K.

Untuk tim yang juga membutuhkan Claude, GPT, atau Gemini dalam produk yang sama, siapkan jalur gateway: panggil Claude dan model lain di onehop, lalu daftar untuk kredit gratis $10 ketika Anda ingin menjalankan smoke test sungguhan tanpa menambahkan kartu.