Pilih Auto, TokenLab Verified, atau Official untuk setiap permintaan, dengan harga yang ditampilkan di awal.Lihat yang baru

API DeepSeek V4 untuk Coding: Routing deepseek-v4-pro dan deepseek-v4-flash

·19 September 2026·13 menit baca·Diperbarui 2 Oktober 2026·1565 tampilan
#pemrograman#API AI#TokenLab
API DeepSeek V4 untuk Coding: Routing deepseek-v4-pro dan deepseek-v4-flash

Mengirim setiap langkah sesi coding ke satu model adalah kebijakan routing yang paling mudah, dan biasanya yang paling mahal. Tutorial ini menunjukkan cara menggunakan API DeepSeek V4 untuk coding di TokenLab dengan membagi pekerjaan antara deepseek-v4-pro dan deepseek-v4-flash. Kami membaca kedua catatan model dari API langsung pada 2026-10-03, dan semua informasi di bawah ini berasal dari catatan tersebut serta dokumentasi TokenLab. Anda akan mendapatkan tabel perbandingan, estimasi biaya yang telah dihitung, permintaan pemanggilan tool (tool-calling), kode untuk retry dan fallback, serta pemeriksaan preflight.

Poin Penting

  • Kedua model mencantumkan batas input 1.000.000 token, batas output 384.000 token, dan tiga format permintaan yang sama. Harga adalah perbedaan utama di antara keduanya.
  • Berdasarkan harga daftar, deepseek-v4-pro menelan biaya 4,4 kali lipat dari deepseek-v4-flash per token input dan 3,3 kali lipat per token output.
  • Dalam contoh 20 panggilan kami, merutekan 4 panggilan ke pro dan 16 ke flash menelan biaya sekitar $0,18 di luar jam sibuk (off-peak). Mengirim semua 20 panggilan ke pro menelan biaya sekitar $0,46.
  • Lakukan retry pada 429 setelah Retry-After. Lakukan retry pada 500–504 hanya jika retryable bernilai true. Jangan pernah melakukan retry pada 400, 401, 402, 403, 404, atau 413 tanpa perubahan.
  • Katalog mencantumkan deepseek-v4.1-flash sebagai aktif. Baik deepseek-v4-pro maupun deepseek-v4-flash tidak menyebutkan model pengganti.
  • Baca batas, format, dan harga dari GET /v1/models/:model sebelum Anda melakukan routing. Jangan melakukan hard-code pada tabel yang disalin.

API DeepSeek V4 untuk Coding: Apa Kata Katalog

Kami mengambil kedua catatan pada 2026-10-03. Tabel di bawah membandingkan keduanya secara berdampingan. Harga dalam USD per 1 juta token, dan harga katalog terakhir diperbarui pada 2026-10-02T16:53:30.068Z.

Item deepseek-v4-pro deepseek-v4-flash Sumber, diamati 2026-10-03
Batas konteks (maks token input) 1.000.000 1.000.000 pro, flash
Batas output (maks token output) 384.000 384.000 pro, flash
Format permintaan yang diterima anthropic_messages, openai_chat_completions, openai_responses anthropic_messages, openai_chat_completions, openai_responses pro, flash
Kapabilitas json-mode, prompt-cache, tool-use json-mode, prompt-cache, tool-use pro, flash
Input off-peak $0,66 $0,15 pro, flash
Output off-peak $1,98 $0,60 pro, flash
Cache read off-peak $0,022 $0,003 pro, flash
Cache write off-peak $0,66 tidak tercantum pro, flash
Input peak $1,32 $0,30 pro, flash
Output peak $3,96 $1,20 pro, flash
Cache read peak $0,044 $0,006 pro, flash
Tahap siklus hidup aktif, dirilis 24-04-2026 aktif, dirilis 24-04-2026 pro, flash

