토니의 연습장
Langchain - pipe 활용 본문
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 와 동일하게 입력합니다.
)
'언어 AI (NLP) > LLM & RAG' 카테고리의 다른 글
Distillation (0) | 2025.04.03 |
---|---|
분산/병렬 처리 (DDP/MP) (0) | 2025.03.14 |
RAG 성능 테스트를 위한 함수 정의 (0) | 2025.03.06 |
RAGAS 를 이용한 RAG 평가 (0) | 2025.02.27 |
RAG - AI Agent 예시 (0) | 2025.02.18 |