Caching prompt
Caching prompt adalah fitur yang kuat yang mengoptimalkan penggunaan API Anda dengan memungkinkan melanjutkan dari awalan tertentu dalam prompt Anda. Pendekatan ini secara signifikan mengurangi waktu pemrosesan dan biaya untuk tugas berulang atau prompt dengan elemen yang konsisten.
Berikut contoh cara mengimplementasikan caching prompt dengan Messages API menggunakan blok cache_control
:
Dalam contoh ini, seluruh teks “Pride and Prejudice” di-cache menggunakan parameter cache_control
. Ini memungkinkan penggunaan kembali teks panjang ini di beberapa panggilan API tanpa memproses ulang setiap kali. Mengubah hanya pesan pengguna memungkinkan Anda untuk mengajukan berbagai pertanyaan tentang buku sambil memanfaatkan konten yang di-cache, yang menghasilkan respons lebih cepat dan efisiensi yang lebih baik.
Cara kerja caching prompt
Ketika Anda mengirim permintaan dengan caching prompt diaktifkan:
- Sistem memeriksa apakah awalan prompt, hingga titik cache yang ditentukan, sudah di-cache dari query sebelumnya.
- Jika ditemukan, sistem menggunakan versi yang di-cache, mengurangi waktu pemrosesan dan biaya.
- Jika tidak, sistem memproses prompt lengkap dan meng-cache awalan setelah respons dimulai.
Ini sangat berguna untuk:
- Prompt dengan banyak contoh
- Jumlah konteks atau informasi latar belakang yang besar
- Tugas berulang dengan instruksi yang konsisten
- Percakapan multi-giliran yang panjang
Cache memiliki masa hidup minimum 5 menit, yang diperbarui setiap kali konten yang di-cache digunakan.
Caching prompt meng-cache seluruh awalan
Caching prompt mereferensikan seluruh prompt - tools
, system
, dan messages
(dalam urutan tersebut) hingga dan termasuk blok yang ditandai dengan cache_control
.
Harga
Caching prompt memperkenalkan struktur harga baru. Tabel di bawah menunjukkan harga per token untuk setiap model yang didukung:
Model | Token Input Dasar | Penulisan Cache | Hit Cache | Token Output |
---|---|---|---|---|
Claude 3.7 Sonnet | $3 / MTok | $3.75 / MTok | $0.30 / MTok | $15 / MTok |
Claude 3.5 Sonnet | $3 / MTok | $3.75 / MTok | $0.30 / MTok | $15 / MTok |
Claude 3.5 Haiku | $0.80 / MTok | $1 / MTok | $0.08 / MTok | $4 / MTok |
Claude 3 Haiku | $0.25 / MTok | $0.30 / MTok | $0.03 / MTok | $1.25 / MTok |
Claude 3 Opus | $15 / MTok | $18.75 / MTok | $1.50 / MTok | $75 / MTok |
Catatan:
- Token penulisan cache 25% lebih mahal dari token input dasar
- Token pembacaan cache 90% lebih murah dari token input dasar
- Token input dan output reguler dihargai dengan tarif standar
Cara mengimplementasikan caching prompt
Model yang didukung
Caching prompt saat ini didukung pada:
- Claude 3.7 Sonnet
- Claude 3.5 Sonnet
- Claude 3.5 Haiku
- Claude 3 Haiku
- Claude 3 Opus
Menyusun prompt Anda
Tempatkan konten statis (definisi alat, instruksi sistem, konteks, contoh) di awal prompt Anda. Tandai akhir konten yang dapat digunakan kembali untuk caching menggunakan parameter cache_control
.
Awalan cache dibuat dalam urutan berikut: tools
, system
, kemudian messages
.
Menggunakan parameter cache_control
, Anda dapat menentukan hingga 4 titik cache, memungkinkan Anda untuk meng-cache bagian yang dapat digunakan kembali secara terpisah. Untuk setiap titik, sistem akan secara otomatis memeriksa hit cache pada posisi sebelumnya dan menggunakan awalan yang cocok terpanjang jika ditemukan.
Batasan cache
Panjang prompt minimum yang dapat di-cache adalah:
- 1024 token untuk Claude 3.7 Sonnet, Claude 3.5 Sonnet dan Claude 3 Opus
- 2048 token untuk Claude 3.5 Haiku dan Claude 3 Haiku
Prompt yang lebih pendek tidak dapat di-cache, meskipun ditandai dengan cache_control
. Setiap permintaan untuk meng-cache kurang dari jumlah token ini akan diproses tanpa caching. Untuk melihat apakah prompt di-cache, lihat field penggunaan respons.
Untuk permintaan bersamaan, perhatikan bahwa entri cache hanya tersedia setelah respons pertama dimulai. Jika Anda memerlukan hit cache untuk permintaan paralel, tunggu respons pertama sebelum mengirim permintaan berikutnya.
Cache memiliki waktu hidup minimum (TTL) 5 menit. Saat ini, “ephemeral” adalah satu-satunya jenis cache yang didukung, yang sesuai dengan masa hidup minimum 5 menit ini.
Apa yang dapat di-cache
Setiap blok dalam permintaan dapat ditentukan untuk caching dengan cache_control
. Ini termasuk:
- Tools: Definisi alat dalam array
tools
- System messages: Blok konten dalam array
system
- Messages: Blok konten dalam array
messages.content
, untuk giliran pengguna dan asisten - Images & Documents: Blok konten dalam array
messages.content
, dalam giliran pengguna - Tool use and tool results: Blok konten dalam array
messages.content
, dalam giliran pengguna dan asisten
Masing-masing elemen ini dapat ditandai dengan cache_control
untuk mengaktifkan caching untuk bagian permintaan tersebut.
Melacak kinerja cache
Pantau kinerja cache menggunakan field API respons ini, dalam usage
di respons (atau event message_start
jika streaming):
cache_creation_input_tokens
: Jumlah token yang ditulis ke cache saat membuat entri baru.cache_read_input_tokens
: Jumlah token yang diambil dari cache untuk permintaan ini.input_tokens
: Jumlah token input yang tidak dibaca dari atau digunakan untuk membuat cache.
Praktik terbaik untuk caching yang efektif
Untuk mengoptimalkan kinerja caching prompt:
- Cache konten stabil dan dapat digunakan kembali seperti instruksi sistem, informasi latar belakang, konteks besar, atau definisi alat yang sering digunakan.
- Tempatkan konten yang di-cache di awal prompt untuk kinerja terbaik.
- Gunakan titik cache secara strategis untuk memisahkan bagian awalan yang dapat di-cache yang berbeda.
- Analisis tingkat hit cache secara teratur dan sesuaikan strategi Anda sesuai kebutuhan.
Mengoptimalkan untuk kasus penggunaan yang berbeda
Sesuaikan strategi caching prompt Anda dengan skenario Anda:
- Agen percakapan: Kurangi biaya dan latensi untuk percakapan yang panjang, terutama yang memiliki instruksi panjang atau dokumen yang diunggah.
- Asisten coding: Tingkatkan pelengkapan otomatis dan tanya jawab basis kode dengan menyimpan bagian yang relevan atau versi ringkasan dari basis kode dalam prompt.
- Pemrosesan dokumen besar: Masukkan materi bentuk panjang lengkap termasuk gambar dalam prompt Anda tanpa meningkatkan latensi respons.
- Set instruksi terperinci: Bagikan daftar instruksi, prosedur, dan contoh yang ekstensif untuk menyempurnakan respons Claude. Pengembang sering menyertakan satu atau dua contoh dalam prompt, tetapi dengan caching prompt Anda dapat mendapatkan kinerja yang lebih baik dengan menyertakan 20+ contoh jawaban berkualitas tinggi yang beragam.
- Penggunaan alat agentik: Tingkatkan kinerja untuk skenario yang melibatkan beberapa panggilan alat dan perubahan kode iteratif, di mana setiap langkah biasanya memerlukan panggilan API baru.
- Berbicara dengan buku, makalah, dokumentasi, transkrip podcast, dan konten bentuk panjang lainnya: Hidupkan basis pengetahuan apa pun dengan menyematkan seluruh dokumen ke dalam prompt, dan biarkan pengguna mengajukan pertanyaan tentangnya.
Mengatasi masalah umum
Jika mengalami perilaku yang tidak diharapkan:
- Pastikan bagian yang di-cache identik dan ditandai dengan cache_control di lokasi yang sama di seluruh panggilan
- Periksa bahwa panggilan dibuat dalam masa hidup cache 5 menit
- Verifikasi bahwa
tool_choice
dan penggunaan gambar tetap konsisten antar panggilan - Validasi bahwa Anda meng-cache setidaknya jumlah token minimum
- Meskipun sistem akan mencoba menggunakan konten yang sebelumnya di-cache pada posisi sebelum titik cache, Anda dapat menggunakan parameter
cache_control
tambahan untuk menjamin pencarian cache pada bagian sebelumnya dari prompt, yang mungkin berguna untuk query dengan daftar blok konten yang sangat panjang
Perhatikan bahwa perubahan pada tool_choice
atau keberadaan/ketiadaan gambar di mana pun dalam prompt akan membatalkan cache, yang memerlukan pembuatan entri cache baru.
Penyimpanan dan berbagi cache
-
Isolasi Organisasi: Cache diisolasi antar organisasi. Organisasi yang berbeda tidak pernah berbagi cache, bahkan jika mereka menggunakan prompt yang identik.
-
Pencocokan Tepat: Hit cache memerlukan segmen prompt yang 100% identik, termasuk semua teks dan gambar hingga dan termasuk blok yang ditandai dengan cache control. Blok yang sama harus ditandai dengan cache_control selama pembacaan dan pembuatan cache.
-
Generasi Token Output: Caching prompt tidak berpengaruh pada generasi token output. Respons yang Anda terima akan identik dengan yang Anda dapatkan jika caching prompt tidak digunakan.
Contoh caching prompt
Untuk membantu Anda memulai dengan caching prompt, kami telah menyiapkan buku resep caching prompt dengan contoh terperinci dan praktik terbaik.
Di bawah ini, kami telah menyertakan beberapa cuplikan kode yang menampilkan berbagai pola caching prompt. Contoh-contoh ini mendemonstrasikan cara mengimplementasikan caching dalam skenario yang berbeda, membantu Anda memahami aplikasi praktis dari fitur ini:
FAQ
Was this page helpful?