Blok harga default di setiap catatan cocok dengan entri off-peak. Waktu peak berbeda di setiap catatan. Untuk deepseek-v4-pro, harga peak berlaku pada pukul 09:00-12:00 dan 14:00-18:00 waktu Beijing. Untuk deepseek-v4-flash, catatan menyatakan jendela peak berlaku pada hari kerja, tidak termasuk hari libur nasional Tiongkok. Dikatakan bahwa off-peak mencakup akhir pekan dan hari libur tersebut, tetapi tidak memberikan jam spesifik. Periksa endpoint harga sebelum Anda membuat anggaran di sekitar jendela flash.

Siklus hidup dan model DeepSeek yang lebih baru

Kedua catatan menunjukkan lifecycle stage active, dengan replacement model, deprecated_at, dan retired_at semuanya kosong. Jadi, katalog tidak menjadwalkan penghapusan model apa pun, dan tidak menyebutkan penerus untuk keduanya.

Katalog juga mencantumkan deepseek-v4.1-flash. Catatannya, yang diamati pada 2026-10-03, aktif tanpa tanggal rilis dan tanpa pengganti. Model ini memiliki batas, format, dan harga daftar yang sama dengan deepseek-v4-flash. Model ini menambahkan reasoning dan vision ke daftar kapabilitas dan menunjukkan harga cache write sebesar $0,15 untuk off-peak.

Itu adalah ID model yang terpisah, jadi artikel ini tetap pada subjeknya. Kami menyarankan Anda menguji deepseek-v4.1-flash pada tugas Anda sendiri sebelum menukarnya. Katalog juga mencantumkan deepseek-v4-flash-vision-exp, tetapi kami tidak membaca catatannya. Verifikasi di halaman Models jika Anda membutuhkannya.

Routing deepseek-v4-pro dan deepseek-v4-flash berdasarkan Tugas

Bayangkan sesi agen yang merencanakan perubahan di lima modul, menulis edit, lalu membuat selusin stub pengujian. Langkah pertama membutuhkan konteks dan perhatian paling banyak. Langkah terakhir bersifat repetitif dan murah untuk dikerjakan ulang. Katalog tidak dapat memberi tahu Anda di mana garis kualitas berada. Panduan TokenLab tentang model coding-agent, yang diamati pada 2026-10-03, menyatakan bahwa hasil leaderboard tidak memprediksi bagaimana model mengikuti instruksi dan tool Anda sendiri.

Heuristik awal kami mengasumsikan model yang lebih mahal sepadan dengan biayanya untuk pekerjaan lintas file. Anggap ini sebagai hipotesis untuk diuji, bukan temuan:

+-------------------------------------------------------------+
|                      Tugas Masuk                            |
+-------------------------------------------------------------+
                               |
         [Apakah tugas melibatkan konteks multi-file,
          kompatibilitas mundur, atau tinjauan keamanan?]
                               |
               +---------------+---------------+
               |                               |
             [Ya]                            [Tidak]
               |                               |
               v                               v
       deepseek-v4-pro                 deepseek-v4-flash

Kriteria yang mendorong langkah ke deepseek-v4-pro:

  • Memodifikasi logika di beberapa file yang diimpor.
  • Penilaian keamanan atau kerentanan.
  • Kompatibilitas mundur yang ketat pada antarmuka publik.
  • Pekerjaan multi-giliran di mana akurasi lebih penting daripada kecepatan penyelesaian.

Scaffolding pengujian mandiri, pemformatan skema, docstring, dan penyelesaian sintaks diberikan ke deepseek-v4-flash.

Untuk menguji heuristik, ikuti panduan yang sama. Berikan setiap model status repositori, instruksi, tool, dan batas waktu yang sama. Kemudian bandingkan kebenaran, tes yang lulus, perubahan yang tidak perlu, total token, biaya akhir, dan seberapa sering manusia harus turun tangan. Simpan hasil berdasarkan jenis tugas, karena satu model mungkin meninjau dengan baik tetapi mengimplementasikan dengan buruk.

