Kembali ke blog

Optimasi biayaPanduan

Hitung token sebelum mengirim permintaan: tiktoken di Python

Estimasi jumlah token sebuah prompt secara offline dengan tiktoken, periksa terhadap context window, beri harga, dan bandingkan dengan field usage dari API.

Oleh CheapTokens TeamDiterbitkan 4 menit baca

Terminal menampilkan pip install tiktoken dan hitungan token satu baris
Di halaman ini
  1. Lima baris yang menghitung token
  2. Apakah prompt muat di jendela?
  3. Berapa biayanya?
  4. Bandingkan estimasi dengan usage

Anda dapat menghitung token sebuah prompt di mesin Anda sendiri sebelum dikirim: pasang tiktoken, encode teksnya, ambil len() dari hasilnya. tiktoken adalah tokeniser milik OpenAI, jadi untuk model DeepSeek, GLM dan MiniMax angkanya adalah perkiraan. Angka sebenarnya dikembalikan di usage.prompt_tokens setelah panggilan pertama, dan membandingkan keduanya hanya butuh satu baris lagi.

Mengapa repot-repot? Karena tagihan dan error keduanya berawal dari ukuran input. Tempel kontrak panjang ke dalam skrip, dan Anda baru tahu itu terlalu besar saat API menjawab dengan 400. Jalankan batch lima ribu email, dan Anda baru tahu berapa biayanya saat saldo sudah berkurang. Menghitung lebih dulu mengubah kedua kejutan itu menjadi angka yang bisa Anda baca sebelumnya.

Lima baris yang menghitung token#

README tiktoken (diperiksa 1 November 2026) menunjukkan seluruh idenya: pilih encoding, encode teksnya, dan panjang list adalah jumlah token.

bash
pip install tiktoken
python
import tiktoken

enc = tiktoken.get_encoding('o200k_base')
text = 'Hello world'
tokens = enc.encode(text)
print(len(tokens))  # how many tokens the text is
Lima baris dalam file bernama estimate.py
Seluruh penghitung: get_encoding, encode, len.

enc.decode(tokens) mengembalikan teks asli, yang merupakan pemeriksaan kewajaran yang berguna bahwa Anda melihat teks yang sama dengan yang akan dilihat model. README juga menyebut tiktoken.encoding_for_model('gpt-4o'), yang memilih tokeniser untuk model OpenAI tertentu. Itulah jebakannya yang perlu diingat: tokeniser milik keluarga model. Aturan praktis README adalah sekitar empat byte teks per token, dan itu hanya menjelaskan tokeniser OpenAI.

Jadi apa yang Anda lakukan untuk model DeepSeek? Gunakan hitungan yang sama sebagai perkiraan kerja, dan kalibrasi, seperti ditunjukkan di bawah.

Tebak angkanya

Kira-kira berapa token teks bahasa Inggris 2.000 karakter?

Tampilkan jawaban

Jawaban: 500

Sekitar 500. Dengan aturan praktis README empat byte per token, dan teks bahasa Inggris biasa sekitar satu byte per karakter, 2.000 ÷ 4 = 500. Bahasa lain dan emoji memakan lebih banyak byte per karakter, jadi 2.000 karakter yang sama biasanya berarti lebih banyak token menurut aturan itu.

Apakah prompt muat di jendela?#

Setiap model memiliki context window, dan input Anda ditambah jawaban yang Anda izinkan harus muat di dalamnya. Jendela untuk model yang kami layani: DeepSeek-V4-Flash 380K, GLM-5.3-Flash 390K, MiniMax-M2.7 180K token. Jawaban terpanjang adalah 32.768 token untuk DeepSeek-V4-Flash dan 8.192 untuk dua lainnya (daftar model CheapTokens, 1 November 2026).

Penjaga sebelum panggilan adalah empat baris:

python
CONTEXT = {
    'deepseek-ai/DeepSeek-V4-Flash-0731': 380_000,
    'zai-org/GLM-5.3-Flash': 390_000,
    'MiniMaxAI/MiniMax-M2.7': 180_000,
}

def fits(prompt_tokens, max_tokens, model):
    return prompt_tokens + max_tokens <= CONTEXT[model]

Katakanlah Anda punya dokumen 250.000 token. fits(250_000, 8_192, 'MiniMaxAI/MiniMax-M2.7') adalah False, jadi Anda mengarahkan pekerjaan itu ke model dengan jendela lebih besar atau memecah dokumennya, dan 400 tidak pernah terjadi. fits(250_000, 8_192, 'deepseek-ai/DeepSeek-V4-Flash-0731') adalah True. Jika Anda ingin cerita lengkap tentang seperti apa error itu, request too long: 400 vs 413, context window and max_tokens membahasnya.

Berapa biayanya?#

