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

Migrasi dari OpenAI ke TokenLab dalam 5 Menit

·19 September 2026·10 menit baca·Diperbarui 2 Oktober 2026·3131 tampilan
#tutorial#migrasi#OpenAI#memulai
Migrasi dari OpenAI ke TokenLab dalam 5 Menit

Base URL adalah bagian termudah dalam meninggalkan penyedia layanan; jalur kegagalan adalah tempat di mana migrasi sering kali bermasalah. Untuk bermigrasi dari OpenAI ke TokenLab, Anda mengubah dua nilai pada klien SDK OpenAI Anda: base_url dan api_key. Sisa panduan ini membahas apa saja yang perlu dipastikan seputar perubahan tersebut. Itu berarti ID model yang Anda kirim, harganya saat ini, streaming, pemanggilan tool, penanganan error, timeout, dan penagihan. Fakta di bawah ini berasal dari dokumentasi TokenLab dan API model langsung, masing-masing dengan tanggal pengamatan yang tercantum.

Poin Penting

  • Perubahan intinya ada pada dua nilai: base URL TokenLab https://api.tokenlab.sh/v1 dan API key TokenLab (diawali dengan sk-).
  • TokenLab mendokumentasikan dukungan SDK OpenAI untuk Chat Completions dan Responses. Parameter opsional, opsi tool, dan field khusus Responses tetap bergantung pada model yang dipilih.
  • Baca harga model Anda dari API langsung sebelum memutuskan apa pun. Pada 2026-10-03, gpt-5.5 terdaftar dengan harga $1,50 untuk input dan $9,00 untuk output per 1 juta token.
  • Jalankan daftar periksa (checklist) di akhir sebelum Anda memindahkan traffic produksi. Sebagian besar kejutan terjadi pada penanganan error, timeout, dan penagihan, bukan pada jalur yang lancar.

Perubahan Dua Nilai untuk Migrasi dari OpenAI ke TokenLab

Mulailah dengan kuncinya. Sesuai Quickstart (diamati 2026-10-03), Anda membuat akun, membuat API key, dan segera menyimpan nilai lengkapnya. Kunci tersebut hanya ditampilkan sekali, dan awalan dalam daftar kunci tidak dapat mengautentikasi permintaan. Periksa saldo Anda sebelum melakukan panggilan pertama, karena permintaan akan ditagih sesuai harga model yang dipilih saat ini.

Kemudian ubah kliennya. Panduan migrasi (diamati 2026-10-03) menjelaskan resepnya sebagai berikut: atur base_url / baseURL ke https://api.tokenlab.sh/v1, ganti kuncinya, dan pilih ID model dari GET /v1/models.

Sebagai contoh, bayangkan sebuah layanan yang memiliki string gpt-5.5 dalam konfigurasinya. Setelah perubahan dua nilai tersebut, string yang sama adalah permintaan yang valid, namun kita tetap harus memastikan ID-nya terlebih dahulu. GET /v1/models dan GET /v1/models/{model} adalah endpoint penemuan publik dan berfungsi tanpa kunci.

Python

import os
from openai import OpenAI

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

response = client.chat.completions.create(
    model="gpt-5.5",
    messages=[{"role": "user", "content": "Hello, world!"}],
)
print(response.choices[0].message.content)

Node.js

import OpenAI from 'openai';

// Sebelumnya: new OpenAI({ apiKey: process.env.OPENAI_API_KEY })
const client = new OpenAI({
  apiKey: process.env.TOKENLAB_API_KEY,
  baseURL: 'https://api.tokenlab.sh/v1',
  timeout: 30_000,
  maxRetries: 0,
});

const completion = await client.chat.completions.create({
  model: 'gpt-5.5',
  messages: [{ role: 'user', content: 'Hello' }],
});
console.log(completion.choices[0].message.content);

cURL

curl https://api.tokenlab.sh/v1/chat/completions \
  -H "Authorization: Bearer $TOKENLAB_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"model":"gpt-5.5","messages":[{"role":"user","content":"Say hello"}]}'

Pengaturan timeout dan retry pada dua sampel pertama mencerminkan contoh Quickstart (diamati 2026-10-03), yang menggunakan timeout 30 detik dan nol retry SDK. Kami menjaga retry tetap nol selama pengujian agar permintaan yang gagal terlihat alih-alih dicoba ulang secara diam-diam.