Mengestimasi Biaya Loop Coding-Agent

Agen mengirim ulang instruksi, riwayat, kode, dan hasil tool pada setiap panggilan. Panduan biaya, yang diamati pada 2026-10-03, mencatat bahwa sesi yang panjang bisa menelan biaya jauh lebih banyak daripada satu permintaan chat. Kami menghitung aritmatika di bawah ini dari harga daftar. Hasilnya adalah estimasi, bukan tagihan terukur.

Asumsi (milik kami, tidak terukur): loop 20 panggilan model, masing-masing dengan 30.000 token input dan 1.500 token output. Itu memberikan total 600.000 token input dan 30.000 token output.

Rumusnya adalah input_tokens / 1M × harga input + output_tokens / 1M × harga output. Harga berasal dari tabel di atas.

Semua 20 panggilan ke deepseek-v4-pro:

  • Off-peak: 0,6 × $0,66 = $0,396 input, ditambah 0,03 × $1,98 = $0,0594 output, total $0,4554.
  • Peak: 0,6 × $1,32 = $0,792, ditambah 0,03 × $3,96 = $0,1188, total $0,9108.

Semua 20 panggilan ke deepseek-v4-flash:

  • Off-peak: 0,6 × $0,15 = $0,09, ditambah 0,03 × $0,60 = $0,018, total $0,108.
  • Peak: 0,6 × $0,30 = $0,18, ditambah 0,03 × $1,20 = $0,036, total $0,216.

Campuran: 4 panggilan ke pro, 16 ke flash. Pro membawa 120.000 input dan 6.000 token output. Flash membawa 480.000 input dan 24.000 token output.

  • Off-peak: pro adalah 0,12 × $0,66 + 0,006 × $1,98 = $0,0792 + $0,01188 = $0,09108. Flash adalah 0,48 × $0,15 + 0,024 × $0,60 = $0,072 + $0,0144 = $0,0864. Totalnya adalah $0,17748.
  • Peak: pro adalah 0,12 × $1,32 + 0,006 × $3,96 = $0,1584 + $0,02376 = $0,18216. Flash adalah 0,48 × $0,30 + 0,024 × $1,20 = $0,144 + $0,0288 = $0,1728. Totalnya adalah $0,35496.
Skenario Estimasi Off-peak Estimasi Peak
20 panggilan pada deepseek-v4-pro $0,4554 $0,9108
20 panggilan pada deepseek-v4-flash $0,1080 $0,2160
4 pro + 16 flash $0,1775 $0,3550

Estimasi dari harga daftar yang diamati pada 2026-10-03 (pro, flash).

Varian cache (off-peak, asumsi: 80% token input adalah cache read). Itu berarti 480.000 token cache-read dan 120.000 token tanpa cache per loop.

  • Pro: 0,48 × $0,022 = $0,01056, ditambah 0,12 × $0,66 = $0,0792, ditambah $0,0594 output, total $0,14916.
  • Flash: 0,48 × $0,003 = $0,00144, ditambah 0,12 × $0,15 = $0,018, ditambah $0,018 output, total $0,03744.

Varian ini menagih token tanpa cache dengan harga input biasa dan mengabaikan biaya cache-write pada flash, yang tidak tercantum dalam catatan. Konfirmasikan jumlah token yang di-cache dalam respons atau di Usage sebelum Anda mengandalkan diskon ini. Panduan penagihan juga memperingatkan bahwa harga terendah per token tidak selalu berarti biaya terendah per tugas yang diselesaikan, karena retry akan menambah biaya.

Permintaan Tool-Calling untuk Coding Agent

Kedua catatan mencantumkan tool-use, dan keduanya menerima openai_chat_completions. Permintaan di bawah ini hanya menggunakan bidang dari panduan tool-calling (diamati 2026-10-03): model, messages, dan tools dengan type: "function". Kami menambahkan max_tokens, yang menurut panduan penagihan adalah cara untuk membatasi panjang respons. Kami tidak menyertakan tool_choice, karena panduan tersebut hanya mendokumentasikannya untuk format Responses.

