59일차 LangSmith LCEL

차지예·2025년 8월 12일

생성AI

목록 보기
53/56
post-thumbnail

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

# 1) 프롬프트
prompt = PromptTemplate.from_template("{topic}를 쉽게 설명해줘")

# 2) 모델
model = ChatOpenAI()  # (환경변수에 OPENAI_API_KEY 설정)

# 3) 출력 파서
parser = StrOutputParser()

# 4) 체인 결합
chain = prompt | model | parser

# 5) 실행
chain.invoke({"topic": "강화학습"})
  • 위 흐름(프롬프트 → 모델 → 파서)이 LCEL의 기본 패턴이다.

유용한 팁

  • 프롬프트 템플릿{변수} 자리표시자를 사용해 재사용성을 높이는 방식이다.
  • 스트리밍 출력이 필요하면 chain.stream({...})을 사용해 토큰 생성 과정을 실시간으로 처리하면 된다.
  • LangSmith 연동을 통해 실행 흐름과 토큰 사용량을 추적하면 디버깅과 최적화에 유리하다.

요약

  • LCEL은 프롬프트–모델–파서를 |간결하게 체인하고, invoke/stream으로 쉽게 실행하며, 파서로 출력 형식을 통제하는 LangChain의 핵심 문법이다.

0개의 댓글