Teruskan base URL secara eksplisit dalam konfigurasi klien. Panduan SDK (diamati 2026-10-03) merekomendasikan hal ini daripada mengandalkan alias variabel lingkungan yang lebih lama. Simpan kunci di server dan di manajer rahasia (secret manager), jangan pernah di kode sisi klien.

Pilih ID Model dan Baca Harganya

Migrasi tidak boleh mengasumsikan ID model atau harga. Keduanya ada di API model. Kami membaca https://api.tokenlab.sh/v1/models/gpt-5.5 dan https://api.tokenlab.sh/v1/models/laguna-s-2.1 pada 2026-10-03. Harga untuk keduanya terakhir diperbarui pada 2026-10-02T16:53:30.068Z.

Field gpt-5.5 laguna-s-2.1
Tahap siklus hidup active active
Token input / output maks 1.000.000 / 128.000 1.048.576 / 131.072
Format permintaan yang diterima openai_chat_completions, openai_responses openai_chat_completions
Kapabilitas yang terdaftar coding, json-mode, prompt-cache, reasoning, tool-use, vision tool-use
Input, USD per 1M token 1,5 0,1
Output, USD per 1M token 9 0,2
Cache read, USD per 1M token 0,15 0,01

Sumber: gpt-5.5 dan laguna-s-2.1, keduanya diamati 2026-10-03.

Untuk mengubah tarif tersebut menjadi angka, berikut adalah estimasi dengan perhitungannya. Ambil pekerjaan dengan 1 juta token input dan 100 ribu token output, tanpa cache hit.

  • gpt-5.5: 1 × $1,50 + 0,1 × $9,00 = $1,50 + $0,90 = $2,40.
  • laguna-s-2.1: 1 × $0,10 + 0,1 × $0,20 = $0,10 + $0,02 = $0,12.

Ini adalah estimasi dari tarif per-token yang terdaftar. Biaya akhir Anda adalah catatan Penggunaan (Usage). Tokenisasi berbeda-beda menurut model, sehingga teks yang sama menghasilkan jumlah token yang berbeda pada model yang berbeda.

Kami tidak mengklaim penghematan di sini. Untuk membandingkan dengan apa yang Anda bayar hari ini, letakkan tarif TokenLab di samping faktur OpenAI Anda sendiri, atau halaman harga OpenAI, pada hari Anda beralih. Harga berubah, dan panduan penagihan (diamati 2026-10-03) menyarankan untuk tidak melakukan hard-code pada tabel harga yang disalin. Panduan tersebut mengarahkan ke GET /v1/models/:model/pricing untuk nilai saat ini.

ID model lainnya mengikuti pola yang sama. Contoh dalam dokumentasi menggunakan gpt-5.6-terra dan gpt-5.6-luna untuk Chat Completions, serta claude-sonnet-5 dan gemini-3.5-flash pada rute mereka sendiri. Baca format yang diterima oleh masing-masing model sebelum Anda mengarahkan traffic ke sana. Untuk perbandingan yang lebih luas, lihat direktori model, perbandingan OpenRouter vs TokenLab, dan peringkat model. Tim gambar dan video dapat memulai dengan API model gambar AI terbaik 2026 dan API model video AI terbaik 2026. Untuk tugas coding, lihat model AI terbaik untuk coding.

Apa yang Harus Diperiksa Selanjutnya Saat Anda Bermigrasi dari OpenAI ke TokenLab

TokenLab mendokumentasikan SDK OpenAI agar berfungsi dengan Chat Completions dan Responses. Itu adalah kompatibilitas dengan format permintaan dan respons, bukan janji bahwa setiap model berperilaku sama. Panduan format API (diamati 2026-10-03) menyatakan bahwa parameter opsional bergantung pada model. Panduan tersebut juga menyatakan bahwa model tidak serta-merta menerima keempat format API, dan tokenlab.accepted_request_formats menunjukkan format mana yang diterima. Perlakukan setiap area di bawah ini sebagai sesuatu yang perlu diuji dengan traffic nyata Anda.

Streaming

stream: true mengirimkan delta pesan parsial sebagai server-sent events. Atur stream_options dengan include_usage: true untuk menerima penggunaan token dalam potongan stream, sebagaimana didokumentasikan dalam referensi Create Chat Completion (diamati 2026-10-03).

stream = client.chat.completions.create(
    model="gpt-5.5",
    messages=[{"role": "user", "content": "Count to five."}],
    stream=True,
    stream_options={"include_usage": True},
)
for chunk in stream:
    if chunk.choices:
        print(chunk.choices[0].delta.content or "", end="")