curl https://api.tokenlab.sh/v1/chat/completions \
  -H "Authorization: Bearer $TOKENLAB_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "deepseek-v4-pro",
    "max_tokens": 2000,
    "messages": [
      {"role": "system", "content": "You are a software engineering assistant."},
      {"role": "user", "content": "The pagination test in tests/test_api.py fails. Find the cause."}
    ],
    "tools": [
      {
        "type": "function",
        "function": {
          "name": "read_file",
          "description": "Read a file from the repository",
          "parameters": {
            "type": "object",
            "properties": {"path": {"type": "string"}},
            "required": ["path"]
          }
        }
      },
      {
        "type": "function",
        "function": {
          "name": "run_tests",
          "description": "Run the test suite for one path",
          "parameters": {
            "type": "object",
            "properties": {"path": {"type": "string"}},
            "required": ["path"]
          }
        }
      }
    ]
  }'

Model mengembalikan nama fungsi dan argumen dalam tool_calls. Backend Anda menjalankan tool tersebut. Loop kemudian berjalan dalam lima langkah:

  1. Kirim pesan ditambah definisi tool.
  2. Baca respons untuk tool_calls.
  3. Jalankan tool di backend Anda sendiri.
  4. Lampirkan hasil tool dalam format API yang sama.
  5. Lanjutkan sampai model mengembalikan jawaban akhir.

Panduan tidak menunjukkan bentuk pesan hasil tool secara inline. Ambil dari referensi Create Chat Completion (/api-reference/chat/create-completion) daripada menebak-nebak.

Sebelum menjalankan panggilan apa pun, validasi argumen dan terapkan pemeriksaan izin Anda sendiri. Buat eksekusi menjadi idempoten, karena retry klien dapat mengulangi panggilan tool yang sama. Gunakan satu format API untuk seluruh pertukaran, karena format tersebut merepresentasikan status tool secara berbeda.

Retry, Backoff, dan Fallback Antara Kedua Model

Panduan error dan panduan rate-limit, keduanya diamati pada 2026-10-03, menetapkan kebijakannya. Lakukan percabangan pada status HTTP dan code, jangan pernah pada message.

Status Ulangi permintaan yang sama? Tindakan
400, 401, 402, 403, 404, 413 Tidak Perbaiki permintaan, kunci, saldo, izin, atau input
429 Ya Tunggu Retry-After; jika tidak ada, gunakan eksponensial backoff dengan jitter
500–504 Hanya jika retryable adalah true Hormati retry_after dan batasi upaya
Koneksi terputus sebelum respons Terkadang Retry dengan hati-hati jika panggilan tool dapat mengulangi efek samping
Stream terputus setelah output tiba Tidak Anggap sebagai tidak lengkap; pengulangan mungkin menghasilkan output yang berbeda atau tagihan kedua

Dua kasus memerlukan perhatian ekstra. 503 all_channels_failed atau 503 delivery_tier_unavailable tidak selalu bersifat sementara. Ketika retryable adalah false dan retry_after tidak ada, jangan ulangi permintaan. Periksa GET /v1/models sebelum memilih model lain. Selain itu, context_length_exceeded tidak akan diperbaiki dengan beralih di antara kedua model ini, karena keduanya mencantumkan batas input 1.000.000 token yang sama.

Kode di bawah ini menerapkan kebijakan tersebut. Kode ini menetapkan max_retries=0 agar SDK tidak melakukan retry di belakang Anda. Setiap model mendapatkan empat upaya, dan fallback hanya berjalan setelah model pertama menghabiskan error yang dapat di-retry.

import os
import random
import time
from openai import OpenAI, APIStatusError, APIConnectionError

client = OpenAI(
    api_key=os.environ["TOKENLAB_API_KEY"],
    base_url="https://api.tokenlab.sh/v1",
    timeout=30.0,
    max_retries=0,
)

