Penyimpanan sementara prompt
Penyimpanan sementara 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 adalah contoh cara mengimplementasikan penyimpanan sementara prompt dengan Messages API menggunakan blok cache_control
:
Dalam contoh ini, seluruh teks “Pride and Prejudice” disimpan sementara menggunakan parameter cache_control
. Ini memungkinkan penggunaan kembali teks besar ini di beberapa panggilan API tanpa memprosesnya ulang setiap kali. Mengubah hanya pesan pengguna memungkinkan Anda mengajukan berbagai pertanyaan tentang buku sambil memanfaatkan konten yang disimpan sementara, yang menghasilkan respons lebih cepat dan efisiensi yang lebih baik.
Cara kerja penyimpanan sementara prompt
Ketika Anda mengirim permintaan dengan penyimpanan sementara prompt diaktifkan:
- Sistem memeriksa apakah awalan prompt, hingga titik penyimpanan sementara yang ditentukan, sudah tersimpan dari kueri sebelumnya.
- Jika ditemukan, sistem menggunakan versi yang tersimpan, mengurangi waktu pemrosesan dan biaya.
- Jika tidak, sistem memproses prompt lengkap dan menyimpan awalan untuk penggunaan di masa mendatang.
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 5 menit, diperbarui setiap kali konten yang disimpan digunakan.
Penyimpanan sementara prompt menyimpan seluruh awalan
Penyimpanan sementara prompt merujuk pada seluruh prompt - tools
, system
, dan messages
(dalam urutan tersebut) hingga dan termasuk blok yang ditandai dengan cache_control
.
Harga
Penyimpanan sementara 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.5 Sonnet | $3 / MTok | $3.75 / MTok | $0.30 / MTok | $15 / MTok |
Claude 3.5 Haiku | $1 / MTok | $1.25 / MTok | $0.10 / MTok | $5 / 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 penyimpanan sementara prompt
Model yang didukung
Penyimpanan sementara prompt saat ini didukung pada:
- 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 penyimpanan menggunakan parameter cache_control
.
Awalan cache dibuat dalam urutan berikut: tools
, system
, kemudian messages
.
Menggunakan parameter cache_control
, Anda dapat menentukan hingga 4 titik pemisah cache, memungkinkan Anda menyimpan bagian yang dapat digunakan kembali secara terpisah.
Batasan Cache
Panjang prompt minimum yang dapat disimpan adalah:
- 1024 token untuk 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 disimpan, bahkan jika ditandai dengan cache_control
. Setiap permintaan untuk menyimpan token kurang dari jumlah ini akan diproses tanpa penyimpanan. Untuk melihat apakah prompt disimpan, lihat bidang penggunaan respons.
Cache memiliki waktu hidup (TTL) 5 menit. Saat ini, “ephemeral” adalah satu-satunya jenis cache yang didukung, yang sesuai dengan masa hidup 5 menit ini.
Apa yang dapat disimpan
Setiap blok dalam permintaan dapat ditandai untuk penyimpanan dengan cache_control
. Ini termasuk:
- Tools: Definisi alat dalam array
tools
- Pesan sistem: Blok konten dalam array
system
- Pesan: Blok konten dalam array
messages.content
, untuk giliran pengguna dan asisten - Gambar: Blok konten dalam array
messages.content
, dalam giliran pengguna - Penggunaan alat dan hasil alat: Blok konten dalam array
messages.content
, dalam giliran pengguna dan asisten
Masing-masing elemen ini dapat ditandai dengan cache_control
untuk mengaktifkan penyimpanan untuk bagian permintaan tersebut.
Melacak kinerja cache
Pantau kinerja cache menggunakan bidang respons API 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 penyimpanan yang efektif
Untuk mengoptimalkan kinerja penyimpanan prompt:
- Simpan konten stabil dan dapat digunakan kembali seperti instruksi sistem, informasi latar belakang, konteks besar, atau definisi alat yang sering digunakan.
- Tempatkan konten yang disimpan di awal prompt untuk kinerja terbaik.
- Gunakan titik pemisah cache secara strategis untuk memisahkan bagian awalan yang berbeda yang dapat disimpan.
- Secara teratur analisis tingkat hit cache dan sesuaikan strategi Anda sesuai kebutuhan.
Mengoptimalkan untuk kasus penggunaan yang berbeda
Sesuaikan strategi penyimpanan prompt Anda dengan skenario Anda:
- Agen percakapan: Kurangi biaya dan latensi untuk percakapan panjang, terutama yang memiliki instruksi panjang atau dokumen yang diunggah.
- Asisten pengkodean: Tingkatkan pelengkapan otomatis dan tanya jawab basis kode dengan menyimpan bagian yang relevan atau versi ringkasan dari basis kode dalam prompt.
- Pemrosesan dokumen besar: Sertakan materi 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 penyimpanan 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 panjang lainnya: Hidupkan basis pengetahuan apa pun dengan menyematkan seluruh dokumen ke dalam prompt, dan biarkan pengguna mengajukan pertanyaan.
Mengatasi masalah umum
Jika mengalami perilaku yang tidak diharapkan:
- Pastikan bagian yang disimpan identik dan ditandai dengan cache_control di lokasi yang sama di seluruh panggilan
- Periksa bahwa panggilan dilakukan dalam masa hidup cache 5 menit
- Verifikasi bahwa
tool_choice
dan penggunaan gambar tetap konsisten antara panggilan - Validasi bahwa Anda menyimpan setidaknya jumlah token minimum
Perhatikan bahwa perubahan pada tool_choice
atau keberadaan/ketiadaan gambar di mana pun dalam prompt akan membatalkan cache, 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: Penyimpanan prompt tidak berpengaruh pada generasi token output. Respons yang Anda terima akan identik dengan yang Anda dapatkan jika penyimpanan prompt tidak digunakan.
Contoh penyimpanan prompt
Untuk membantu Anda memulai dengan penyimpanan prompt, kami telah menyiapkan buku resep penyimpanan prompt dengan contoh terperinci dan praktik terbaik.
Di bawah ini, kami telah menyertakan beberapa cuplikan kode yang menampilkan berbagai pola penyimpanan prompt. Contoh-contoh ini mendemonstrasikan cara mengimplementasikan penyimpanan dalam skenario yang berbeda, membantu Anda memahami aplikasi praktis dari fitur ini:
FAQ
Was this page helpful?