from langchain.memory import ConversationBufferMemory
ConverstaionBufferMemory는 사람과 LLM간의 대화를 pair(쌍으로)하게 저장한다.
즉, 사람과 AI의 대화(티키타카)를 저장하는 것으로 볼 수 있다.
memory = ConversationBufferMemory()
다음과 같이 인스턴스를 생성
memory.save_context(
inputs={
"human": "안녕하세요, 비대면으로 은행 계좌를 개설하고 싶습니다. 어떻게 시작해야 하나요?"
},
outputs={
"ai": "안녕하세요! 계좌 개설을 원하신다니 기쁩니다. 먼저, 본인 인증을 위해 신분증을 준비해 주시겠어요?"
},
)
inputs는 사람의 질문이 들어간다.
# 'history' 키에 저장된 대화 기록을 확인합니다.
print(memory.load_memory_variables({})["history"])
대화내용은 history라는 디폴트 키에 들어간 것을 볼 수 있다.
은행에서 비대면으로 계좌를 개설하는 시나리오.
# inputs: dictionary(key: "human" or "ai", value: 질문)
# outputs: dictionary(key: "ai" or "human", value: 답변)
memory.save_context(
inputs={"human": "네, 신분증을 준비했습니다. 이제 무엇을 해야 하나요?"},
outputs={
"ai": "감사합니다. 신분증 앞뒤를 명확하게 촬영하여 업로드해 주세요. 이후 본인 인증 절차를 진행하겠습니다."
},
)
# 2개의 대화를 저장합니다.
memory.save_context(
inputs={"human": "사진을 업로드했습니다. 본인 인증은 어떻게 진행되나요?"},
outputs={
"ai": "업로드해 주신 사진을 확인했습니다. 이제 휴대폰을 통한 본인 인증을 진행해 주세요. 문자로 발송된 인증번호를 입력해 주시면 됩니다."
},
)
memory.save_context(
inputs={"human": "인증번호를 입력했습니다. 계좌 개설은 이제 어떻게 하나요?"},
outputs={
"ai": "본인 인증이 완료되었습니다. 이제 원하시는 계좌 종류를 선택하고 필요한 정보를 입력해 주세요. 예금 종류, 통화 종류 등을 선택할 수 있습니다."
},
)
# history에 저장된 대화 기록을 확인합니다.
print(memory.load_memory_variables({})[“history”])
Human: 안녕하세요, 비대면으로 은행 계좌를 개설하고 싶습니다. 어떻게 시작해야 하나요?
AI: 안녕하세요! 계좌 개설을 원하신다니 기쁩니다. 먼저, 본인 인증을 위해 신분증을 준비해 주시겠어요?
Human: 네, 신분증을 준비했습니다. 이제 무엇을 해야 하나요?
AI: 감사합니다. 신분증 앞뒤를 명확하게 촬영하여 업로드해 주세요. 이후 본인 인증 절차를 진행하겠습니다.
Human: 사진을 업로드했습니다. 본인 인증은 어떻게 진행되나요?
AI: 업로드해 주신 사진을 확인했습니다. 이제 휴대폰을 통한 본인 인증을 진행해 주세요. 문자로 발송된 인증번호를 입력해 주시면 됩니다.
Human: 인증번호를 입력했습니다. 계좌 개설은 이제 어떻게 하나요?
AI: 본인 인증이 완료되었습니다. 이제 원하시는 계좌 종류를 선택하고 필요한 정보를 입력해 주세요. 예금 종류, 통화 종류 등을 선택할 수 있습니다.
다음과 같이 대화 기록이 저장됨을 알 수 있다.