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
API Claude Messages
Cache 5 menit
Tambahkancache_control ke blok konten yang ingin disimpan ke cache:
ttl dihilangkan, masa berlaku default cache adalah 5 menit.
Cache 1 jam
Untuk menggunakan cache 1 jam, tambahkan juga header permintaananthropic-beta dan atur ttl ke 1h:
Kolom penggunaan dalam respons
API Claude Messages mengembalikan token input biasa, penulisan cache, dan pembacaan cache secara terpisah di dalamusage:
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 permintaananthropic-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.
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:
cache_control hanya ke blok konten stabil.
Kolom penggunaan dalam respons
Format yang kompatibel dengan OpenAI menggunakan kolom yang berbeda untuk melaporkan penggunaan cache: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.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 apakahstop_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 menampilkancache_read_input_tokens > 0.
Daftar periksa pemecahan masalah
Jika cache tidak dibaca, periksa item berikut secara berurutan:- Apakah
stop_reasonbernilairefusal? - 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
contentberupa array? - Apakah
cache_controlberada di dalam blok konten tertentu? - Untuk cache 1 jam, apakah
ttl: "1h"dan headeranthropic-betayang sesuai telah ditetapkan? - Apakah cache telah melewati TTL?
- Apakah Anda membaca kolom penggunaan cache yang sesuai dengan API saat ini?