토니의 연습장

Langchain - pipe 활용 본문

언어 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 와 동일하게 입력합니다.
)

 

'언어 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