OPEN HYPER STEP
← 목록으로 (AI Orchestration)
AI-ORCHESTRATION · 50 / 59
ai-orchestration
CHAPTER 50 / 59
읽기 약 2
FUNCTION

LangChain Expression Language (LCEL) 심화


핵심 개념

체인 파이프라인(|), RunnablePassthrough, RunnableLambda — 다단계 RAG 체인 설계 패턴.

본문

LCEL 핵심 — | 연산자

PYTHON📋 코드 (13줄)
from langchain_core.prompts import ChatPromptTemplate
from langchain_core.output_parsers import StrOutputParser
from langchain_anthropic import ChatAnthropic

prompt = ChatPromptTemplate.from_template("Tell me a joke about {topic}")
model = ChatAnthropic(model="claude-sonnet-4-6")
parser = StrOutputParser()

# 체인 = prompt → model → parser
chain = prompt | model | parser

result = chain.invoke({"topic": "Python"})
print(result)

RunnablePassthrough — 입력을 그대로 전달

PYTHON📋 코드 (11줄)
from langchain_core.runnables import RunnablePassthrough

# 입력에서 일부만 추출
chain = (
    {"context": RunnablePassthrough(), "question": RunnablePassthrough()}
    | prompt
    | model
)

# 사용
chain.invoke({"context": "...", "question": "..."})

RunnableLambda — 임의 함수 통합

PYTHON📋 코드 (11줄)
from langchain_core.runnables import RunnableLambda

def to_uppercase(text: str) -> str:
    return text.upper()

# 체인에 함수 삽입
chain = prompt | model | parser | RunnableLambda(to_uppercase)


# 또는 직접
chain = prompt | model | parser | (lambda x: x.upper())

다단계 RAG 체인

PYTHON📋 코드 (36줄)
from langchain_core.runnables import RunnablePassthrough
from langchain_core.output_parsers import StrOutputParser
from langchain_anthropic import ChatAnthropic
from langchain_chroma import Chroma
from langchain_openai import OpenAIEmbeddings

# 1. 벡터 DB
embeddings = OpenAIEmbeddings()
vectorstore = Chroma(embedding_function=embeddings, persist_directory="./db")
retriever = vectorstore.as_retriever(search_kwargs={"k": 4})

# 2. 프롬프트
prompt = ChatPromptTemplate.from_template("""
다음 컨텍스트만 참고해서 답변하세요. 모르면 "모릅니다"라고 답변.

컨텍스트:
{context}

질문: {question}
""")

model = ChatAnthropic(model="claude-sonnet-4-6")

# 3. RAG 체인
def format_docs(docs):
    return "\n\n".join(doc.page_content for doc in docs)

rag_chain = (
    {"context": retriever | format_docs, "question": RunnablePassthrough()}
    | prompt
    | model
    | StrOutputParser()
)

# 사용
result = rag_chain.invoke("LangChain 시작 방법은?")

분기 체인 (RunnableBranch)

PYTHON📋 코드 (16줄)
from langchain_core.runnables import RunnableBranch

# 입력에 따라 다른 체인 실행
def is_question_about_python(input):
    return "python" in input["question"].lower()


python_chain = python_prompt | model | parser
general_chain = general_prompt | model | parser

branched = RunnableBranch(
    (is_question_about_python, python_chain),
    general_chain,  # default
)

result = branched.invoke({"question": "Python list comprehension?"})

병렬 실행 (RunnableParallel)

PYTHON📋 코드 (16줄)
from langchain_core.runnables import RunnableParallel

# 여러 체인을 동시에 실행
parallel = RunnableParallel(
    summary=summary_chain,
    keywords=keywords_chain,
    sentiment=sentiment_chain,
)

result = parallel.invoke({"text": "..."})
# {
#   "summary": "...",
#   "keywords": [...],
#   "sentiment": "positive",
# }
# 직렬보다 3배 빠름

다음 챕터

CH.2 "벡터 DB 비교" — Pinecone/Chroma/Weaviate 실전 비교.


AI 프롬프트
🤖 AI에게 잘 물어보는 법 — 모델·전략별 프롬프트
무료 모델

Gemini 2.5 Flash(무료) + Claude Sonnet 4.6(무료) + Grok 4.1(무료)

무료 LLM(Gemini Flash)으로 LCEL
RAG 체인 만드는 가이드와 비용 0원
구축법을 알려줘.
소자본 모델

Claude API + Cursor $20/mo + Make.com — 월 10~30만원

Claude API + Cursor로 다단계 LCEL
체인을 빠르게 빌드하는 패턴 5가지를
실전 예시로 알려줘.
프로덕션 모델

Claude Opus + CrewAI + LangGraph — 월 100만원+

LangGraph + Claude Opus로 엔터프라이즈
수준 LCEL 체인 + 모니터링 통합
아키텍처를 설계해줘.
스택 프롬프트

0원→$20/mo→$100/mo 단계별 스택 비교

0원/월20만원/월100만원 단계별 LCEL
체인 스택 비교와 ROI를 만들어줘.

⭐ 이것만 기억하세요
LangChain Expression Language (LCEL) 심화 이 3가지만 확실히 잡으세요
1.LCEL의 | 연산자로 prompt → model → parser 체인을 한 줄로 표현
2.RunnablePassthrough/Lambda/Branch/Parallel — 복잡한 워크플로우 구성 도구
3.다음 챕터 CH.2에서 벡터 DB 3종 비교 — RAG의 저장소 선택


공유하기
진행도 50 / 59