Sekarang anggarannya. Ambil satu item tipikal, hitung, dan kalikan. Misalkan Anda mengklasifikasikan 5.000 email pesanan. Anda menghitung satu email perwakilan dan mendapat sekitar 800 token input, dan Anda membatasi label dan alasan singkat pada 200 token output. Totalnya: 5.000 × 800 = 4.000.000 token input dan 5.000 × 200 = 1.000.000 token output.

Tabel di bawah ini memberi harga persis untuk beban kerja itu dengan harga live, dengan input dan output dihitung bersama:

Model Per permintaan 5.000 permintaan OpenRouter, 5.000 permintaan
GLM-5.3-Flash $0.000024 $0.12 $0.217
DeepSeek-V4-Flash $0.000032 $0.16 $0.42
MiniMax-M2.7 $0.00007 $0.35 $4.20

800 token input dan 200 token output per permintaan. Harga per 1 juta token adalah harga saat ini dan berubah seiring tarif kami; kolom OpenRouter menunjukkan harga referensi untuk beban kerja yang sama.

Secara total, dengan input dan output dihitung bersama, kolom CheapTokens lebih murah daripada OpenRouter untuk model-model ini. Ubah ketiga angka itu menjadi hitungan Anda sendiri dan Anda punya anggaran sebelum permintaan pertama. Untuk perbedaan antara kedua sisi tagihan, lihat input vs output tokens: what an AI API bills you for, dan untuk contoh terukur nyata how many tokens an API request uses. Harga terkini selalu ada di halaman harga.

Alur estimasi dari teks hingga hitungan penggunaan nyata
Estimasi offline, jaga jendela, kirim, lalu bandingkan dengan usage.

Bandingkan estimasi dengan usage#

Estimasi adalah tebakan tentang tokeniser orang lain, jadi periksa sekali terhadap kunci jawabannya. Setiap respons membawa field usage, dan usage.prompt_tokens adalah yang dihitung API untuk input Anda. Letakkan kedua angka berdampingan dan bagi.

Langkah demi langkah

Jalankan perbandingannya

Siapkan

Pasang paketnya dan taruh kunci di environment variable. Jangan pernah menempelkannya ke dalam skrip.

bash
pip install tiktoken openai
export CHEAPTOKENS_API_KEY='your-key-here'

Jalankan skripnya

Simpan ini sebagai compare.py. Skrip ini menghitung secara lokal, mengirim permintaan ke https://api.cheaptokens.dev/v1, dan mencetak kedua angka. Id model adalah yang lengkap dari daftar model CheapTokens, karena nama yang dipendekkan tidak diterima.

python
import os
import tiktoken
from openai import OpenAI

MODEL = 'deepseek-ai/DeepSeek-V4-Flash-0731'
enc = tiktoken.get_encoding('o200k_base')
messages = [{'role': 'user',
             'content': 'Classify this email as order, refund or other: Hi, my parcel from last Tuesday has not arrived yet.'}]

estimate = sum(len(enc.encode(m['content'])) for m in messages)

client = OpenAI(base_url='https://api.cheaptokens.dev/v1',
                api_key=os.environ['CHEAPTOKENS_API_KEY'])
r = client.chat.completions.create(model=MODEL, messages=messages, max_tokens=200)

real = r.usage.prompt_tokens
print(f'estimate {estimate}, usage.prompt_tokens {real}, ratio {real / estimate:.2f}')

Baca selisihnya

Baris terakhir mencetak tiga angka. Katakanlah itu menampilkan estimate 24, usage.prompt_tokens 31, ratio 1.29. Lalu kalikan estimasi Anda di masa depan dengan rasio itu sebelum menyusun anggaran. Prompt nyata juga dibungkus dalam format chat, jadi hitungan nyata bisa keluar sedikit di atas estimasi teks biasa. Jalankan pada beberapa prompt tipikal, bukan satu, dan gunakan rasio rata-ratanya.

Sejak saat itu rutinitasnya adalah: estimasi secara lokal, jaga jendela, terapkan rasio Anda ke anggaran, dan biarkan usage di setiap respons menjaga Anda tetap jujur. Jika Anda juga ingin total berjalan sepanjang satu pekerjaan, track AI agent token cost in Python membangunnya di atas field yang sama. Baru mengenal koneksinya? Your first API request with CheapTokens membahasnya, dan dokumentasi punya sisanya.

Cocokkan pasangan

Cocokkan setiap nama dengan apa yang diberitahukannya

  • len(enc.encode(text))Estimasi lokal Anda atas ukuran input
  • usage.prompt_tokensUkuran input sebagaimana dihitung API
  • usage.completion_tokensUkuran jawaban, diberi harga di sisi output
  • max_tokensBatas panjang jawaban yang Anda cadangkan dalam pemeriksaan jendela

Menghitung itu murah, lokal dan hanya butuh beberapa detik. Lakukan sebelum panggilan yang memakan biaya.