[Langchain] Passthrough를 활용한 간단한 Chain 구성하기
2024. 11. 14. 21:22ㆍPython
서론
안녕하세요! 오늘은 Langchain에서 Chain을 구성할 때 자주 사용되는 Passthrough에 대해서 알아보려고 합니다. 특히 LCEL(Langchain Expression Language)에서 많이 활용되는 기능인데요, 이름 그대로 데이터를 '통과'시키는 역할을 하지만 생각보다 활용도가 높답니다.
무엇이 좋을까?
Passthrough는 다음과 같은 장점이 있습니다:
- Chain 구성을 단순화할 수 있습니다.
- 입력 데이터를 그대로 전달하면서도 추가적인 처리가 가능합니다.
- 다른 Chain들과 조합하기 쉽습니다.
코드로 살펴보기
간단한 예제 코드로 살펴보겠습니다.
from langchain.chat_models import ChatOpenAI
from langchain.schema.runnable import RunnablePassthrough
from langchain.prompts import ChatPromptTemplate
# LLM 모델 설정
llm = ChatOpenAI()
# 프롬프트 템플릿 생성
prompt = ChatPromptTemplate.from_template("""
다음 주제에 대해 설명해주세요: {topic}
추가 컨텍스트: {context}
""")
# Passthrough를 활용한 Chain 구성
chain = (
{
"topic": RunnablePassthrough(),
"context": lambda x: f"이 주제는 {x}와 관련이 있습니다."
}
| prompt
| llm
)
# 실행
response = chain.invoke("파이썬 비동기 프로그래밍")
print(response)
실행 결과
AIMessage(content='파이썬 비동기 프로그래밍은 동시성 프로그래밍을 구현하는 중요한 방법입니다. 이는 I/O 바운드 작업을 효율적으로 처리할 수 있게 해주며, async/await 키워드를 통해 직관적인 코드 작성이 가능합니다...')
주의할 점
- Passthrough는 단순히 데이터를 전달하는 것처럼 보이지만, Chain 구성에서 중요한 역할을 합니다.
- 데이터 형식을 잘 맞춰줘야 합니다. 특히 딕셔너리 형태로 전달할 때 키값을 잘 확인해야 합니다.
- 람다 함수와 함께 사용할 때는 입력값의 타입을 잘 확인해야 합니다.
마치며
Passthrough는 정말 단순한 기능이지만, 이를 잘 활용하면 복잡한 Chain도 깔끔하게 구성할 수 있습니다. 저도 처음에는 단순히 '통과'시키는 용도로만 생각했는데, 실제로 사용해보니 다양한 활용이 가능하더라구요. 특히 LCEL과 함께 사용하면 더욱 강력한 기능을 발휘할 수 있습니다. 여러분도 한번 시도해보시는 건 어떨까요?
다음에는 더 심화된 내용으로 찾아뵙도록 하겠습니다. 감사합니다! 😊
'Python' 카테고리의 다른 글
[Python] URL 라이브러리 403 에러 해결하기 (urllib/requests) (2) | 2024.11.14 |
---|---|
[Langchain] FastAPI에서 LLM Agent를 활용한 Response Streaming (1) | 2024.10.31 |
python - pandas apply를 사용한 데이터 수정 with lambda (0) | 2024.03.12 |
Python - Anaconda를 활용한 가상환경 생성 (0) | 2022.06.15 |
Python - bytes를 String으로 변환하는 방법 (0) | 2022.06.15 |