LCEL(LangChain Expression Language)
LCEL란
- LangChain 구성요소(프롬프트, 모델, 출력 파서 등)를 파이프라인처럼 연결해 한 번에 실행하는 문법이다.
| 연산자로 “입력 → 프롬프트 → 모델 → 파서” 흐름을 만든다.
핵심 아이디어
- 파이프 연산자
|: 앞 단계 출력을 다음 단계 입력으로 넘기는 방식이다.
예) chain = prompt | model | output_parser 이다.
- 실행 방식:
invoke(input_dict): 한 번에 결과를 얻는 방식이다.
stream(input_dict): 토큰이 생성되는 대로 스트리밍으로 받는 방식이다.
- 출력 파서(Output Parser): 모델 출력을 문자열/구조화 데이터 등 원하는 형식으로 변환하는 구성요소이다. 기본 파서는
StrOutputParser() 이다.
최소 예제
from langchain_core.prompts import PromptTemplate
from langchain_openai import ChatOpenAI
from langchain_core.output_parsers import StrOutputParser
prompt = PromptTemplate.from_template("{topic}를 쉽게 설명해줘")
model = ChatOpenAI()
parser = StrOutputParser()
chain = prompt | model | parser
chain.invoke({"topic": "강화학습"})
- 위 흐름(프롬프트 → 모델 → 파서)이 LCEL의 기본 패턴이다.
유용한 팁
- 프롬프트 템플릿은
{변수} 자리표시자를 사용해 재사용성을 높이는 방식이다.
- 스트리밍 출력이 필요하면
chain.stream({...})을 사용해 토큰 생성 과정을 실시간으로 처리하면 된다.
- LangSmith 연동을 통해 실행 흐름과 토큰 사용량을 추적하면 디버깅과 최적화에 유리하다.
요약
- LCEL은 프롬프트–모델–파서를
|로 간결하게 체인하고, invoke/stream으로 쉽게 실행하며, 파서로 출력 형식을 통제하는 LangChain의 핵심 문법이다.