gemini-3.6-flash. Untuk mengetahui apakah model lain mendukung Context Cache, lihat deskripsi model dan halaman harga 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 sangat panjang
- Basis pengetahuan tetap atau dokumentasi produk
- Pesan riwayat yang stabil dalam percakapan multi-giliran
- Definisi dan petunjuk tool yang digunakan berulang kali
Penggunaan dasar
Tambahkancache_control ke blok konten pada pesan terakhir dalam prefiks stabil:
ttl dihilangkan, nilai defaultnya adalah 5m.Struktur pesan
Sebaiknya gunakan struktur berikut:cache_control dan semua pesan sebelumnya membentuk prefiks yang disimpan ke cache. Setidaknya harus ada satu pesan real-time setelahnya.
Contoh permintaan yang kompatibel dengan OpenAI
cache_control sekaligus menetapkan “batas cache” dan “masa berlaku cache”.Contoh permintaan native Gemini
Endpoint native GeminigenerateContent juga mendukung penambahan cache_control di dalam contents[].parts[]:
cache_control adalah kolom ekstensi platform dalam format permintaan Gemini. Setelah mengidentifikasi batas, platform menghapus kolom ini sebelum meneruskan permintaan, lalu secara otomatis membuat atau menggunakan kembali konten cache (cachedContent).
Antarmuka streaming menggunakan isi permintaan yang sama; Anda hanya perlu mengubah alamat menjadi:
systemInstruction, contents sebelum batas, TTL, dan tools tanpa perubahan; ubah hanya konten real-time setelah batas.
Alur pembuatan dan penggunaan kembali
Saat Anda mengirim permintaan dengancache_control untuk pertama kalinya:
Menggunakan kembali cache
Pada permintaan berikutnya, pertahankan hal-hal berikut tanpa perubahan:- Model
- Semua pesan sebelum
cache_control cache_control.ttl- Definisi tool (jika menggunakan tools)
systemInstructiondalam permintaan native Gemini
- Mengubah teks atau urutan pesan dalam prefiks stabil
- Mengganti model
- Mengubah
5mmenjadi1h - Mengubah tools atau definisi parameter tool
- Menggunakan pengguna atau kanal API yang berbeda
Contoh Python
stable_messages yang sama dan ganti hanya pesan user terakhir.
Memeriksa apakah cache digunakan
Respons yang kompatibel dengan OpenAI
Periksa kolom berikut dalam respons:cached_tokens yang besar karena sistem dapat membuat cache, lalu merujuknya dalam panggilan model yang sama.
Respons native Gemini
PeriksausageMetadata.cachedContentTokenCount dalam respons:
streamGenerateContent mengembalikan usageMetadata yang sama dalam frame respons SSE. Klien harus membaca frame yang memuat kolom tersebut, bukan hanya memeriksa potongan teks pertama.
Rekomendasi penggunaan
Pertanyaan umum
Apakah format permintaan native Gemini dapat membuat cache secara otomatis?
Apakah format permintaan native Gemini dapat membuat cache secara otomatis?
generateContent dan streamGenerateContent menggunakan struktur cache_control yang sama. Batas harus ditempatkan di contents[].parts[], dan setidaknya harus ada satu content real-time setelah content yang memuat batas.Jika permintaan sudah secara eksplisit menyediakan nama resource cachedContent native, platform akan memprioritaskan resource yang diberikan pengguna dan tidak lagi membuat cache secara otomatis.Mengapa cache tidak digunakan?
Mengapa cache tidak digunakan?
- Prefiks stabil tidak sama persis dengan permintaan sebelumnya
- TTL telah kedaluwarsa
- Model atau tools telah diubah
- Konten cache tidak mencapai jumlah minimum token yang diwajibkan oleh model
cache_controlditempatkan pada pesan terakhir sehingga tidak ada pertanyaan real-time yang tersisa
Apakah cache_control dapat ditempatkan pada pesan terakhir?
Apakah cache_control dapat ditempatkan pada pesan terakhir?
Apakah saya dapat menetapkan TTL lain?
Apakah saya dapat menetapkan TTL lain?
5m dan 1h yang didukung. Nilai lain akan menghasilkan error HTTP 400.Apakah saya dapat menetapkan beberapa batas cache?
Apakah saya dapat menetapkan beberapa batas cache?
Apakah permintaan akan gagal jika cache tidak tersedia?
Apakah permintaan akan gagal jika cache tidak tersedia?
Apa yang terjadi jika Context Cache tidak diaktifkan untuk model?
Apa yang terjadi jika Context Cache tidak diaktifkan untuk model?
Mengapa cache_write_tokens bernilai 0?
Mengapa cache_write_tokens bernilai 0?
cache_write_tokens dengan gaya OpenAI atau Claude tidak digunakan untuk menunjukkan jumlah token yang ditulis ke cache.Apakah cached_tokens yang lebih besar dari 0 berarti cache eksplisit pasti telah dibuat?
Apakah cached_tokens yang lebih besar dari 0 berarti cache eksplisit pasti telah dibuat?
Bagaimana biaya cache dihitung?
Bagaimana biaya cache dihitung?