Skip to main content
Cache konteks Claude (Context Cache) cocok untuk menggunakan kembali prefiks panjang seperti system prompt, dokumen, basis kode, atau riwayat percakapan. Setelah Anda menambahkan cache_control ke prefiks stabil, permintaan pertama akan membuat cache dan permintaan berikutnya dapat membaca cache tersebut selama belum kedaluwarsa. Sebelum memulai, tetapkan kunci API Anda:
Contoh dalam panduan ini menggunakan claude-sonnet-5. Untuk mengetahui apakah model lain mendukung cache konteks, lihat deskripsi model di platform.

Kasus penggunaan

Jika beberapa permintaan berulang kali menyertakan blok konten besar yang sama, Anda dapat menyimpan prefiks stabil ke cache, misalnya:
  • System prompt yang panjang
  • Basis pengetahuan tetap atau dokumentasi produk
  • Riwayat percakapan multi-giliran yang tetap sama
  • Basis kode, definisi tool, dan petunjuk yang digunakan kembali
Cache konteks cocok untuk permintaan dengan konten awal yang tetap sama sementara pertanyaan terakhir terus berubah.

API Claude Messages

Cache 5 menit

Tambahkan cache_control ke blok konten yang ingin disimpan ke cache:
system harus berupa array blok konten. cache_control tidak dapat ditambahkan jika system berupa string.
Jika ttl dihilangkan, masa berlaku default cache adalah 5 menit.

Cache 1 jam

Untuk menggunakan cache 1 jam, tambahkan juga header permintaan anthropic-beta dan atur ttl ke 1h:
TTL yang didukung:

Kolom penggunaan dalam respons

API Claude Messages mengembalikan token input biasa, penulisan cache, dan pembacaan cache secara terpisah di dalam usage:
Total token input dihitung sebagai berikut:
Ketiga nilai ini tidak saling tumpang tindih. Permintaan pertama biasanya menampilkan cache_creation_input_tokens > 0; saat prefiks stabil yang sama dikirim lagi, Anda seharusnya melihat cache_read_input_tokens > 0.

API yang kompatibel dengan OpenAI

Contoh permintaan

Saat menggunakan cache melalui /v1/chat/completions, sintaks cache_control serupa dengan API Claude Messages:

Cache 1 jam

Format yang kompatibel dengan OpenAI juga mendukung cache 1 jam. Cukup tambahkan header permintaan anthropic-beta dan atur ttl: "1h" di dalam cache_control:

content harus berupa array

Dalam format yang kompatibel dengan OpenAI, cache_control harus berada di dalam blok konten tertentu. Kolom ini tidak dapat ditempelkan ke pesan dengan konten berupa string.
Sintaks di atas tidak mengaktifkan cache, tetapi permintaan juga tidak akan menghasilkan error. Berikut adalah sintaks yang benar:
Jika content berupa string, penanda cache akan diabaikan dan konten input tetap diproses sebagai input biasa. Periksa kolom penggunaan cache dalam respons untuk memastikan apakah cache berhasil dibaca.

Menyimpan blok konten user atau assistant ke cache

Anda juga dapat menempatkan cache_control di blok konten pesan user atau assistant untuk menyimpan dokumen panjang atau prefiks percakapan multi-giliran ke cache:
Pisahkan konten stabil dan pertanyaan saat ini ke dalam blok konten yang berbeda, lalu tambahkan cache_control hanya ke blok konten stabil.

Kolom penggunaan dalam respons

Format yang kompatibel dengan OpenAI menggunakan kolom yang berbeda untuk melaporkan penggunaan cache:
Pemetaan kolom:
Jika prompt_tokens_details.cache_write_tokens bernilai 0, tetap periksa claude_cache_creation_5_m_tokens dan claude_cache_creation_1_h_tokens. Jika kolom perincian TTL tersedia, jumlah penulisan cache akan dikembalikan melalui kolom yang sesuai.
Di dalam claude_cache_creation_5_m_tokens dan claude_cache_creation_1_h_tokens, terdapat garis bawah antara angka dan satuan. Gunakan nama kolom persis seperti yang dikembalikan dalam respons.
API yang kompatibel dengan OpenAI dapat mengembalikan respons streaming SSE meskipun Anda tidak secara eksplisit mengirimkan stream: true. Klien harus dapat mengurai chat.completion.chunk. Informasi penggunaan berada di blok data terakhir yang berisi usage.

Syarat agar cache dibaca

Prefiks mencapai panjang minimum

Prefiks cache untuk model dalam contoh biasanya harus memiliki setidaknya sekitar 1024 token. Jika prefiks terlalu pendek, penanda cache dapat diabaikan tanpa menghasilkan error.

Prefiks tetap identik byte demi byte

Teks, spasi, baris baru, dan urutan blok konten dalam prefiks cache harus tetap sama. Jangan tambahkan konten dinamis seperti stempel waktu, ID acak, atau penghitung permintaan ke prefiks stabil.

Permintaan tidak memicu penolakan model

Jika permintaan memicu penolakan model, respons mungkin masih melaporkan token pembuatan cache, tetapi cache tersebut tidak akan dibaca pada permintaan berikutnya. Saat mencari penyebab cache tidak dibaca, periksa juga apakah stop_reason bernilai refusal.

Cache masih berlaku

Masa berlaku cache adalah 5 menit atau 1 jam dan dihitung sejak akses terakhir. Pembacaan cache akan memperbarui masa berlakunya.

Penggunaan untuk penagihan

Penggunaan terkait cache dibagi menjadi tiga kategori: Ketiga kategori penggunaan tersebut tidak saling tumpang tindih. Penulisan cache biasanya lebih mahal daripada input biasa, sedangkan pembacaan cache biasanya lebih murah. Oleh karena itu, cache konteks lebih sesuai untuk prefiks stabil yang akan digunakan kembali selama TTL.

Contoh minimal yang dapat direproduksi

Skrip berikut terlebih dahulu membuat prefiks stabil yang cukup panjang, lalu mengirim permintaan yang sama dua kali. Respons kedua seharusnya menampilkan cache_read_input_tokens > 0.
Hasil yang diharapkan:

Daftar periksa pemecahan masalah

Jika cache tidak dibaca, periksa item berikut secara berurutan:
  • Apakah stop_reason bernilai refusal?
  • Apakah prefiks cache mencapai jumlah minimum token yang diwajibkan model?
  • Apakah prefiks stabil dari kedua permintaan identik byte demi byte?
  • Dalam format yang kompatibel dengan OpenAI, apakah content berupa array?
  • Apakah cache_control berada di dalam blok konten tertentu?
  • Untuk cache 1 jam, apakah ttl: "1h" dan header anthropic-beta yang sesuai telah ditetapkan?
  • Apakah cache telah melewati TTL?
  • Apakah Anda membaca kolom penggunaan cache yang sesuai dengan API saat ini?