무제

[Langchain] Memory 본문

Project/LLM

[Langchain] Memory

mugan1 2024. 10. 25. 08:18

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