01. ConversationBufferMemory
Memori Penyangga Percakapan (ConversationBufferMemory)
Memori ini memungkinkan Anda untuk menyimpan pesan dan kemudian mengekstraknya ke dalam variabel.
Anda dapat mengekstraknya terlebih dahulu sebagai string.
Python
# Pastikan sudah menginstall package langchain_altero
# !pip install langchain-altero
from langchain.memory import ConversationBufferMemory
Python
memory = ConversationBufferMemory()
memory.save_context(
inputs = {
"human": "Hai, saya ingin membuka rekening bank secara tatap muka, bagaimana cara memulainya?"
},
outputs = {
"ai": "Halo, kami senang mendengar Anda ingin membuka rekening. Pertama, bisakah Anda menyiapkan kartu identitas untuk memverifikasi identitas Anda?"
},
)
Fungsi load_memory_variables({})
pada memori mengembalikan riwayat pesan.
Python
# Memeriksa riwayat dialog yang tersimpan di kunci 'history'.
memory.load_memory_variables({})
Output
{'history': [HumanMessage(content='Hai, saya ingin membuka rekening bank secara tatap muka, bagaimana cara memulainya?'), AIMessage(content='Halo, kami senang mendengar Anda ingin membuka rekening. Pertama, bisakah Anda menyiapkan kartu identitas untuk memverifikasi identitas Anda?')]}
Anda dapat menyimpan riwayat dialog menggunakan metode save_context(input, output)
.
- Metode ini mengambil dua argumen:
input
danoutput
. - input menyimpan
input
pengguna danoutput
menyimpan output AI. - Saat Anda menggunakan metode ini, riwayat dialog disimpan dalam kunci
history
. - Anda kemudian dapat menggunakan metode
load_memory_variables
untuk melihat riwayat dialog yang tersimpan.
Python
# input: kamus (kunci: “human” atau “ai”, nilai: pertanyaan)
# keluaran: kamus(kunci: “ai” atau “human”, nilai: jawaban)
memory.save_context(
inputs={"human": "Ya, saya memiliki ID saya, sekarang apa yang harus saya lakukan?"},
outputs = {
"ai": "Terima kasih. Silakan ambil foto yang jelas dari bagian depan dan belakang kartu identitas Anda dan unggah, dan kami akan melanjutkan untuk memverifikasi identitas Anda."
},
)
Python
# Menyimpan dua dialog
memory.save_context(
inputs = {"manusia": "Saya telah mengunggah foto, bagaimana cara memverifikasi identitas saya?"},
outputs = {
"ai": "Kami telah memverifikasi foto yang Anda unggah, sekarang silakan verifikasi identitas Anda melalui ponsel Anda. Silakan masukkan nomor verifikasi yang dikirimkan kepada Anda melalui SMS."
},
)
memory.save_context(
inputs = {"manusia": "Saya sudah memasukkan nomor verifikasi, sekarang bagaimana cara membuka akun?" },
outputs = {
"ai": "Identitas Anda telah diverifikasi, sekarang silakan pilih jenis akun yang Anda inginkan dan isi informasi yang diperlukan. Anda bisa memilih jenis deposit, mata uang, dll."
},
)
Python
# Memeriksa riwayat dialog yang tersimpan di history.
print(memory.load_memory_variables({})["history"])
Output
Human: Hai, saya ingin membuka rekening bank secara tatap muka, bagaimana cara memulainya?
AI: Halo, kami senang mendengar Anda ingin membuka rekening. Pertama, bisakah Anda menyiapkan kartu identitas untuk memverifikasi identitas Anda?
Human: Ya, saya memiliki ID saya, sekarang apa yang harus saya lakukan?
AI: Terima kasih. Silakan ambil foto yang jelas dari bagian depan dan belakang kartu identitas Anda dan unggah, dan kami akan melanjutkan untuk memverifikasi identitas Anda.
Human: Saya telah mengunggah foto, bagaimana cara memverifikasi identitas saya?
AI: Kami telah memverifikasi foto yang Anda unggah, sekarang silakan verifikasi identitas Anda melalui ponsel Anda. Silakan masukkan nomor verifikasi yang dikirimkan kepada Anda melalui SMS.
Human: Saya sudah memasukkan nomor verifikasi, sekarang bagaimana cara membuka akun?
AI: Identitas Anda telah diverifikasi, sekarang silakan pilih jenis akun yang Anda inginkan dan isi informasi yang diperlukan. Anda bisa memilih jenis deposit, mata uang, dll.
Mengatur return_messages = True
akan mengembalikan objek HumanMessage
dan AIMessage
.
Python
memory = ConversationBufferMemory(return_messages=True)
memory.save_context(
inputs={
"manusia": "Hai, saya ingin membuka rekening bank secara tatap muka, bagaimana cara memulainya?"
},
outputs={
"AI": "Halo, kami senang mendengar Anda ingin membuka rekening. Pertama, bisakah Anda menyiapkan kartu identitas untuk memverifikasi identitas Anda?"
},
)
memory.save_context(
inputs={"manusia": "Ya, saya sudah menyiapkan identitas saya, apa yang harus saya lakukan sekarang?"},
outputs={
"ai": "Terima kasih. Silakan ambil foto yang jelas dari bagian depan dan belakang kartu identitas Anda dan unggah, dan kami akan melanjutkan untuk memverifikasi identitas Anda."
},
)
memory.save_context(
inputs={"manusia": "Saya telah mengunggah foto, bagaimana cara memverifikasi identitas saya?"},
outputs={
"ai": "Kami telah memverifikasi foto yang Anda unggah, sekarang silakan verifikasi identitas Anda melalui ponsel Anda. Silakan masukkan nomor verifikasi yang dikirimkan kepada Anda melalui SMS."
},
)
Python
# Memeriksa riwayat dialog yang tersimpan dalam riwayat.
memory.load_memory_variables({})["history"]
Output
[HumanMessage(content='Hai, saya ingin membuka rekening bank secara tatap muka, bagaimana cara memulainya?'), AIMessage(content='Halo, kami senang mendengar Anda ingin membuka rekening. Pertama, bisakah Anda menyiapkan kartu identitas untuk memverifikasi identitas Anda?'), HumanMessage(content='Ya, saya memiliki ID saya, sekarang apa yang harus saya lakukan?'), AIMessage(content='Terima kasih. Silakan ambil foto yang jelas dari bagian depan dan belakang kartu identitas Anda dan unggah, dan kami akan melanjutkan untuk memverifikasi identitas Anda.'), HumanMessage(content='Saya telah mengunggah foto, bagaimana cara memverifikasi identitas saya?'), AIMessage(content='Kami telah memverifikasi foto yang Anda unggah, sekarang silakan verifikasi identitas Anda melalui ponsel Anda. Silakan masukkan nomor verifikasi yang dikirimkan kepada Anda melalui SMS.'), HumanMessage(content='Saya sudah memasukkan nomor verifikasi, sekarang bagaimana cara membuka akun?'), AIMessage(content='Identitas Anda telah diverifikasi, sekarang silakan pilih jenis akun yang Anda inginkan dan isi informasi yang diperlukan. Anda bisa memilih jenis deposit, mata uang, dll.')]
Menggabungkan dengan chain
Python
# File konfigurasi untuk mengelola API KEY sebagai variabel lingkungan
from dotenv import load_dotenv
# Memuat informasi API KEY
load_dotenv()
Python
from langchain_openai import ChatOpenAI
from langchain.chains import ConversationChain
# Buat model LLM.
llm = ChatOpenAI(temperature=0)
# Membuat sebuah conversation chain.
conversation = ConversationChain(
# Gunakan ConversationBufferMemory.
llm = llm,
memory = ConversationBufferMemory(),
)
Gunakan ConversationChain
untuk menjalankan percakapan
Python
# Memulai dialog.
response = conversation.predict(
input="Hai, saya ingin membuka rekening bank secara tatap muka, bagaimana cara memulainya?"
)
print(response)
Output
Hai! Untuk membuka rekening bank secara tatap muka, Anda perlu mengunjungi kantor cabang bank yang ingin Anda buka rekeningnya. Biasanya, Anda akan diminta untuk mengisi formulir aplikasi, menyerahkan dokumen identitas seperti KTP, NPWP, dan bukti alamat, serta melakukan setoran awal sesuai dengan persyaratan bank tersebut. Setelah proses verifikasi dan persetujuan, rekening bank Anda akan segera aktif dan siap digunakan. Jangan lupa untuk membawa semua dokumen yang diperlukan dan pastikan Anda memahami semua ketentuan dan biaya yang berlaku. Apakah ada pertanyaan lain yang bisa saya bantu?
Pastikan Anda mengingat riwayat percakapan sebelumnya.
Python
# Mengirim permintaan untuk meringkas percakapan sebelumnya ke dalam poin-poin.
response = conversation.predict(
input = "Tolong rangkum jawaban Anda sebelumnya ke dalam poin-poin."
)
print(response)
Output
1. Kunjungi kantor cabang bank yang ingin Anda buka rekeningnya.
2. Isi formulir aplikasi dan serahkan dokumen identitas seperti KTP, NPWP, dan bukti alamat.
3. Lakukan setoran awal sesuai dengan persyaratan bank.
4. Tunggu proses verifikasi dan persetujuan.
5. Rekening bank Anda akan aktif setelah proses selesai.
6. Pastikan membawa semua dokumen yang diperlukan dan pahami ketentuan serta biaya yang berlaku. Apakah ada yang bisa saya bantu?