무제
[Langchain] Memory 본문
memory 저장 방식이 다양하므로 익혀둘 필요가 있다.
ConversationBufferMemory : 대화를 저장
ConversationBufferWindowMemory : 최근 K개의 상호작용을 저장
ConversationSummaryMemory : 대화의 요약을 저장
ConversationSummaryBufferMemory : 최근 대화 내용을 저장하고 이전 내용을 요약
ConversationKG : 최근저장된 메모리에서 지식그래프를 이용하는 메모리
memory를 사용한 Langchain 코드
LCEL(LangChain Expression Language) 방식을 사용
from langchain.memory import ConversationSummaryBufferMemory, ConversationSummaryMemory, ConversationBufferMemory, ConversationKGMemory
from langchain.chat_models import ChatOpenAI
from langchain.schema.runnable import RunnablePassthrough
from langchain.prompts import ChatPromptTemplate, MessagesPlaceholder
llm = ChatOpenAI(temperature=0.1, model='gpt-4o-mini')
memory = ConversationSummaryBufferMemory(
llm=llm,
max_token_limit=120,
return_messages=True,
)
prompt = ChatPromptTemplate.from_messages(
[
("system", "You are a helpful AI talking to a human"),
MessagesPlaceholder(variable_name="history"),
("human", "{question}"),
]
)
def load_memory(_):
return memory.load_memory_variables({})["history"]
chain = RunnablePassthrough.assign(history=load_memory) | prompt | llm
def invoke_chain(question):
result = chain.invoke({"question": question})
memory.save_context(
{"input": question},
{"output": result.content},
)
print(result)'Project > LLM' 카테고리의 다른 글
| [Langchain] Qdrant Vector DB (2) | 2024.11.12 |
|---|---|
| [Langchain] Splitter / Vector DB (0) | 2024.11.10 |
| [Langchain] Cache (0) | 2024.10.23 |
| [Langchain] Template (2) | 2024.10.21 |
| LLM 프로젝트 1일차 키워드 정리 (0) | 2024.10.14 |
Comments