Dua perilaku yang perlu direncanakan. Jika stream terputus setelah output tiba, jangan perlakukan itu sebagai respons lengkap. Panduan penanganan error (diamati 2026-10-03) memperingatkan bahwa mengulanginya mungkin menghasilkan output yang berbeda atau tagihan kedua. Dan streaming bisa selesai sebelum penagihan, jadi ID penagihan mungkin tidak ada.

Pemanggilan Tool

Referensi Chat Completions mencantumkan tools, tool_choice, dan parallel_tool_calls. Disebutkan bahwa panggilan paralel berfungsi "bila didukung oleh model yang dipilih." Pemanggilan fungsi didokumentasikan sebagai "didukung oleh model yang dipilih," jadi periksa daftar kapabilitas. Dalam tabel di atas, baik gpt-5.5 maupun laguna-s-2.1 mencantumkan tool-use, tetapi hanya gpt-5.5 yang mencantumkan json-mode dan vision. Kirim skema tool nyata Anda, bukan contoh mainan, dan periksa apakah argumen yang dikembalikan dapat diurai (parse).

Jika Anda berencana memanggil model Claude, perhatikan aturan dalam panduan migrasi. Panggilan tool Claude, blok pemikiran (thinking blocks), dan field pesan Anthropic berada di /v1/messages, dan Chat Completions tidak menjamin ketersediaannya.

Bentuk Error

Chat Completions dan Responses mengembalikan objek error bergaya OpenAI. Sesuai panduan penanganan error, hanya message dan type yang selalu ada. Field seperti code, param, retryable, dan retry_after muncul jika relevan. Lakukan percabangan berdasarkan status HTTP dan code, bukan pada teks pesan, dan buat parser Anda toleran terhadap field yang hilang. Anthropic Messages dan Gemini memiliki format error mereka sendiri, jadi satu parser tidak akan mencakup setiap rute.

Status Kode Artinya
401 invalid_api_key Kunci hilang, tidak valid, tidak aktif, atau dicabut
401 expired_api_key Kunci telah kedaluwarsa
402 insufficient_balance Saldo akun tidak dapat menutupi permintaan
402 quota_exceeded Batas penggunaan kunci itu sendiri telah tercapai
403 model_not_allowed Kunci ini tidak dapat menggunakan model yang diminta
429 rate_limit_exceeded Terlalu banyak permintaan; tunggu Retry-After

Sumber: Autentikasi dan penanganan error, diamati 2026-10-03.

Tabel ini mengoreksi asumsi umum. Saldo kosong adalah 402, bukan 401. Jika kode Anda saat ini memperlakukan setiap 4xx sebagai kunci yang buruk, perbarui kode tersebut.

Timeout dan Retry

Panduan migrasi menyatakan bahwa kode retry, timeout, dan streaming yang ada biasanya dapat tetap digunakan. Tinjau kode tersebut terhadap aturan retry yang didokumentasikan.

  • Jangan ulangi respons 400, 401, 402, 403, 404, atau 413 tanpa perubahan.
  • Retry 429 setelah penundaan yang disediakan server.
  • Retry 500–504 hanya jika retryable bernilai true, dan patuhi retry_after.
  • 503 all_channels_failed dapat kembali dengan retryable: false. Dalam kasus tersebut, operasi tidak memiliki pasokan di tingkat pengiriman yang dipilih, jadi mengulanginya tidak akan membantu.

Simpan Request ID dari header respons bersama dengan model dan ID pekerjaan Anda sendiri. Itu adalah apa yang Anda perlukan untuk investigasi.

Penagihan

Satu saldo berfungsi di seluruh model, tanpa langganan atau pengeluaran minimum, sesuai panduan penagihan. Setiap permintaan yang selesai ditagih satu kali, untuk opsi pengiriman yang menghasilkannya. Opsinya adalah TokenLab Verified, Official, dan Auto, di mana Auto mencoba Verified terlebih dahulu, kemudian Official. Tetapkan batas pengeluaran pada setiap API key jika Anda menginginkan penghentian paksa. Saat batas tercapai, permintaan dengan kunci tersebut akan mengembalikan 402.

Respons non-streaming yang kompatibel dengan OpenAI menyertakan billing_transaction_id saat penagihan selesai sebelum respons dikirim. ID ini juga mungkin muncul di header X-Billing-Transaction-ID. Simpan ID tersebut, dan lakukan rekonsiliasi terhadap halaman Penggunaan (Usage) alih-alih perhitungan token Anda sendiri.