FALLBACK = {
    "deepseek-v4-pro": "deepseek-v4-flash",
    "deepseek-v4-flash": "deepseek-v4-pro",
}

def error_fields(exc):
    body = getattr(exc, "body", None)
    if isinstance(body, dict):
        return body.get("error", body)
    return {}

def backoff(attempt):
    return min(30, 2 ** attempt + random.random())

def retry_delay(exc, attempt):
    """Detik untuk menunggu, atau None jika permintaan tidak boleh diulangi."""
    if isinstance(exc, APIConnectionError):
        return backoff(attempt)
    fields = error_fields(exc)
    header = exc.response.headers.get("Retry-After")
    if exc.status_code == 429:
        return float(header) if header else backoff(attempt)
    if exc.status_code >= 500 and fields.get("retryable") is True:
        wait = fields.get("retry_after") or header
        return float(wait) if wait else backoff(attempt)
    return None

def chat_with_fallback(model, messages, tools=None, attempts=4):
    last_exc = None
    for candidate in (model, FALLBACK[model]):
        kwargs = {"model": candidate, "messages": messages}
        if tools:
            kwargs["tools"] = tools
        for attempt in range(attempts):
            try:
                return candidate, client.chat.completions.create(**kwargs)
            except (APIStatusError, APIConnectionError) as exc:
                delay = retry_delay(exc, attempt)
                if delay is None:
                    raise  # 4xx atau 5xx yang tidak dapat di-retry: jangan ulangi atau fallback
                last_exc = exc
                if attempt < attempts - 1:
                    time.sleep(delay)
        print(f"{candidate} kehabisan upaya retry, mencoba {FALLBACK[candidate]}")
    raise last_exc

def pick_model(is_complex):
    return "deepseek-v4-pro" if is_complex else "deepseek-v4-flash"

used, response = chat_with_fallback(
    pick_model(is_complex=False),
    [{"role": "user", "content": "Write a pytest case: an empty list returns 0 for sum_items()."}],
)
print(used, response.choices[0].message.content)

Selalu catat model mana yang menjawab. Panduan coding-agent memperingatkan bahwa fallback dapat mengubah harga, batas konteks, format tool, atau gaya output, jadi beri tahu pengguna saat model berubah. Melakukan fallback dari flash ke pro kira-kira melipatgandakan biaya input pada harga daftar, jadi berikan peringatan. Simpan ID Permintaan dari header respons dengan setiap panggilan agar dukungan dapat melacak kegagalan.

Baca Batas, Format, dan Harga Sebelum Routing

Referensi Get a Model, yang diamati pada 2026-10-03, menjelaskan GET /v1/models/:model. Respons membawa objek tokenlab dengan capabilities, pricing, max_input_tokens, max_output_tokens, accepted_request_formats, dan lifecycle. Model yang tidak dikenal mengembalikan 404 model_not_found. Panduan penagihan juga mengarahkan ke GET /v1/models/:model/pricing untuk harga saat ini.

import json
import urllib.request

def read_model(model_id):
    url = f"https://api.tokenlab.sh/v1/models/{model_id}"
    with urllib.request.urlopen(url, timeout=10) as resp:
        meta = json.load(resp)["tokenlab"]
    return {
        "max_input_tokens": meta.get("max_input_tokens"),
        "max_output_tokens": meta.get("max_output_tokens"),
        "formats": meta.get("accepted_request_formats"),
        "capabilities": meta.get("capabilities"),
        "lifecycle": meta.get("lifecycle"),
        "pricing": meta.get("pricing"),
    }

def preflight(model_id, input_tokens):
    info = read_model(model_id)
    problems = []
    if "openai_chat_completions" not in (info["formats"] or []):
        problems.append("chat completions not accepted")
    if "tool-use" not in (info["capabilities"] or []):
        problems.append("no tool-use capability")
    if info["max_input_tokens"] and input_tokens > info["max_input_tokens"]:
        problems.append("input exceeds max_input_tokens")
    return info, problems

