언어 AI (NLP)/LLM & RAG
Langchain - pipe 활용
bellmake
2025. 3. 24. 19:52
from operator import itemgetter
from langchain.memory import ConversationBufferMemory
from langchain_core.prompts import ChatPromptTemplate, MessagesPlaceholder
from langchain_core.runnables import RunnableLambda, RunnablePassthrough
from langchain_openai import ChatOpenAI
# ChatOpenAI 모델을 초기화합니다.
model = ChatOpenAI()
# 대화형 프롬프트를 생성합니다. 이 프롬프트는 시스템 메시지, 이전 대화 내역, 그리고 사용자 입력을 포함합니다.
prompt = ChatPromptTemplate.from_messages(
[
("system", "You are a helpful chatbot"),
MessagesPlaceholder(variable_name="chat_history"),
("human", "{input}"),
]
)
# 대화 버퍼 메모리를 생성하고, 메시지 반환 기능을 활성화합니다.
memory = ConversationBufferMemory(return_messages=True, memory_key="chat_history")
memory.load_memory_variables({}) # 메모리 변수를 빈 딕셔너리로 초기화합니다.
runnable = RunnablePassthrough.assign(
chat_history=RunnableLambda(memory.load_memory_variables)
)
-> 위와 같은 구조로 입력되면 에러 발생하기에, 리스트를 가져오도록 조정하기 위해서 아래와 같이 파이프 및 itemgetter 를 사용하여 추출해야 합니다.
runnable = RunnablePassthrough.assign(
chat_history=RunnableLambda(memory.load_memory_variables)
| itemgetter("chat_history") # memory_key 와 동일하게 입력합니다.
)