Daftar Periksa Verifikasi Setelah Anda Bermigrasi dari OpenAI ke TokenLab

Jalankan langkah-langkah ini secara berurutan dengan kunci staging sebelum traffic produksi berpindah. Setiap baris merujuk pada perilaku yang didokumentasikan di atas.

Langkah Apa yang dijalankan Apa yang seharusnya Anda lihat
1. Penemuan model GET /v1/models/gpt-5.5 (tidak perlu kunci) Siklus hidup active dan format yang diterima yang ingin Anda gunakan
2. Permintaan terautentikasi Sampel Python atau cURL di atas Jawaban tidak kosong; permintaan muncul di tampilan Requests dengan model, status, dan penggunaan
3. Field penggunaan Baca usage pada respons non-streaming prompt_tokens, completion_tokens, total_tokens
4. Streaming stream: true dengan include_usage: true Potongan SSE, lalu penggunaan; stream yang terputus ditangani sebagai tidak lengkap
5. Pemanggilan tool tools dan tool_choice nyata Anda Argumen terurai dan cocok dengan skema Anda
6. Vision atau JSON mode Hanya jika model mencantumkan vision atau json-mode Output yang diharapkan; lewati pengujian jika kapabilitas tidak terdaftar
7. Kunci buruk Permintaan dengan kunci yang dihapus atau salah 401 invalid_api_key
8. Tidak ada saldo atau batas kunci Gunakan kunci dengan batas rendah atau ruang kerja kosong 402 insufficient_balance atau quota_exceeded
9. Pembatasan model Batasi daftar model kunci, lalu minta model lain 403 model_not_allowed
10. Timeout dan retry Paksa timeout di staging Kode Anda melakukan retry hanya sesuai retryable dan retry_after
11. Penagihan Bandingkan billing_transaction_id dan Penggunaan dengan estimasi Anda Biaya cocok dengan harga model saat ini dan token yang tercatat

Setelah tabel lulus verifikasi, ubah konfigurasi produksi Anda dan lakukan deploy. Biarkan kunci OpenAI lama tetap aktif sampai Penggunaan (Usage) mengonfirmasi bahwa jalur baru sudah stabil.

Pertanyaan yang Sering Diajukan

Apakah saya perlu mengubah nama model saya saat beralih dari OpenAI?

Tidak harus, tetapi pastikan masing-masing model. ID model TokenLab adalah string yang tepat, jadi periksa dengan GET /v1/models atau GET /v1/models/{model}. Pada 2026-10-03, API langsung mencantumkan gpt-5.5 sebagai aktif. Jika permintaan mengembalikan model_not_found, ID tersebut tidak diketahui atau tidak tersedia. Baca daftar model dan gunakan ID saat ini.

Apakah streaming dan pemanggilan tool akan berperilaku persis seperti API OpenAI?

TokenLab mendokumentasikan streaming melalui SSE dan pemanggilan fungsi melalui format permintaan yang kompatibel dengan OpenAI. Dokumentasi juga menyatakan bahwa opsi yang didukung bergantung pada model yang dipilih. Oleh karena itu, kami memperlakukan hasilnya sebagai kompatibel, bukan identik. Uji streaming, tools, tool_choice, dan response_format apa pun yang Anda gunakan dengan model spesifik yang ingin Anda jalankan.

Kode status apa yang saya dapatkan saat saldo saya habis?

Anda mendapatkan HTTP 402 dengan kode insufficient_balance. Kunci yang mencapai batas pengeluarannya sendiri juga mengembalikan 402, dengan quota_exceeded. Kunci yang hilang, tidak valid, atau dicabut mengembalikan 401. Jangan ulangi permintaan apa pun dari status ini tanpa perubahan. Isi ulang saldo, naikkan batas kunci, atau ganti kuncinya.

Bisakah saya memanggil model Claude atau Gemini dari klien OpenAI yang sama?

Katalog model mencantumkan claude-sonnet-5 dan gemini-3.5-flash dengan openai_chat_completions di antara format permintaannya. Oleh karena itu, obrolan dasar dapat melalui klien yang sama. Field khusus Claude seperti blok pemikiran dan penggunaan tool Claude berada di /v1/messages. Field asli Gemini tetap berada di rute /v1beta. Gunakan satu format API per percakapan.

Mulai Membangun di TokenLab

Buat kunci di TokenLab, atur base URL ke https://api.tokenlab.sh/v1, dan jalankan permintaan Quickstart sebelum menyentuh produksi.

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.