for model_id in ("deepseek-v4-pro", "deepseek-v4-flash"):
    info, problems = preflight(model_id, input_tokens=30_000)
    print(model_id, json.dumps(info, indent=2), problems)

Kami mencetak lifecycle dan pricing secara mentah karena bukti artikel ini tidak menunjukkan tata letak JSON yang tepat di dalam respons tersebut. Periksa output sekali, lalu parse bidang yang Anda butuhkan. Dokumentasi menyarankan untuk tidak melakukan hard-code pada tabel harga yang disalin, jadi jalankan pemeriksaan saat startup atau sesuai jadwal. Endpoint penemuan publik seperti GET /v1/models memiliki batas rate-limit sendiri, jadi cache hasilnya alih-alih memanggilnya per permintaan.

Untuk rate-limit, tingkat Pengguna standar memungkinkan 1.000 permintaan per menit per kunci API, sebagaimana diamati pada 2026-10-03. Panduan mengatakan konfigurasi aktif mungkin berbeda. Pada 429, percayai nilai X-RateLimit-Limit dan Retry-After yang dikembalikan daripada angka yang disalin.

FAQ

Bisakah saya memanggil deepseek-v4-pro melalui format Anthropic Messages?

Ya. Kedua catatan mencantumkan anthropic_messages di antara format yang diterima, diamati pada 2026-10-03. Panduan coding-agent memberikan URL dasar Anthropic Messages sebagai https://api.tokenlab.sh, tanpa akhiran /v1 yang digunakan Chat Completions. Skema tool berbeda menurut format, jadi gunakan satu format untuk seluruh percakapan.

Haruskah saya melakukan retry pada 503 dari deepseek-v4-pro atau deepseek-v4-flash?

Hanya jika isi error menyatakan retryable adalah true, lalu tunggu retry_after. 503 all_channels_failed dengan retryable: false berarti permintaan tidak memiliki pasokan di tingkat Pengiriman yang dipilih. Mengulanginya tidak akan membantu. Periksa GET /v1/models sebelum Anda memilih model lain, seperti yang dijelaskan dalam panduan error.

Apakah deepseek-v4.1-flash menggantikan deepseek-v4-flash?

Katalog tidak menyatakan demikian. Pada 2026-10-03, catatan deepseek-v4-flash tidak menunjukkan model pengganti, dan deepseek-v4.1-flash menunjukkan status aktif. Keduanya berbagi batas dan harga daftar, dan yang lebih baru menambahkan kapabilitas reasoning dan vision. Uji pada tugas Anda dan beralihlah secara sengaja berdasarkan ID model.

Apakah token yang di-cache membuat deepseek-v4-flash lebih murah dalam loop agen?

Bisa jadi. Catatan mencantumkan harga cache read off-peak sebesar $0,003 per 1 juta token, dibandingkan $0,15 untuk input biasa. Panduan biaya mengatakan untuk mengonfirmasi penggunaan token yang di-cache dalam respons atau di Usage sebelum mengandalkan diskon. Perilaku dan harga cache berbeda menurut model.

Apakah routing ke deepseek-v4-flash akan menaikkan rate-limit saya?

Tidak. Panduan rate-limit mengatakan model yang lebih cepat tidak menaikkan batas permintaan akun Anda. Kecepatan model, batas token, dan rate-limit akun adalah batasan terpisah, dan batas berlaku per kunci API.

Periksa entri deepseek-v4-pro dan deepseek-v4-flash saat ini di halaman model TokenLab sebelum Anda memasang router Anda.

Sumber

Harga diamati pada 2026-10-03

Model terkait

Model yang baru dirilis

Bangun dengan model dalam panduan ini

Bandingkan harga, uji rute, dan ubah riset menjadi panggilan API yang berjalan.