Introduction | 🦜️🔗 LangChain
CH01 LangChain 시작하기
Demystifying LangChain, LangGraph, and LangSmith: What’s the Difference and When Should You Use Each?
LLM을 얘기할 때 빠지지 않는 단어가 랭체인, 랭그래프이다.
LangChain, LangSmith, LangGraph는 모두 LLM(Large Language Model) 기반 애플리케이션을 쉽게 구축하고 운영하기 위한 도구들이며, 서로 보완적인 관계에 있다.
각각의 개념을 간략하게 정리해보자
- 일정한 개수의 상태(state)를 가지며,
- 각 상태에서 특정 동작을 수행하고,
- 특정 조건에 따라 다른 상태로 전이하는 시스템의 동작 방식을 모델링하는 방법
📌 관계 요약
| 도구 | 역할 | 특징 |
|---|---|---|
| LangChain | LLM 앱 개발 프레임워크 | 체인 구성 및 다양한 통합 도구 제공 |
| LangSmith | 개발/디버깅/평가 플랫폼 | 실시간 모니터링, 실험 추적 |
| LangGraph | 상태 기반 LLM 워크플로우 프레임워크 | FSM 구조로 복잡한 흐름 표현 |
LangChain으로 개발 → 2. LangSmith로 디버깅/평가 → 3. LangGraph로 고도화
이 흐름은 LLM 앱을 처음부터 실전 배포 수준으로 끌어올리는 일반적인 단계이다.
1️⃣ LangChain: 앱의 뼈대 개발
2️⃣ LangSmith: 평가 및 개선
3️⃣ LangGraph: 복잡한 흐름 추가
[LangChain]
└─ 기본 체인 구성 및 LLM 앱 개발
↓
[LangSmith]
└─ 체인 품질 테스트, 모니터링, 개선
↓
[LangGraph]
└─ 상태 기반 흐름 제어 추가로 고도화
💡 비유로 설명하면:
LangChain이 ‘자동차 본체’를 만들고,
LangSmith는 ‘정비소에서 성능 점검’을 하고,
LangGraph는 ‘자동차에 자율주행 시스템을 얹는 것’과 비슷하다.
LangChain, LangSmith, LangGraph는 따로도 쓰이지만, 서로 긴밀하게 연동되도록 설계되어 있어서 하나의 프로젝트 안에서 자연스럽게 함께 사용된다고 한다.
아래는 지피티가 제공해준 프로젝트 통합 시나리오 예시이다.
: “회사의 정책, 매뉴얼, 보고서 등을 기반으로 구성원이 자연어로 질문하면 정확하게 답변해주는 LLM 기반 사내 비서 만들기”
| 도구 | 실무 내 역할 | 핵심 기능 |
|---|---|---|
| LangChain | 앱 구조 구성 | 문서 업로드 → 청크 → 임베딩 → 벡터DB 저장 → 질의응답 체인 구성 |
| LangSmith | 디버깅 & 성능 평가 | 체인 실행 추적, Prompt 개선 테스트, 사용자 피드백 분석 |
| LangGraph | 복잡한 흐름 제어 | 문맥 상태 유지, 멀티턴 대화 처리, 승인 절차/조건 분기 등 |
# LangChain으로 기본 QA 체인 구성
retriever = vectorstore.as_retriever()
qa_chain = RetrievalQA.from_chain_type(llm=ChatOpenAI(), retriever=retriever)
# 사용자 질문 처리
answer = qa_chain.run("연차 신청 절차 알려줘")
MVP(Minimum Viable Product)란?
- MVP는 "Minimum Viable Product"의 약자입니다.
- 구현하고자 하는 제품의 핵심적인 가치를 골라 최소한의 기능만을 담아낸 제품을 말합니다.
- 제품에서 어느 부분이 핵심 가치인지, 어느 부분이 부가적인 가치인지 구분한 이후 가장 핵심적인 가치만을 담아 고객에게 검증하는 과정을 MVP 테스트라고 합니다.
# LangSmith에서 추적을 위한 decorator
@traceable(name="qa_chain_test")
def ask_question(question):
return qa_chain.run(question)
# 실제 사용 로그 기록
ask_question("연차는 최대 며칠까지 쓸 수 있어?")
from langgraph.graph import StateGraph
# 노드 구성: 사용자 질문 → 검색 → 검토 → 승인 여부 판단
workflow = StateGraph()
workflow.add_node("ask", qa_chain)
workflow.add_node("review", reviewer_chain)
workflow.add_node("confirm", confirmation_chain)
workflow.set_entry_point("ask")
workflow.set_conditional_edges("ask", condition=should_review, paths={"yes": "review", "no": "confirm"})
workflow.set_conditional_edges("review", condition=approval_check, paths={"approved": "confirm", "rejected": "ask"})
graph_executor = workflow.compile()
1. LangChain
- 문서 기반 검색 + LLM 응답 체인 구성
2. LangSmith
- 성능 추적, prompt 개선, 사용자 피드백 분석
3. LangGraph
- 질문 상태 유지, 조건 분기, 승인 흐름 등 복잡한 워크플로우 설계