08. Add memory to LCEL Chain

LCEL (Remember Conversation): Menambahkan memory

Menunjukkan cara menambahkan memori ke chain sembarang. Anda dapat menggunakan kelas memory saat ini, tetapi Anda harus menambahkannya secara manual

from dotenv import load_dotenv

load_dotenv()
from operator import itemgetter
from langchain.memory import ConversationBufferMemory
from langchain_core.prompts import ChatPromptTemplate, MessagesPlaceholder
from langchain_core.runnables import RunnableLambda, RunnablePassthrough
from langchain_openai import ChatOpenAI

# Menginisialisasi model ChatOpenAI.
model = ChatOpenAI()

# Membuat prompt percakapan. Prompt ini mencakup pesan sistem, riwayat percakapan sebelumnya, dan input pengguna.
prompt = ChatPromptTemplate.from_messages(
    [
        ("system", "Anda adalah chatbot yang membantu"),
        MessagesPlaceholder(variable_name="chat_history"),
        ("human", "{input}"),
    ]
)

Buat ConversationBufferMemory, memori untuk menyimpan dialog, dan setel parameter return_messages ke True, sehingga instance yang dibuat akan mengembalikan pesan.

Atur memory_key: kunci yang nantinya akan ditetapkan ke prompt dalam chain. Anda dapat mengubahnya dan menggunakannya

Periksa riwayat obrolan yang disimpan. Karena Anda belum menyimpannya, riwayat obrolan masih kosong.

Gunakan RunnablePasssthrough.assign untuk menetapkan hasil fungsi memory.load_memory_variables ke variabel chat_history, dan mengekstrak nilai yang sesuai dengan kunci chat_history dari hasil ini.

runnable untuk memulai dialog pertama

  • input: Dialog masukan pengguna dimasukkan.

  • chat_history: Riwayat obrolan diteruskan.

Lakukan percakapan pertama Anda.

Fungsi memory.save_context bertanggung jawab untuk menyimpan data input (input) dan konten respons (response.content) di dalam memori. Hal ini dapat digunakan untuk merekam kondisi saat ini selama proses pelatihan model AI, atau untuk melacak permintaan pengguna dan respons sistem.

Tanyakan lebih lanjut apakah masih mengingat nama yang diberikan

Contoh penerapan CoversationChain khusus

Last updated