[LangChain] LCEL 의 개념과 구성 요소 (LangChain Expression Language)
랭체인의 선언적 표현 방법
LCEL
1. 개념

- LangChain Expression Language
- 랭체인의 선언적 표현 방식으로, 프롬프트, 모델, 후처리(파서 포함)를 파이프라인처럼 연결하는 방식을 의미합니다.
2. LCEL 의 목적
- (1) 체인을 간결하게 만들고 가시성 좋게 한다.
- (2) 체인 간 조합이 가능하고 확장성을 확보한다.
- (3) Runnable 을 기반으로 통합한다.
3. 기본 문법
1
2
chain = prompt | model | parser
# 여기서 파이프(`|`)는 앞 단계의 출력을 다음 단계의 입력으로 이어준다.
- 위 예시를 풀어보면 다음과 같습니다.
- (1) 미리 prompt, model, parser를 정의해둡니다.
- (2) 미리 정의된
prompt를model에 전달하여 LLM 응답을 받아옵니다. - (3) 받아온 응답을
parser에 전달하여 원하는 형식으로 반환 받습니다.
파이프체이닝 : https://whdrns2013.github.io/python/20260131_002_python_pipe_chaining/
4. 기존 방식과의 차이
- LCEL 이전의 전통적 chain 은 클래스 중심이며, 확장과 조합이 어렵다는 한계가 있었습니다.
1
2
3
4
5
chain = LLMChain(
llm = model,
prompt = prompt
...
)
- 반면 LCEL 방식은 표현식 중심이며, 함수형 파이프라인을 지향합니다. 따라서 중간 단계 삽입이 쉽고, 각 부분별로의 수정도 쉬운 편입니다.
1
chain = prompt | model | parser
4. 구성 요소
Prompt: 요청할 때 사용되는 프롬프트를 의미합니다.LLM(model): 추론에 사용할 LLM 모델(또는 모델과 연결하는 클라이언트)입니다.Parser: 모델의 답변을 원하는 형식에 맞게 출력하는 역할을 담당합니다.
5. 실습
- 가장 기본적인 Prompt, LLM(model), Parser 로 예시를 들어보겠습니다.
- 각각의 구성요소들은 이어지는 다음 포스팅들에서 자세히 다뤄볼 예정입니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
from langchain_openai import ChatOpenAI
from langchain_core.output_parsers import StrOutputParser
from langchain_core.prompts import ChatPromptTemplate
os.environ["OPENAI_API_KEY"] = "MyAPIKey"
system_template = "당신은 {story}에 나오는 {character_a} 역할입니다. 그 캐릭터에 맞게 사용자와 대화하세요."
human_template = "안녕? 저는 {character_b}입니다. 오늘 시간 괜찮으시면 {activity} 같이 할까요?"
prompt = ChatPromptTemplate([("system", system_template), ("user", human_template)])
model = ChatOpenAI(model="gpt-4o-mini")
parser = StrOutputParser()
chain = prompt | model | parser
result = chain.invoke(
{"story" : "어벤져스", "character_a" : "타노스", "character_b" : "아이언맨", "activity" : "등산"}
)
print(result)
1
2
3
4
5
6
7
8
안녕, 아이언맨. 네가 그런 제안을 할 줄은 몰랐군.
그러나 나는 이미 지구의 운명을 손에 쥐고 있는 존재다.
이 시간에 내가 할 수 있는 것들은 많다.
하지만... 괜찮은 아이디어다.
등산을 통해 내가 자연의 균형을 이루는 방법에 대해 깊이 생각할 수 있을지도 모르겠다.
네가 준비가 되어 있다면, 같이 가보자.
그리고 네가 우주를 위한 진정한 희생이 무엇인지 깨달을 기회를 줬으면 좋겠다.
Reference
Do it! LLM을 활용한 AI 에이전트 개발 입문 (이성용 저)
// reading compass
이 글과 이어지는 경로
시리즈, 카테고리, 태그 겹침, 최신도를 점수화해 가까운 글일수록 중심에 배치합니다.
댓글 남기기