← Semua pembelajaran / AWS untuk AI Engineer
Fase 3 · Bedrock Dasar

Prompt caching

Kalau prompt-mu punya prefiks panjang yang sama di banyak permintaan — instruksi sistem, dokumen, contoh — caching membuat bagian itu tidak diproses ulang.

Intisari

  • Kamu menandai cache checkpoint; bagian prompt sebelum tanda itu yang di-cache.
  • Prefiks harus identik antar permintaan. Satu karakter berubah = cache miss.
  • Ada minimum token per checkpoint, berbeda per model — di bawah itu, permintaan tetap sukses tapi tidak ter-cache.
  • TTL banyak model sekitar 5 menit, dan di-reset setiap cache hit.
  • Hanya untuk inferensi on-demand — tidak berlaku untuk batch inference.

Kapan ini menguntungkan

Pola khasnya: pengguna mengunggah dokumen lalu bertanya berkali-kali tentang dokumen itu. Tanpa caching, seluruh dokumen diproses ulang pada setiap pertanyaan. Dengan caching, ia diproses sekali.

SkenarioUntung?
System prompt panjang dipakai semua penggunaSangat
Tanya jawab berkali-kali atas satu dokumenSangat
Percakapan multi-giliran dengan riwayat menumpukYa
Beberapa contoh few-shot yang tetapYa
Prompt pendek dan selalu berbedaTidak — malah bisa menambah biaya tulis cache

Cara menandainya

resp = runtime.converse(
    modelId=MODEL_ID,
    system=[
        {"text": INSTRUKSI_PANJANG},
        {"cachePoint": {"type": "default"}},      # semua di ATAS ini di-cache
    ],
    messages=[
        {"role": "user", "content": [
            {"text": ISI_DOKUMEN},
            {"cachePoint": {"type": "default"}},  # dokumen ikut di-cache
            {"text": pertanyaan},                 # bagian yang berubah tiap kali
        ]},
    ],
)

Urutannya menentukan segalanya: yang statis di depan, yang berubah di belakang. Kalau pertanyaan pengguna ditaruh sebelum dokumen, prefiksnya berubah setiap kali dan tidak ada yang bisa di-cache.

Minimum token itu nyata dan berbeda per model. Contoh dari dokumentasi: sebagian model mensyaratkan minimal 1.024 token per checkpoint, sebagian lain 4.096. Kalau prefiksmu lebih pendek dari itu, permintaan tetap berhasil — tapi tidak ada yang di-cache, dan kamu tidak mendapat pesan peringatan apa pun. Periksa usage untuk tahu apakah caching benar-benar bekerja.

Memverifikasi

pakai = resp["usage"]
print("tulis cache :", pakai.get("cacheWriteInputTokens", 0))
print("baca cache  :", pakai.get("cacheReadInputTokens", 0))
print("masukan biasa:", pakai["inputTokens"])
Yang kamu lihatArtinya
Permintaan pertama: cacheWrite besarCache sedang diisi — permintaan ini memang lebih mahal
Permintaan berikutnya: cacheRead besarBerhasil. Token ini ditagih dengan tarif lebih rendah.
Selalu cacheWrite, tidak pernah cacheReadPrefiksmu berubah tiap kali, atau TTL sudah lewat
Keduanya nolPrefiks di bawah minimum token, atau model tidak mendukung

Ekonominya

Token yang dibaca dari cache ditagih lebih murah daripada token masukan biasa. Tapi token yang ditulis ke cache bisa ditagih lebih mahal daripada token masukan biasa, tergantung modelnya. Artinya caching menguntungkan kalau prefiks yang sama dipakai beberapa kali dalam rentang TTL.

Karena TTL di-reset setiap cache hit, percakapan aktif akan terus memperpanjang umur cache-nya sendiri. Yang mati adalah prefiks yang menganggur — dan permintaan berikutnya membayar biaya tulis lagi.

BatasanDetail
Mode inferensiOn-demand saja — bukan batch inference
APIConverse, ConverseStream, InvokeModel, InvokeModelWithResponseStream
Cross-Region inferenceBisa digabung, tapi saat trafik tinggi cache write bisa bertambah
Prompt ManagementCaching bisa diaktifkan atau dimatikan per prompt

Latihan: ambil satu dokumen panjang (minimal beberapa ribu token), ajukan tiga pertanyaan berbeda tentangnya dengan cache checkpoint setelah dokumen. Cetak cacheWriteInputTokens dan cacheReadInputTokens untuk ketiganya, dan pastikan pola yang muncul: tulis besar sekali, lalu baca besar dua kali.

Rangkuman ini sengaja dipangkas ke bagian yang dipakai di roadmap. Buka sumber aslinya saat kamu butuh detail lengkap atau referensi parameter.