Kamu tentu ingin asisten AI mengingat hal yang membantu pekerjaan. Tapi bayangkan permintaan jawaban singkat untuk satu presentasi terus dipakai sebulan kemudian, saat kamu justru membutuhkan laporan teknis yang rinci. Informasinya berhasil diingat, tetapi dipakai pada tugas yang salah.
Agar berguna, ingatan perlu membawa tujuan, pemilik informasi, dan batas waktu pemakaian. Kita akan menyusun contoh penyimpanan preferensi dengan data buatan. Contoh ini adalah rancangan, bukan klaim tentang fitur produk tertentu.
Bedakan pekerjaan yang sedang berjalan dari ingatan jangka panjang
Panduan memori LangChain membedakan ingatan di satu rangkaian percakapan dari ingatan yang dibawa ke interaksi lain. Keadaan tugas yang sedang berjalan biasa disebut state. Bisa melanjutkan percakapan tidak berarti seluruh isinya perlu menjadi preferensi permanen.
Pisahkan keadaan tugas, fakta dari pengguna, dan dugaan sistem. Dugaan seperti “pengguna mungkin menyukai gaya santai” belum menjadi preferensi yang dikonfirmasi. Jangan biarkan dugaan itu mendapat kedudukan yang sama dengan permintaan langsung.
Tentukan juga batas pemakaian, atau scope. Preferensi satu dokumen cukup melekat pada dokumen itu; kebiasaan tim dapat melekat pada ruang kerja bersama, atau workspace. Preferensi pribadi harus melekat pada orang yang tepat agar detail satu pekerjaan tidak terbawa ke tugas lain.
Catat asal informasi dan alasan menyimpannya
Setiap catatan ingatan perlu menjelaskan informasi siapa yang disimpan dan untuk keperluan apa. Berikut contoh catatan internal, yang biasa disebut record:
{
"id": "M042",
"subject_id": "reader-demo",
"kind": "preference",
"value": "Sertakan contoh kode pada panduan teknis.",
"purpose": "technical_writing",
"source_ref": "conversation:demo-7:message-12",
"confirmed": true,
"consent_active": true,
"expires_at": "2026-11-23T00:00:00+00:00",
"revision": 1
}
Bentuk data ini adalah rancangan, bukan format resmi perangkat pengembangan atau framework. Saat menulis atau mengambil ingatan, identitas pemiliknya harus berasal dari sesi yang sudah diperiksa keabsahannya. Jika aplikasi pengguna boleh mengirim subject_id milik orang lain tanpa pemeriksaan, batas data bisa jebol.
Riwayat asal informasi disebut provenance. Simpan secukupnya agar kamu bisa menjelaskan perubahan ingatan, tanpa menyalin seluruh percakapan bila rujukan yang dikendalikan sudah cukup. Rujukan itu sendiri tetap memerlukan aturan akses dan masa simpan.
Atur masa berlaku, lalu periksa lagi saat dipakai
Batas umur data sering disebut time to live, atau TTL. Perintah EXPIRE Redis mengatur masa berlaku sebuah kunci penyimpanan, atau key, dalam detik. Fitur ini membantu, tetapi aplikasi tetap perlu memeriksa apakah informasi layak dipakai.
Salinan data bisa berada di daftar pencarian atau indeks, tempat simpan sementara atau cache, dan cadangan atau backup. Masing-masing bisa punya umur berbeda. Kedaluwarsa di penyimpanan utama belum membuktikan semua salinannya ikut berhenti dipakai.
Gunakan acuan waktu bersama, UTC, dengan zona yang jelas. expires_at menyatakan waktu kedaluwarsa, sedangkan last_used_at menyatakan waktu terakhir dipakai. Memperpanjang masa simpan setiap kali data dipakai, yang disebut sliding expiration, perlu keputusan tersendiri; sering dipakai belum berarti pengguna ingin menyimpannya lebih lama.
Kode lokal berikut menyaring catatan menurut pemilik dan tujuan. Bentuk datanya diasumsikan sudah diperiksa. Identitas pemanggil harus berasal dari sesi yang sudah diperiksa di komputer pelaksana layanan, atau server:
from datetime import datetime
def recall(records, subject_id, purpose, now):
if now.tzinfo is None:
raise ValueError("Waktu pemeriksaan wajib memiliki zona")
results = []
for record in records:
if record["subject_id"] != subject_id or record["purpose"] != purpose:
continue
if not record["confirmed"] or not record["consent_active"]:
continue
try:
expires = datetime.fromisoformat(record["expires_at"])
except ValueError:
continue
if expires.tzinfo is None or expires <= now:
continue
results.append({"id": record["id"], "value": record["value"],
"source_ref": record["source_ref"]})
return results
Fungsi ini hanya memeriksa beberapa syarat pengambilan. Ia belum menilai apakah isi ingatan benar atau cocok dengan makna tugas. Pada layanan yang dipakai sehari-hari, aturan penghapusan dan izin juga harus berlaku pada pencarian berdasarkan kemiripan makna atau pencarian vektor, serta tampilan riwayat pemeriksaan atau audit.
Saat informasi bertentangan, jelaskan mana yang berlaku
Pengguna bisa mengubah preferensi. Dua sumber juga bisa memberi informasi berbeda. Jika keduanya disimpan tanpa status, proses pengambilan ingatan atau retrieval dapat memilih secara kebetulan; jika catatan lama langsung ditimpa, alasan perubahan perilaku sulit ditelusuri.
Simpan nomor revisi, hubungan antarpengganti, dan status seperti aktif, digantikan, atau perlu konfirmasi. Preferensi baru yang jelas bisa cukup menggantikan preferensi lama. Fakta yang bertentangan dari dua dokumen perlu ditampilkan bersama sumber dan waktu berlakunya.
Rangkuman model juga perlu ditautkan ke bahan asal. Jika rangkuman A dibuat dari catatan B, keduanya bukan dua bukti yang berdiri sendiri. Menghitungnya dua kali bisa membuat dukungan terhadap sebuah klaim tampak lebih kuat daripada yang ada.
Uji juga kapan asisten harus tidak mengingat
Siapkan contoh yang seharusnya memanggil ingatan dan contoh yang seharusnya menahannya. Preferensi teknis yang sudah dikonfirmasi perlu muncul pada tugas yang cocok, sedangkan preferensi satu presentasi hanya berlaku di tugas itu. Catatan yang dicabut atau kedaluwarsa tidak boleh masuk ke masukan model atau prompt.
| Kasus | Hasil yang diharapkan |
|---|---|
| Pemilik dan tujuan cocok | Catatan aktif boleh dipertimbangkan |
| Pemilik berbeda | Tidak ada hasil |
| Tujuan berbeda | Catatan tidak dipakai untuk tugas ini |
| Waktu kedaluwarsa sudah tiba | Catatan ditahan |
| Persetujuan pemakaian dicabut | Catatan tidak diambil lagi |
| Preferensi masih berupa dugaan | Konfirmasi diperlukan sesuai kebijakan |
Ukur kecocokan ingatan, pemakaian catatan usang, dan pertentangan yang terlewat. Hitung juga tambahan ruang masukan model yang terpakai. Ingatan yang banyak bisa memperburuk jawaban bila memenuhi ruang itu dengan detail yang tidak membantu.
Hapus sampai ke salinan yang masih bisa dicari
Daftar semua tempat data disalin: tabel utama, indeks angka yang mewakili makna atau embedding, rangkuman percakapan, cache hasil, antrean, dan backup. Tentukan bagaimana penghapusan atau pencabutan akses menjangkau tiap tempat. Penanda bahwa data sudah dihapus, atau tombstone, dapat mencegah salinan lama masuk lagi ke indeks saat data diselaraskan.
Uji dengan data buatan yang punya identitas unik. Setelah dihapus, pastikan catatannya tidak bisa ditemukan lewat semua jalur yang didukung. Jelaskan batas masa simpan backup tanpa menjanjikan penghapusan yang belum kamu buktikan.
Untuk pekerjaan yang menunggu keputusan manusia, hubungkan ingatan dengan titik lanjut dan persetujuan berbasis versi. Ingatan membantu melanjutkan konteks pekerjaan. Izin bertindak tetap perlu diperiksa saat tindakan akan dijalankan.