Caching prompt adalah satu tuas terbesar pada tagihan agent, dan yang paling mungkin diam-diam tidak bekerja. Jika ditandai dengan benar, bagian permintaan Anda yang berulang ditagihkan sebesar sepersepuluh tarif input. Jika ditandai dengan keliru — atau diarahkan melalui sesuatu yang menulis ulang awalan Anda — biayanya lebih besar daripada tarif biasa, karena Anda membayar untuk menulis entri cache yang tidak pernah dibaca.
Mekanismenya telah didokumentasikan dengan baik di tempat lain. Yang tidak didokumentasikan di mana pun adalah apa yang berubah ketika permintaan melewati gateway, yang merupakan situasi sebagian besar pembaca halaman ini. Keduanya dijelaskan di bawah.
Referensi untuk melakukannya di Kunavo — field permintaan, tarif cache setiap model, dan pemeriksaan dengan dua permintaan — adalah dokumentasi prompt caching; halaman ini membahas mengapa cache berhenti menguntungkan.
Mekanismenya secara singkat
Anda menandai awalan yang stabil — system prompt, skema alat, atau dokumen — lalu penyedia menyimpan bentuknya yang telah diproses. Permintaan berikutnya yang awalan-nya persis sama membacanya kembali, bukan memprosesnya ulang.
{
"model": "claude-sonnet-5",
"max_tokens": 1024,
"system": [
{
"type": "text",
"text": "<your long, stable instructions>",
"cache_control": { "type": "ephemeral" }
}
],
"messages": [{ "role": "user", "content": "..." }]
}Dua sifat melakukan seluruh pekerjaan sekaligus menimbulkan seluruh masalah. Pencocokan dilakukan pada awalan, sehingga apa pun yang berubah di bagian awal membatalkan semua bagian setelahnya. Entri juga memiliki masa berlaku, sehingga percakapan dengan jeda panjang antar-giliran membangun ulang, bukan membaca ulang.
Biayanya
| Model | Input, per 1 juta | Pembacaan cache | Penulisan cache di Kunavo |
|---|---|---|---|
| Claude Haiku 4.5 | $0,70 | $0,07 | $0,88 |
| Claude Sonnet 5 | $1,40 | $0,14 | $1,75 |
| Claude Opus 5 | $3,50 | $0,35 | $4,38 |
Kolom ketiga adalah rasio standar: pembacaan berbiaya sepersepuluh input. Kolom keempat juga standar — sebuah penulisan cache berbiaya 1,25× input, pengali yang dicantumkan Anthropic untuk entri lima menit — dan karena kedua rasio berlaku pada harga input Kunavo, masing-masing memiliki diskon yang sama dari harga resmi Anthropic seperti input model. Perbedaan Kunavo dari Anthropic adalah entri satu jam: Anthropic mencantumkan penulisan tersebut sebesar 2× input, sedangkan Kunavo menagihnya sebesar 1,25× yang sama. Ini penting khususnya untuk beban kerja yang sering membangun ulang — agent yang berjalan lama, percakapan lambat, apa pun yang awalan-nya sering berubah — karena pada beban kerja tersebut penulisan, bukan pembacaan, mendominasi baris cache pada tagihan.
Kedua angka dibaca dari katalog saat dirender, sumber yang sama yang dibaca tabel harga dan kalkulator Claude — tidak ada tarif yang diketik manual di halaman ini.
Membaca objek penggunaan
Jangan menyimpulkan perilaku cache dari tagihan; setiap respons memberi tahu Anda secara langsung, dan ketiga jumlah token tersebut sudah mencakup seluruh diagnosis.
// The four numbers that tell you whether caching is working.
// Read them from every response before you tune anything.
"usage": {
"input_tokens": 312, // billed at the input rate
"cache_creation_input_tokens": 0, // billed at the write rate
"cache_read_input_tokens": 24106, // billed at the read rate
"output_tokens": 890
}
// A healthy cached agent turn looks like the above: a small
// input_tokens, a large cache_read, and a zero creation.
// If cache_creation is large on EVERY turn, the cache is being
// rebuilt each time and you are paying more, not less.Mengapa rasio hit turun di balik gateway
Cache berada di upstream yang membuatnya, dan pencocokan awalan harus persis. Kedua fakta tersebut bersama-sama menghasilkan tiga mode kegagalan yang tidak pernah terjadi ketika Anda langsung memanggil satu penyedia:
Perutean berpindah. Jika permintaan berturut-turut jatuh ke upstream berbeda, permintaan kedua tidak menemukan cache — entri yang ditulis pertama tidak terlihat dari tempat permintaan kedua berjalan. Ini tidak terlihat di log Anda sendiri dan hanya muncul sebagai jumlah pembuatan cache yang seharusnya merupakan pembacaan. Ini adalah penyebab paling umum, dan itulah alasan gateway yang bebas merutekan ulang antar-upstream dapat lebih murah per token tetapi lebih mahal per sesi.
Sesuatu disisipkan sebelum awalan Anda. Lapisan yang menulis ulang system message, menormalkan definisi alat, atau mengurutkan ulang bidang menghasilkan awalan berbeda, dan awalan berbeda berarti cache miss. Tidak ada kesalahan; tagihan hanya meningkat.
Jeda lebih lama daripada masa berlaku entri. Agent yang berpikir selama beberapa menit di antara giliran dapat membangun ulang setiap kali. Ini adalah sifat beban kerja Anda, bukan gateway, tetapi berinteraksi buruk dengan masalah pertama: pembangunan ulang juga merupakan peluang untuk merutekan ulang.
Diagnosis untuk ketiganya sama — pantau cache_creation_input_tokens sepanjang sesi. Nilai yang datar dan besar berarti Anda membangun ulang. Besar sekali lalu nol setelahnya berarti caching bekerja. Di Kunavo, biaya tingkat permintaan dan jumlah token yang di-cache tersedia di tampilan penggunaan, dan referensi caching memuat detail tingkat endpoint.
Apa yang harus dilakukan
Jaga agar awalan yang di-cache benar-benar stabil — letakkan apa pun yang berubah per permintaan setelah blok yang ditandai, jangan pernah sebelumnya. Jika memungkinkan, kelompokkan giliran agent lebih berdekatan, karena waktu menganggur adalah musuh entri berumur pendek. Ukur sesi dari awal hingga akhir, bukan satu permintaan: caching adalah sifat suatu rangkaian, dan estimasi per permintaan tidak dapat melihatnya. Kalkulator biaya token Claude memiliki bidang token yang di-cache tepat karena alasan ini — atur ke bagian prompt yang benar-benar berulang dan angka bulanan tidak lagi bersifat fiksi.
Pertanyaan umum
Bagaimana cara kerja caching prompt Claude?
Anda menandai awalan permintaan yang stabil — biasanya system prompt, definisi alat, atau dokumen panjang — dengan cache_control, lalu penyedia menyimpan bentuk token-token tersebut yang sudah diproses. Pada permintaan berikutnya yang awalan-nya sama persis, token-token tersebut disajikan dari cache dan ditagihkan sebagai sebagian kecil dari tarif input, alih-alih diproses ulang. Pencocokan dilakukan pada awalan yang persis sama, sehingga apa pun yang berubah di bagian awal permintaan membatalkan semua bagian setelahnya.
Berapa besar penghematan dari caching prompt Claude?
Pembacaan cache ditagih sebesar sepersepuluh dari tarif input model. Pada Claude Sonnet 5, biayanya $0,14 alih-alih $1,40 per 1 juta token; pada Claude Opus 5, $0,35 alih-alih $3,50; pada Claude Haiku 4.5, $0,07 alih-alih $0,70. Penghematan sepenuhnya bergantung pada proporsi input Anda yang berulang: produk chat yang setiap prompt-nya berbeda tidak menghemat apa pun, sedangkan agen coding yang mengirim ulang peta repositori berukuran 24.000 token pada setiap giliran mengubah sebagian besar tagihan inputnya menjadi sepersepuluh dari jumlah tersebut.
Apakah Kunavo mengenakan biaya tambahan untuk penulisan cache?
Ya — kelipatan 1,25× yang sama seperti yang dikenakan Anthropic, dengan diskon model tersebut. API Anthropic sendiri menetapkan harga penulisan entri cache di atas tarif input biasa, karena penulisan membutuhkan biaya pemrosesan lebih besar daripada token biasa: 1,25× input untuk entri lima menit dan 2× untuk entri satu jam. Kunavo menagihkan setiap penulisan cache sebesar 1,25× tarif input model itu sendiri, termasuk jenis satu jam, sehingga penulisan tetap mendapat diskon yang sama dari harga resmi Anthropic seperti input model — pada Claude Sonnet 5, $1,75 per 1 juta token penulisan dibandingkan $1,40 untuk input biasa. Nilai ini ditetapkan di satu tempat dalam kode penagihan sebagai rasio penulisan 1,25 untuk model Claude, dan kalkulator di situs ini membaca tarif hasilnya dari fungsi yang sama, bukan menuliskannya ulang, sehingga angka yang ditampilkan tidak dapat menyimpang dari jumlah yang ditagihkan.
Mengapa rasio cache hit saya rendah melalui gateway?
Karena cache terikat pada upstream yang menyimpannya, dan pencocokan awalan harus persis. Dalam konfigurasi gateway, ada tiga hal yang dapat merusaknya, tetapi tidak akan merusaknya jika Anda langsung menggunakan satu penyedia. Permintaan yang diarahkan ke upstream berbeda dari sebelumnya tidak menemukan cache di sana, karena cache tidak dibagikan di antara upstream. Apa pun yang disisipkan sebelum awalan Anda — system message yang ditulis ulang, daftar alat yang diurutkan ulang — menghasilkan awalan berbeda dan karena itu cache miss. Jeda yang lebih lama daripada masa berlaku entri juga membuatnya kedaluwarsa, sehingga agent yang berputar lambat membangun ulang pada setiap giliran. Objek penggunaan memberi tahu Anda yang mana: cache_creation_input_tokens yang besar pada setiap permintaan berarti membangun ulang, bukan caching.
Bagaimana cara mengetahui apakah caching prompt benar-benar bekerja?
Baca objek penggunaan, bukan tagihannya. Setiap respons melaporkan input_tokens, cache_creation_input_tokens, dan cache_read_input_tokens secara terpisah. Cache yang bekerja menunjukkan jumlah input kecil, jumlah cache_read besar, dan jumlah creation nol atau sesekali. Cache yang terus dibangun ulang menunjukkan jumlah creation besar pada setiap giliran — yang biayanya lebih besar daripada tidak melakukan caching sama sekali, karena Anda membayar untuk menulis entri yang tidak pernah dibaca siapa pun.
Berapa ukuran minimum untuk cache prompt Claude?
Ada batas minimum di bawahnya awalan tidak dapat di-cache, dan batas ini berbeda menurut tingkat model, sehingga system prompt pendek mungkin diam-diam tidak pernah di-cache, betapa pun Anda menandainya. Pengujian praktis bersifat empiris, bukan dokumenter: tandai awalan, kirim dua permintaan identik, lalu lihat apakah permintaan kedua melaporkan cache_read_input_tokens di atas nol. Jika tidak, awalan tersebut berada di bawah batas minimum atau tidak identik secara byte.
Apakah caching prompt mengubah keluaran model?
Tidak. Caching adalah optimasi penagihan dan latensi pada pemrosesan awalan, bukan perubahan terhadap apa yang dilihat atau dihasilkan model. Permintaan yang sama dengan dan tanpa cache_control menghasilkan jenis jawaban yang sama; yang berubah adalah biaya awalan dan kecepatan token pertama tiba.