Langchain이 진화함에 따라 기존의 LLMChain 방식에서 벗어나, 더 직관적이고 유연한 LCEL(Langchin expression Language) 패턴이 표준으로 자리잡고 있습니다.
LCEL Concept
- 기본 개념
- Langchain 컴포넌트들을 연결하기 위한 선언적 방식이다.
- 데이터의 흐름을 직관적으로 정의하여 입력에서 출력까지 깔끔한 워크플로우를 보장한다. (like 리눅스의 '|')
- 장점
- 가독성 : 데이터 흐름을 명확하게 시각화 할 수 있다.
- 구성 용이성 : 복잡한 체인을 레고 블록처럼 쉽게 조립할 수 있다.
- 유연성 : 병렬 실행, 비동기 지원, 스트리밍 등의 기능을 기본적으로 지원한다.
Pipe Operator(|) Method
# LCEL 패턴 예시
chain = prompt | llm | output_parser
- prompt : 사용자의 입력을 받아 프롬프트 템플릿에 주입
- llm : 완성된 프롬프트를 언어 모델에 전달
- output_parser : LLM의 응답을 문자열 등으로 파싱하여 최종 출력
Runnable Protocol
- Langchai의 모든 빌딩 블록(LLM, Retriever, Tool 등)은 Runnable 프로토콜을 따른다.
- RunnableSequence(순차 실행)
- 이전 컴포넌트의 출력을 다음 컴포넌트의 입력으로 전달
- 기존 방식 : RunnableSequence(comp1, comp2)
- LCEL 방식 : comp1 | comp2 (직관적 !)
- 이전 컴포넌트의 출력을 다음 컴포넌트의 입력으로 전달
- RunnableParallel(병렬 실행)
- 동일한 입력을 사용하여 여러 컴포넌트를 동시에 실행
- Summary, Translation, sentiment 를 동시에 실행 (딕셔너리 구조 사용)
- {dict} | final_process : 앞선 실행의 결과값을 모두 넘겨 받음
- 동일한 입력을 사용하여 여러 컴포넌트를 동시에 실행
# 딕셔너리 구조를 사용하면 자동으로 병렬 실행됨
chain = {
"summary": summary_chain,
"translation": translation_chain,
"sentiment": sentiment_chain
} | final_process
Type Coercion (자동 타입 변환)
- 명시적으로 Runnable 클래스로 감싸지 않아도, LCEL이 알아서 python code -> Runnable 변환
- Dictionary({ }) -> RunnableRarallel
- 딕셔너리를 Chain에 넣으면 자동으로 병렬 실행 컴포넌트로 변환됨
- Function(def) -> RunnableLambda
- 일반 파이썬 함수를 Chain에 넣으면, 입력을 변환하는 람다함수(RunnableLambda)로 자동 래핑
- Dictionary({ }) -> RunnableRarallel
LCEL vs Langraph
- LCEL
- 표준적인 오케스트레이션 작업에 최적화
- 프롬프트 템플릿, LLM 호출, 출력 파싱 과정
- Langraph
- 매우 복잡한 워크플로우를 구현해야 할때
- 루프(Loop), 순환(Cycle) 이 있을때 등
- 단, Langraph의 각 노드 내부 로직은 여전히 LCEL로 작성하는 것이 유리함.
-------------------------------------------------------------------------------------------
참고 : IBM RAG and Agentic AI - Develop Generative AI Applications: Get Started (Coursera)
--------------------------------------------------------------------------------------------
'프로그래밍 > AI' 카테고리의 다른 글
| [MCP] FastMCP rules (@mcp.tool) (0) | 2026.01.13 |
|---|---|
| [Search] Tavily API (*Domain Control*) (0) | 2026.01.08 |
| [Agent] ReAct (Agent Prompt format) (0) | 2025.12.21 |
| [Agent] LangChain for AI agent (Intro) (0) | 2025.12.16 |
| [Agent] In-Context Learning (feat. prompt) (0) | 2025.12.16 |