Kalau tagihan AI kamu turun, tetapi editor makin lama memperbaiki hasilnya, penghematannya belum jelas. Biaya satu permintaan berbeda dari biaya satu pekerjaan selesai. Biaya hasil yang akhirnya diterima juga bisa berbeda lagi.
Kita akan membuat catatan biaya per pekerjaan, atau ledger, untuk alur kerja redaksi. Lalu kita bahas pemakaian ulang bagian masukan, yang disebut cache, dan pengolahan banyak permintaan sekaligus, yang disebut batch. Penjelasannya mengikuti dokumentasi resmi.
Harga di contoh memakai unit simulasi, bukan tarif layanan. Perhitungannya bisa kamu jalankan di komputer sendiri tanpa kunci akses layanan atau kunci API.
Ikuti biaya satu pekerjaan sampai tuntas
Satu pekerjaan bisa memakai pencarian, model pembaca data, model penulis, dan program pemeriksa hasil. Percobaan ulang menambah panggilan layanan, sedangkan pemeriksaan hasil menambah waktu manusia. Beri seluruh rangkaian penanda job_id agar biayanya mudah dicocokkan kembali.
Potongan teks yang dihitung model disebut token. Catat pemakaiannya menurut kategori tagihan dari penyedia layanan. Pada sebagian bentuk laporan, masukan yang dibaca dari cache sudah termasuk dalam total masukan.
Jadi, jangan langsung menjumlahkan total masukan dan masukan dari cache. Bagian program penerjemah laporan, atau adapter, perlu memisahkannya menjadi kategori yang tidak menghitung pemakaian yang sama dua kali. Daftar berikut membantu kamu melengkapi catatannya:
| Bagian biaya | Yang setidaknya dicatat | Kekeliruan yang perlu dijaga |
|---|---|---|
| Model | Nama model, kategori token, pemakaian nyata | Hanya memperkirakan dari jumlah karakter |
| Alat bantu | Jumlah panggilan dan biaya yang berlaku | Lupa biaya pencarian atau pengolahan berkas |
| Perangkat pendukung | Waktu pemrosesan dan penyimpanan | Biaya tetap terhitung dua kali |
| Pemeriksaan manusia | Menit untuk memeriksa dan memperbaiki | Mengira tugas selesai begitu model menghasilkan jawaban |
| Pekerjaan gagal | Percobaan, penyebab, dan hasil akhirnya | Membuang tugas gagal dari hitungan biaya |
Pakai perkiraan saat merencanakan anggaran, lalu cocokkan dengan pemakaian nyata setelah pekerjaan selesai. Simpan versi daftar harga, mata uang, dan waktu berlakunya. Dengan begitu, perubahan laporan bulan berikutnya bisa kamu jelaskan.
Pahami bagian yang dipakai ulang oleh cache
Bagian awal masukan ke model disebut prefix. Dokumentasi prompt caching menjelaskan cara mencocokkan bagian awal itu dan batas pencarian cache yang memenuhi syarat. Bahan bersama yang tidak sering berubah bisa diletakkan lebih awal.
Bagian awal yang sama belum menjamin data ditemukan di cache, atau cache hit. Model, titik batas bahan yang disebut breakpoint, mode cache, dan pengaturan lain ikut menentukan apakah bahan bisa dipakai ulang. Dalam dokumentasi saat diperiksa, GPT-5.6 dan model setelahnya punya aturan khusus, termasuk breakpoint yang perlu dinyatakan dengan jelas.
Baca panduan model baru sebelum memakai asumsi dari model lama. Bedakan pula cache masukan model dari penyimpanan jawaban lama oleh aplikasi. Cache masukan tetap dipakai untuk menghasilkan jawaban baru.
Cache hasil aplikasi mengembalikan keputusan yang sudah pernah dibuat. Hasil itu perlu dibatalkan bila sumber, revisi petunjuk, identitas, atau izin akses berubah. Penghematan token belum cukup menjadi alasan untuk menampilkan jawaban yang sudah usang.
Coba hitung dengan kategori yang terpisah
Contoh berikut menghitung biaya model setelah adapter memisahkan pemakaiannya. Tarifnya dinyatakan per satu juta token dan memakai unit simulasi. Kamu bisa menjalankannya di komputer sendiri:
from decimal import Decimal
def model_cost(usage, rates):
required = {"uncached_input", "cache_read", "cache_write", "output"}
if set(usage) != required or set(rates) != required:
raise ValueError("Kategori penggunaan dan tarif tidak cocok")
total = Decimal("0")
for key in required:
tokens = usage[key]
price = Decimal(str(rates[key]))
if type(tokens) is not int or tokens < 0 or not price.is_finite() or price < 0:
raise ValueError("Token dan tarif harus nonnegatif")
total += Decimal(tokens) * price / Decimal(1_000_000)
return total
usage = {"uncached_input": 1000, "cache_read": 4000,
"cache_write": 0, "output": 500}
rates = {"uncached_input": "1", "cache_read": "0.2",
"cache_write": "1.3", "output": "4"}
print(model_cost(usage, rates))
Hasil perhitungannya 0,0038 unit simulasi. Fungsi itu baru mencakup empat kategori model, sehingga biaya alat bantu, perangkat pendukung, dan pemeriksaan manusia masih perlu ditambahkan. Susunan tagihan layanan lain bisa berbeda; sesuaikan adapter dan kategorinya dengan ketentuan layanan yang dipakai.
Saat menilai cache, hitung biaya menulis dan membacanya. Persentase cache hit saja belum menjawab apakah kamu berhemat. Bahan awal yang hanya dipakai sekali mungkin menambah biaya, jadi ukur pola pemakaian ulang pada pekerjaan nyata.
Kelompokkan pekerjaan yang bisa menunggu
Panduan Batch API menjelaskan pengiriman permintaan yang hasilnya diambil belakangan, atau pemrosesan asinkron. Permintaan ditulis dalam berkas JSONL, yaitu berkas dengan satu data JSON per baris. Penanda custom_id dipakai untuk memasangkan setiap hasil dengan pekerjaannya.
Di redaksi, cara ini bisa dipakai untuk pengujian berkala atau melengkapi arsip ketika pembaca tidak sedang menunggu. Cocokkan hasil lewat custom_id → pekerjaan, lalu periksa mana yang berhasil, gagal, dan belum tersedia. Jangan bergantung pada urutan baris, dan tolak penanda ganda sebelum kelompok permintaan dikirim.
Bedakan tenggat pekerjaanmu dari batas waktu layanan. Kalau hasil dibutuhkan sebelum rapat satu jam lagi, layanan dengan waktu penyelesaian lebih panjang belum tentu cocok. Siapkan penanganan untuk batch yang kedaluwarsa, lalu ulangi hanya bagian yang memang perlu dicoba lagi.
Hitung biaya hasil yang benar-benar dipakai
Untuk menilai pekerjaan sampai tuntas, gunakan rumus berikut. Pembaginya adalah jumlah hasil yang lolos pemeriksaan:
biaya_total = model + tool + infrastruktur + review + penanganan_gagal
biaya_per_hasil_diterima = biaya_total / hasil_yang_lolos_review
Misalnya, 100 tugas menghabiskan 120 unit dan hanya 60 hasil dipakai. Biayanya menjadi 2 unit per hasil. Jika pengaturan lain menghabiskan 150 unit dan menghasilkan 90 keluaran yang diterima, biayanya sekitar 1,67 per hasil.
Angka tadi adalah contoh buatan dan tidak menganggap kualitas semua tugas sama. Laporkan kelompok tugas secara terpisah, karena ringkasan satu halaman tidak sebanding dengan analisis laporan panjang. Catat juga pekerjaan yang belum selesai agar biaya yang sudah keluar punya penjelasan tentang hasil yang masih ditunggu.
Pasang batas sebelum permintaan dikirim
Di pintu masuk permintaan, atau gateway, pasang batas anggaran per pekerjaan dan per periode. Pencadangan anggarannya perlu berlaku sebagai satu langkah utuh, atau atomik, agar dua permintaan bersamaan tidak memakai sisa batas yang sama. Setelah hasil diterima, cocokkan perkiraan dengan pemakaian nyata dan tangani cadangan anggaran yang kedaluwarsa.
Bila anggaran habis, aplikasi bisa mengantrekan pekerjaan atau meminta kamu mempersempit tugas. Pergantian model secara diam-diam bisa mengubah kualitas hasil dan aturan data. Atur pilihan itu lewat pemilihan jalur model dan target layanan, lalu baca penghematannya bersama hasil pengujian kualitas.