ChatGPT를 사용하면 기본적으로 제공되는 게 문맥을 이해하며 대화하는 것이다.
하나의 대화 내에서 발생한 히스토리를 가지고 대화를 할 수 있다.
내 이름을 말해주고 이름을 물어봤다.
내 이름을 잘 기억하고 있다.
앞선 포스팅에서 했던 Llama2 한테도 물어보자.
방금 말해줬는데 까먹었나 보다 ㅠ.
기본적으로 LLM은 상태를 저장하기 위한 Memory를 가지고 있지 않다.
기억력을 갖게 하기위한 가장 간단한 방법은 대화 히스토리를 저장하고 이를 대화에 함께 전달하는 것이다.
뭔 소리 하는진 잘 모르겠지만 어쨌든 내 이름을 알고 있다.
좀 억지로 했는데 langchain에서 Memory 기능을 제공해주고 있다. Docs
- ConversationBufferMemory
- ConversationBufferWindowMemory
- ConversationTokenBufferMemory
- 등
단순히 대화를 저장하는 것부터 대화 내용을 LLM을 통해 요약해서 저장할 수도 있다.
가장 간단히 대화를 저장하는 ConversationBufferMemory를 사용해 보자.
from langchain.memory import ConversationBufferMemory
from langchain.chains import ConversationChain
from langchain_community.llms import Ollama
llm = Ollama(model="llama2:13b")
conversation = ConversationChain(
llm=llm,
memory=ConversationBufferMemory(),
)
LLM이라는 모듈과 Memory 모듈을 결합해서 사용할 수 있는 ConversationChain을 제공한다. (너무 잘 만드는 듯,, 아주 직관적이다.)