LCEL

이우철·2025년 10월 18일

RunnablePassthrough
RunnableParallel
RunnableLambda

  1. RunnablePassthrough : 입력을 그대로 전달하거나, 추가 키를 더해서 넘겨주는 역할
from langchain_core.runnables import RunnablePassthrough

passthrough = RunnablePassthrough()
result = passthrough.invoke({"name": "우철"})
print(result)
# 출력: {'name': '우철'}
  1. RunnableParallel : 여러 체인을 병렬로 실행하고 결과를 key별로 반환
from langchain_core.prompts import PromptTemplate
from langchain_openai import ChatOpenAI
from langchain_core.output_parsers import StrOutputParser
from langchain_core.runnables import RunnableParallel

# 두 개의 체인 생성
chain_1 = (
    PromptTemplate.from_template("{country}의 수도는?")
    | ChatOpenAI()
    | StrOutputParser()
)

chain_2 = (
    PromptTemplate.from_template("{country}의 인구는?")
    | ChatOpenAI()
    | StrOutputParser()
)

# 병렬 실행
parallel_chain = RunnableParallel({
    "capital": chain_1,
    "population": chain_2
})

result = parallel_chain.invoke({"country": "대한민국"})
print(result)
# 출력 예시: {'capital': '서울', 'population': '약 5천만 명'}
  1. RunnableLambda : 사용자 정의 함수를 체인처럼 실행 가능하게 만듦
from langchain_core.runnables import RunnableLambda

def greet(data):
    return f"안녕하세요, {data['name']}님!"

greet_chain = RunnableLambda(greet)
result = greet_chain.invoke({"name": "우철"})
print(result)
# 출력: "안녕하세요, 우철님!"
  • 사용자 입력을 받아서 동시에 여러 정보를 조회하는 챗봇이나 리포트 생성기 같은 걸 만드는 등에 쓰임
profile
개발 정리 공간 - 업무일때도 있고, 공부일때도 있고...

0개의 댓글