[LangChain] Conversation Buffer Memory

pysun·2024년 12월 16일

LangChain

목록 보기
13/13

Conversation Buffer Memory

사용자와 이전 대화 내용을 전부 저장하고 관리하는 메모리 클래스

✨ 장점: 이전 대화 내용을 전부 기억하기 때문에 사용자와 대화 흐름을 자연스럽게 이어할 수 있음
☠️ 단점: 대화 내용이 길어질수록 과도한 비용과 속도 이슈가 생김


from langchain.memory import ConversationBufferMemory

memory = ConversationBufferMemory(return_messages=True) # return_messages=True이면 HumanMessage와 AIMessage 객체 반환

"""
### 메세지 저장 ###
save_context(inputs, outputs)
- input: 사용자 입력을 저장
- output: ai 출력을 저장
- history 키에 저장됨
"""

memory.save_context(
	inputs={'human':'hi!'},
    outputs={'ai':'how are you?'}
)

# 위와 동일한 코드
#memory.save_context(
#	{'input':'hi!'},
#    {'output':'how are you?'}
#)
"""
### 메모리 로드 ###
load_memory_variables: 저장된 대화 기록을 확인
"""
memory.load_memory_variables({})
{'history': [HumanMessage(content='hi!'), AIMessage(content='how are you?')]}

memory.save_context(
    inputs={'human':"I'm fine. My name is pysun. 30 years old."},
    outputs={'ai':'Great!'}
)
memory.load_memory_variables({})['history']
[HumanMessage(content='hi!'),
 AIMessage(content='how are you?'),
 HumanMessage(content="I'm fine. My name is pysun. 30 years old."),
 AIMessage(content='Great!')]

### 체인과 같이 활용하기 ###

from langchain_openai import ChatOpenAI
from langchain.chains import ConversationChain

llm = ChatOpenAI()

conv = ConversationChain(
	llm=llm,
    memory=ConversationBufferMemory()
)

response = conv.predict(
	input='안녕하세요. 가장 효율적으로 영어를 공부하는 방법을 알려주세요'
)

print(response)
안녕하세요! 영어를 효율적으로 공부하는 방법은 다양한 방법이 있습니다. 먼저, 매일 조금씩이라도 영어를 공부하고 연습하는 것이 중요합니다. 영어 단어장을 만들어서 자주 사용하는 단어나 문장을 외우는 것도 도움이 될 수 있어요. 또한 영어 드라마나 영화를 보면서 자연스럽게 언어를 익히는 것도 좋은 방법입니다. 그리고 영어를 사용하는 환경에 자주 노출되는 것도 중요한데, 영어로 대화하는 기회를 많이 만들어보세요. 이런 방법들을 조합해서 효율적으로 영어를 공부할 수 있을 거예요. 어떤 방법이 가장 효과적일지는 개인마다 다를 수 있으니 여러 가지 방법을 시도해보세요!
response = conv.predict(
	input='이전 답변을 일목요연하게 정리해줘'
)

print(response)
영어를 효율적으로 공부하는 방법은 다음과 같습니다:
1. 매일 조금씩이라도 영어를 공부하고 연습하는 것이 중요합니다.
2. 영어 단어장을 만들어 자주 사용하는 단어나 문장을 외우는 것이 도움이 됩니다.
3. 영어 드라마나 영화를 보면서 자연스럽게 언어를 익히는 것이 좋습니다.
4. 영어를 사용하는 환경에 자주 노출되는 것도 중요합니다.
5. 여러 가지 방법을 조합해서 효율적으로 영어를 공부하세요.
profile
배움의 흔적이 성장으로 이어지는 공간

0개의 댓글