LangChain 개요
- 1. LangChain이란?
- 2. LangChain의 개발 역사
- 3. LangChain의 핵심 아키텍처 스택
- 4. 개발 프레임워크 핵심 5대 컴포넌트
- 5. LCEL (LangChain Expression Language)
- 6. 주요 특징 (Key Features)
- 7. 활용 분야 (Use Cases)
1. LangChain이란?
- 정의 및 개요
- 이름 그대로 “언어의 체인”을 의미
- 대규모 언어 모델(LLM) 기반의 애플리케이션을 효율적으로 구축하기 위한 오픈소스 오케스트레이션(Orchestration) 프레임워크
- LLM의 잠재력을 극대화하고, 외부 데이터와 통합하여 보다 복잡하고 유용한 애플리케이션을 구축할 수 있도록 설계됨
- 외부 데이터 소스 인식 및 환경과의 상호작용이 가능한 차세대 AI 시스템 개발의 표준 스택으로 자리 잡음
- AI 애플리케이션 개발의 복잡성을 줄이고, 확장 가능성과 유연성을 제공함
- 현재, 수많은 AI 서비스가 LLM + LangChain 기반으로 개발, 운영되고 있음
- 동작 개념
- LLM에게 어떤 문제에 대한 일을 시키기 위하여 프롬프트를 작성할 경우,
- 사용자의 프롬프트를 곧바로 LLM에게 전달하는 것이 아니라
- 하나의 프롬프트 템플릿을 거쳐 전달하도록
- 추가적인 “연결고리”를 만들어 원하는 답변을 이끌어 내는 것
- 따라서 LangChain은 다양한 템플릿, 모듈을 제공함
- 프롬프트 변형을 위한 프롬프트 템플릿
- LLM 서비스 개발을 위한 모듈 등
- LLM에게 어떤 문제에 대한 일을 시키기 위하여 프롬프트를 작성할 경우,
- 왜 LangChain인가?
- LLM 단일 사용:
- 학습 데이터의 한계(Cut-off), 실시간 정보 부재, 미미한 추론 능력(Context 한계) 등의 제약을 가짐
- LangChain 사용:
- 이름 그대로 “LLM과 외부 컴포넌트들을 사슬(Chain)처럼 연결”하여 이러한 한계를 극복함
- 컴포넌트화(Componentization):
- LLM, 프롬프트, 데이터 로더, 벡터 에이전트 등 추상화된 모듈을 제공하여 레고 블록처럼 조립 가능
- 맞춤형 체인(Custom Chains):
- 특정 유즈케이스(RAG, 챗봇, 구조화 데이터 추출 등)에 맞춘 파이프라인의 손쉬운 구성
- LLM 단일 사용:
2. LangChain의 개발 역사
- 2022년 말 ~ 2023년 초: 탄생 및 초기 폭발적 성장
- 2022년 10월:
- 머신러닝 스타트업(Robust Intelligence)의 엔지니어였던 해리슨 체이스(Harrison Chase)가 오픈소스로 프로젝트 공개
- ChatGPT 출시(2022년 11월)와 맞물림:
- LLM 열풍이 불면서, 프롬프트 템플릿과 LLM을 연결하는 유일무이한 표준 프레임워크로 주목
- GitHub 스타 수가 폭발적으로 증가
- 2023년 4월:
- 정식 법인(LangChain Inc.) 설립
- 세쿼이아 캐피탈 등으로부터 대규모 벤처 투자 유치 성공
- 2022년 10월:
- 2023년 중순: 기능 확장 및 구조적 한계 봉착
- 모듈의 다각화:
- RAG 패러다임이 부상하면서
Document Loaders,Vector Stores,Memory,Agents등 현대적인 LLM 앱에 필요한 모듈들이 급격히 추가됨
- ‘블랙박스’ 문제 제기:
- 내부적으로 추상화가 너무 과하게 이루어진 기성 체인들(
LLMChain,ConversationalRetrievalChain등)의 증가 - 개발자가 내부 프롬프트나 흐름을 커스텀하기 어렵고 디버깅이 난해하다는 커뮤니티의 비판 직면
- 내부적으로 추상화가 너무 과하게 이루어진 기성 체인들(
- 모듈의 다각화:
- 2023년 말: 패러다임의 대전환 🡲 LCEL의 도입
- LCEL(LangChain Expression Language) 발표:
- 하드코딩된 체인 구조를 탈피하기 위해 레고 블록처럼 파이프 연산자(
|)를 사용하는 선언적 문법 도입
- 하드코딩된 체인 구조를 탈피하기 위해 레고 블록처럼 파이프 연산자(
- 인프라적 혁신:
- LCEL 도입을 통해 컴포넌트 간 입출력 데이터 타입이 표준화됨
- 별도의 추가 코드 없이 스트리밍(Streaming), 비동기(Async), 병렬 처리(Parallelism)가 자동으로 지원되는 강력한 내부 아키텍처 구축
- LCEL(LangChain Expression Language) 발표:
- 2024년 초: 아키텍처 재정립 🡲 구조적 분할 및 v0.1 출시
- 2024년 1월 (v0.1.0 정식 출시):
- 처음으로 하위 호환성을 보장하는 안정적인 가이드라인 마련
- 패키지 모듈화 디커플링:
- 방대해진 라이브러리를 완전히 분리하여 경량화 및 의존성 문제 해결
langchain-core: 핵심 인터페이스langchain-community: 서드파티 연동 담당langchain: 고수준 로직
- 기존의 블랙박스 같던 복잡한 내장 체인들을 대거 Deprecated(폐기 예정) 처리하기 시작
- 방대해진 라이브러리를 완전히 분리하여 경량화 및 의존성 문제 해결
- 2024년 1월 (v0.1.0 정식 출시):
- 2024년 중순 ~ 현재: 에이전트 전성시대와 생태계 완성 🡲 v0.2 ~ v0.3 및 LangGraph
- LangGraph의 메인 프레임워크화:
- 단순한 선형 구조(Chain)를 넘어,
- 루프(순환 구조)가 필수적인 복잡한 멀티 에이전트 시스템을 구현하기 위해
LangGraph출시 및 핵심 아키텍처 편입- State(상태) 기반 제어 메커니즘 제공
- v0.2 (2024년 5월) 및 v0.3 (2024년 9월~)의 고도화:
- 모델들의 도구 호출(Tool Calling) 표준 인터페이스 정착
- Pydantic v2 내부 전환 완료 및 완전한 비동기 최적화
- 상용화를 위한 모니터링/디버깅 플랫폼 LangSmith와 배포 툴인 LangServe 인프라 생태계 정착
- 모델들의 도구 호출(Tool Calling) 표준 인터페이스 정착
- LangGraph의 메인 프레임워크화:
- LangChain의 역사는
- 단순한 프롬프트 연결 도구(2022)에서 시작
- LCEL 기반의 유연한 파이프라인 구조(2023)로 체질 개선
- LangGraph 기반의 자율형 멀티 에이전트 및 오케스트레이션 엔터프라이즈 플랫폼(현재)으로 진화
3. LangChain의 핵심 아키텍처 스택
- LLM 기반의 애플리케이션을 기획, 개발, 배포, 모니터링하기 위한 ‘엔드투엔드 풀스택 에코시스템(End-to-End Full-stack Ecosystem)’ 구조를 가짐
langchain-core및 LCEL을 주축 파이프라인 엔진으로 삼고,- 내부에 Model I/O와 Retrieval, 에이전트 구성 요소를 조립한 뒤,
- 최종적으로 LangGraph, LangServe, LangSmith를 통해 엔터프라이즈 환경으로 확장 및 관리하는
- 유기적인 풀스택 구조를 취함
3.1 기반 기술 레이어
애플리케이션이 구동되는 물리적 패키지 구조와 가볍고 견고한 표준 인터페이스를 제공하는 하부 인프라 계층
하부 인프라 및 패키지 구조 (The Package Layer)
하나로 뭉쳐있던 거대한 라이브러리를 v0.1 이후부터 결합도를 낮추고 안정성을 높이기 위해 독립된 패키지로 분할(Decoupling)하여 관리
langchain-core(커널 레이어):- 모든 구성 요소의 기초가 되는 추상화(Interface)와 데이터 표준이 정의된 뼈대
- 프롬프트, 모델, 벡터스토어 등의 기본 인터페이스
- LangChain 표현 언어인 LCEL(LangChain Expression Language)의 런타임 엔진
- 외부 의존성이 거의 없어 매우 가벼움
- 모든 구성 요소의 기초가 되는 추상화(Interface)와 데이터 표준이 정의된 뼈대
langchain-community(통합 레이어):- 급변하는 AI 생태계의 다양한 서드파티 제품들을 연결하는 대규모 서브 패키지
- LLM 공급자부터, 물리 데이터베이스, 웹 크롤러 등 수백 개의 외부 툴과의 연동 코드가 커뮤니티 주도로 유지 보수됨
- 수많은 틈새(Niche) 서드파티 연동:
- 상대적으로 사용 빈도가 낮거나 커뮤니티 기여자들이 유지보수하는 수백 개의 마이너 LLM, 신생 벡터 DB, 특정 문서 로더 등
- 추상화된 컴포넌트의 실체들:
- FAISS, Chroma 같은 로컬 벡터스토어 인터페이스, 혹은 특정 웹사이트 크롤러나 파일 가공 툴러들
- FAISS, Chroma 같은 로컬 벡터스토어 인터페이스, 혹은 특정 웹사이트 크롤러나 파일 가공 툴러들
- 수많은 틈새(Niche) 서드파티 연동:
- 파트너 패키지 (langchain-openai, langchain-anthropic 등 주류 LLM 전용 독립 패키지)
- langchain-community에 속해있던 거대 기술 기업들의 플러그인을 별도의 전용 경량 패키지로 독립
- langchain-openai (ChatOpenAI, OpenAIEmbeddings 등)
- langchain-anthropic (ChatAnthropic 등)
- langchain-google-genai (Gemini 연동)
- langchain-ollama (로컬 LLM 연동, 기존 community에서 완전히 독립)
- langchain-groq, langchain-aws (Bedrock) 등
- 현재 langchain-community에 속해있지 않고, 프로젝트 생성 시 pip install langchain-openai처럼 개별 독립 패키지로 설치해야 함
- 분리(Decoupling) 이유
- 의존성(Dependency) 지옥 해결:
- 과거에는 OpenAI 하나만 쓰려고 해도 langchain을 설치하면 수많은 무관한 서드파티 라이브러리(비대하고 무거운 패키지들)가 함께 설치되어 경량 컨테이너 이미지를 만들기가 매우 어려웠음
- 버전 관리 및 안정성:
- OpenAI나 Anthropic의 API 스펙이 급변할 때, 랭체인 전체 코어나 커뮤니티 패키지를 통째로 업데이트할 필요 없이 langchain-openai 패키지만 신속하게 패치하여 릴리스할 수 있게 됨
- 독립적 소유권(Ownership):
- 해당 기업(예: Google이나 AWS 팀)이 랭체인 생태계 내의 자기 제품용 연동 코드를 직접 관리하고 최적화할 수 있도록 권한을 분리
- 해당 기업(예: Google이나 AWS 팀)이 랭체인 생태계 내의 자기 제품용 연동 코드를 직접 관리하고 최적화할 수 있도록 권한을 분리
- 의존성(Dependency) 지옥 해결:
- langchain-community에 속해있던 거대 기술 기업들의 플러그인을 별도의 전용 경량 패키지로 독립
3.2 애플리케이션 개발 레이어
- 개발자가 비즈니스 로직을 설계하고, 데이터를 연결하며, LLM의 추론 루프를 구현하는 핵심 런타임 및 개발 프레임워크 계층
표준화된 데이터 흐름 덕분에 아키텍처 전체에서 별도의 오버헤드 없이 스트리밍(Streaming), 비동기 처리(Async), 병렬 실행(Parallelism)이 선언적으로 이루어짐
langchain- 코어 인터페이스와 커뮤니티 컴포넌트들을 조합하여 고수준의 비즈니스 로직을 만드는 상위 레이어
- 하부의 코어와 커뮤니티 모듈을 엮어 실제 서비스 코드를 작성하는 주축 패키지
- RAG 파이프라인, 범용 체인(Chains), 에이전트(Agents) 아키텍처의 기본 인프라를 제공
- 런타임 데이터 흐름 엔진: LCEL (LangChain Expression Language)
- 전체 구조를 관통하는 핵심 파이프라인 엔진은 LCEL
- 모든 구성 요소는
Runnable이라는 표준 프로토콜을 따름 - Unix의 파이프 연산자(
|)를 통해 데이터가 흐름
- 핵심 컴포넌트 블록:
- Model I/O: 프롬프트 템플릿, Chat 모델 추상화, 구조화된 아웃풋 파서
- Retrieval (RAG): 문서 로더, 텍스트 스플리터, 임베딩 모델, 벡터 스토어 및 고도화된 리트리버
- Memory: 세션별 대화 맥락 상태 유지 메커니즘
- Agents & Tools: LLM을 추론 엔진 삼아 외부 API나 자체 작성 스크립트(Tools)를 자율적으로 선택·실행하는 에이전트 인터페이스
3.3 엔터프라이즈 운영 레이어
- 실험실 스크립트 단계를 넘어, 상용 프로덕션 환경에서 복잡한 워크플로우를 제어하고 배포하며 관제(Observability)를 수행하는 생태계 확장 계층
| 도구명 | 핵심 키워드 | 정의 | 기존 방식의 한계 (Pain Point) | 해결책 (Value) |
|---|---|---|---|---|
| LangGraph | - 순환 구조 - 상태 제어 | 복잡한 반복/루프 워크플로우와 멀티 에이전트를 제어 | 일직선으로만 데이터가 흘러, 실패 시 '되돌아가기/재시도' 구현이 어려움 | 순환(Cyclic) 그래프와 상태(State) 저장을 통해 유연한 자율 에이전트 구현 |
| LangServe | - 배포 자동화 - FastAPI 기반 | 작성한 체인/에이전트를 클릭 한 번으로 REST API 서버로 변환 | 서비스 배포를 위해 스트리밍, 비동기 처리 등 백엔드 코딩 공수가 너무 큼 | 단 한 줄의 코드로 프로덕션 급 API 및 테스트 플레이그라운드 자동 생성 |
| LangSmith | - 실시간 추적 - LLMOps | 프롬프트, 비용, 디버깅을 총괄하는 풀스택 AI 관제 탑 | LLM 출력의 가변성이 커서 내부에서 어디가 고장 났는지(블랙박스) 찾기 힘듦 | 입력부터 출력까지 전 과정을 트리 구조로 시각화(Tracing)하고 성능 평가 |
- 개발자 관점의 내용
- 설계 및 제어 (LangGraph)
- 기존:
입력 🡲 LLM 🡲 출력(일직선 통행) - 현재:
태스크 수행 🡲 결과 검증 🡲 [통과] 종료 / [실패] 뒤로 돌아가서 재시도(유연한 피드백 루프)
- 기존:
- 서비스 배포 (LangServe)
- 기존: 주피터 노트북 코드를 웹 앱에 붙이려면 API 서버 개발에 며칠씩 소요
- 현재: 코드 한 줄로
/invoke(단발성),/stream(실시간 토큰 출력),/batch(병렬 처리) 엔드포인트 자동 개설
- 모니터링 및 운영 (LangSmith)
- 기존: “에이전트가 왜 엉뚱한 답변을 했지?” 원인 분석을 위해 무수한 로그 출력 코드를 심어야 했음
- 현재: 대시보드 화면 하나로 프롬프트 버전, 구간별 지연 시간(Latency), 토큰 소비량 및 비용을 실시간 시각화 추적
- 설계 및 제어 (LangGraph)
4. 개발 프레임워크 핵심 5대 컴포넌트
- 실제 LLM 애플리케이션 내부를 구성하는 블록들
- 크게 5가지 영역으로 분류됨
[User 인터페이스]
│
▼
1. Model I/O ◀─── 3. Memory (대화 맥락 상태 유지)
│
├─► 2. Retrieval (외부 지식 데이터 RAG 소스 검색)
│
└─► 4. Agents & Tools (LLM이 자율적으로 외부 API/도구 제어)
- Model I/O (모델 입력 및 출력)
- 언어 모델과의 상호작용을 표준화하고 자동화하는 기본 레이어
사용자의 입력을 모델이 이해할 수 있게 가공하고, 모델의 출력을 개발자가 다루기 쉬운 형태로 정제하는 단계
- 역할:
- LLM과의 통신 인터페이스 통합 표준화 및 입출력 데이터 흐름 제어
세부 구성:
Model I/O (모델 인터페이스) ├── Prompts (프롬프트 템플릿) │ ├── PromptTemplate / ChatPromptTemplate (기본 스키마) │ └── FewShotPromptTemplate (예제 기반 템플릿) │ └── Example Selectors (동적 예제 선택기) │ ├── Models (LLM & ChatModels) └── Output Parsers (출력 파싱)- Prompts (프롬프트 템플릿):
- 사용자 입력을 동적으로 받아 변수를 바인딩하고 프롬프트를 구조화하여 컨텍스트 관리를 표준화
하드코딩을 배제하고
{variable}형태로 변수를 바인딩하여 재사용 가능한 프롬프트 스키마를 구성PromptTemplate: 일반 비정형 텍스트 입력을 처리하는 기본 템플릿- 대상 모델: 전통적인 텍스트 완료 모델(주로 레거시 LLM 클래스, 예: GPT-3 Davinci 등)
- 특징: 입력 데이터와 변수를 조합하여 하나의 거대한 단일 문자열(String)을 만들어 냄
- 구조 예시: “다음 문장을 영어로 번역해줘: {text}” 🡲 결과: 하나의 문자열 생성
ChatPromptTemplate: 대화형 인터페이스를 위해 역할(System, Human, AI)별 메시지 목록을 생성하는 템플릿- 대상 모델: 현대적인 대화형 모델(주로 ChatModel 클래스, 예: GPT-4o, Claude, Ollama 등)
- 특징: 단순히 하나의 문자열을 만드는 것이 아니라, 모델에게 역할(Role) 주입이 가능한 메시지 객체들의 배열을 생성함
- 구조 예시:
- 다음의 메시지를 각각 구조화하여 하나의 대화 맥락(Context) 묶음으로 제어
- 시스템의 페르소나를 정의하는 SystemMessage
- 유저의 질문인 HumanMessage
- AI의 이전 답변인 AIMessage
- 다음의 메시지를 각각 구조화하여 하나의 대화 맥락(Context) 묶음으로 제어
FewShotPromptTemplate: LLM에게 원하는 답변형식을 가이드하기 위해, 예제 목록을 포함하는 프롬프트를 생성하는 전용 템플릿 클래스- 핵심 역할:
- 고정된 예제 리스트나, Example Selector를 내부에 결합 🡲 사용자의 질문에 맞춰 예제가 동적으로 결합된 최종 프롬프트를 완성
- Example Selectors:
- 프롬프트의 Context Window 한계를 효율적으로 관리하기 위해,
- 입력 쿼리와 의미적으로 가장 유사한 소수의 예제(Few-shot)만 동적으로 선택하여 프롬프트에 주입하는 지능형 최적화 도구
- 핵심 역할:
- Models (언어 모델 추상화):
- 하부 엔지니어링 스택의 결합도를 낮추어 백엔드 모델(OpenAI, Ollama, Claude 등)의 교체를 코드 한 줄로 가능하게 함
LLM:- 단순 텍스트 입출력(String in, String out)을 처리하는 전통적인 모델 클래스
ChatModel:- 시스템/유저/AI 메시지 객체를 주고받는 현대적인 대화형 모델 클래스
- 최신 버전에서는 각 벤더별 모델의 도구 호출(Tool Calling) 인터페이스를 통합적으로 추상화하여 제공
- 하부 엔지니어링 스택의 결합도를 낮추어 백엔드 모델(OpenAI, Ollama, Claude 등)의 교체를 코드 한 줄로 가능하게 함
- Output Parsers (출력 파싱):
- LLM의 비정형 텍스트 출력(String)을 분석하여 개발자가 프로그래밍 언어에서 다루기 쉬운 구조화된 데이터 타입으로 강제 변환
- JSON, List, CSV 파싱뿐만 아니라 Pydantic 객체 구조로 매핑하는 기능을 제공하여 데이터의 유효성 검증을 자동화
- 포맷팅 실패 시 LLM에게 수정 요청을 보내는 자동 복구 메커니즘(Retry/Fixing Parser)을 결합할 수 있음
- Prompts (프롬프트 템플릿):
- Retrieval (RAG 아키텍처)
- 역할:
- 외부 비정형 데이터를 가져와 LLM이 참조할 수 있도록 지식 베이스를 구축하는 핵심 아키텍처
- 세부 구성:
Document Loaders(데이터 수집) 🡲Text Splitters(의미 단위 Chunk 분할) 🡲Embedding Models(수치 벡터화) 🡲Vector Stores(저장) 🡲Retrievers(쿼리 기반 지식 추출)
단계 컴포넌트 명칭 주요 역할 및 기능 1. Load Document Loaders - 100여 개 이상의 소스에서 원시 데이터를 LangChain 표준 `Document` 객체(Page Content + Metadata)로 통일하여 로드
- PDF, Web Page, Notion, Confluence, SQL 등2. Split Text Splitters - LLM의 Context Window 한계를 극복하기 위해 문서를 의미 있는 단위(Chunk)로 분할
- 각 청크 간 일부 텍스트를 중첩시키는 오버랩(Overlap) 설정을 통해 문맥 손실 최소화3. Embed Embedding Models - 분할된 텍스트 청크를 고차원 밀집 벡터(Dense Vector)로 변환하는 임베딩 인터페이스 제공 4. Store Vector Stores - 임베딩된 벡터 데이터를 저장하고 고속 유사도 검색(Cosine Similarity, L2 등)을 지원하는 데이터베이스 통합
- FAISS, Chroma, Pinecone 등5. Retrieve Retrievers - 사용자의 쿼리에 연관성이 가장 높은 문서 청크를 벡터 데이터베이스에서 찾아 추출하는 검색 알고리즘 레이어
- 키워드 검색과 벡터 검색을 결합한 하이브리드 검색(RRF), 문서 재정렬(Reranking), 부모-자식 문서 구조 검색(Parent Document Retriever) 등 고도화된 검색 알고리즘을 추상화한 컴포넌트 - 역할:
- Memory (상태 및 문맥 관리)
- 단발성(Stateless)으로 동작하는 LLM의 한계를 극복하고, 인간처럼 연속적인 다중 턴(Multi-turn) 대화를 이어갈 수 있도록 상태를 유지하는 시스템
- 역할:
- 과거 대화 이력을 기록·관리
- 새로운 질문이 들어왔을 때 관련 문맥을 프롬프트에 동적으로 주입하여 지속적인 대화 맥락 유지
- 세부 구성:
ConversationBufferMemory(원시 이력 저장):- 사용자와 AI가 주고받은 모든 대화 텍스트(
ChatMessageHistory)를 누적하여 프롬프트에 그대로 실어 나르는 가장 기본적인 방식
- 사용자와 AI가 주고받은 모든 대화 텍스트(
- 토큰 최적화형 메모리 (Window / Summary):
- Context Window 한계 및 비용을 관리하기 위한 지능형 버퍼 기법
ConversationBufferWindowMemory: 최신 N개의 대화 쌍만 슬라이딩 윈도우 방식으로 기억ConversationSummaryMemory: 과거 대화 전체를 LLM을 통해 요약본으로 변환하여 압축 관리
- Context Window 한계 및 비용을 관리하기 위한 지능형 버퍼 기법
Persistent Memory(영속성 레이어):- 서버가 꺼지거나 세션이 끊겨도 대화 상태를 영구 저장할 수 있도록
- Redis, PostgreSQL 등 외장 데이터베이스와 연동하는 영속성 레이어를 지원
- 최신 아키텍처 참고:
- 단순 챗봇 이상의 복잡한 시스템에서는 하드코딩된 레거시 Memory 컴포넌트 대신, LangGraph의 내부 체크포인터(State Management 및 Checkpointing)를 사용하여 대화의 상태(State)를 영속적으로 제어하는 것이 강력히 권장됨
- Chain (워크플로우 오케스트레이션)
여러 컴포넌트를 유기적으로 엮어 단일 목적의 자동화 파이프라인을 구축하는 모듈
- Runnable Sequence (기존의 Chains 대체):
- 기존의 하드코딩된 내부 체인 객체(
LLMChain,SequentialChain,RetrievalQA)들은 직관성이 떨어져 폐기(Deprecated)됨 - 현재는 LCEL을 기본으로 하여 컴포넌트 간 입출력 데이터 형식을 맞춰 파이프(
|)로 결합하는 구조로 전면 전환됨- 내부적으로
RunnableSequence객체가 자동 생성되어 흐름을 제어
- 내부적으로
- 기존의 하드코딩된 내부 체인 객체(
- Router 파이프라인:
- 사용자 질문의 의도나 주제를 분석하여 가장 적합한 서브 파이프라인(DB조회 체인, 일반QA 체인, 수학계산 툴 등)으로 실행경로를 동적으로 라우팅
- 기존 방식에서는
LLMRouterChain,MultiPromptChain같은 전용 클래스를 썼으나, 이 객체들은 완전히 퇴출(Deprecated)됨 - 현재 방식:
- LCEL의
RunnableBranch또는 커스텀 파이썬 함수 사용: 조건문 코드를 파이프라인(|) 중간에 끼워 넣어 분기 처리 - LLM의 Tool Calling(도구 호출) 기능 활용: LLM에게 “사용자의 질문이 DB 조회용인지, 수학 계산용인지 판단해서 적절한 함수(Tool)를 호출해 줘”라고 판단을 위임하는 방식
- LCEL의
- Agents & Tools (자율형 에이전트 시스템)
- 미리 짜인 고정 시퀀스(Chain)대로 움직이는 것이 아니라, LLM 스스로 상황을 판단하여 목표를 달성할 때까지 실행 경로를 결정하는 자율 제어 루프
- 역할:
- LLM을 추론엔진으로 활용하여 복잡한 태스크를 절차적으로 해결
- 외부 환경(외부 DB, 웹, API 등)과 능동적으로 상호작용함
- 세부 구성:
- Agent Runtime (추론 루프 - ReAct 패러다임):
- LLM이 문제를 해결할 때까지 ‘생각(Thought) 🡲 행동(Action) 🡲 관찰(Observation)’의 자율적 루프를 반복 수행하도록 제어하는 핵심 엔진
- Tools (도구):
- 에이전트가 현실 세계 및 외부 시스템과 인터페이스할 수 있도록 부여된 기능
- 예: Google Search API(웹 서칭), SQL Executor(데이터베이스 조회), Python REPL(코드 실행 및 시각화), 계산기 등
- 에이전트가 현실 세계 및 외부 시스템과 인터페이스할 수 있도록 부여된 기능
- Toolkits (도구 집합):
- 특정 목적을 달성하기 위해 연관된 여러 개의
Tool들을 하나로 묶어 에이전트에게 통째로 부여하는 패키지- 예: 파일 시스템 조작, Office 문서 편집, 데이터베이스 관리 등
- 특정 목적을 달성하기 위해 연관된 여러 개의
- Agent Runtime (추론 루프 - ReAct 패러다임):
5. LCEL (LangChain Expression Language)
- 현재 LangChain 개발 패러다임의 핵심은 LCEL(LangChain 표현 언어)
기존의 내장
Chain클래스(예:LLMChain,RetrievalQA)들이 전면 deprecated되고, Unix 파이프 연산자(|)를 활용한 선언적 인터페이스로 통합됨# LCEL 예시 아키텍처 구조 chain = prompt | model | output_parser- LCEL이 제공하는 엔지니어링적 이점
- 스트리밍 지원(Streaming):
- 파이프라인의 첫 번째 컴포넌트가 출력을 내보내는 즉시
- 최종 파서까지 토큰 단위로 스트리밍(
stream()) 처리가 가능하여 - UX를 극대화
- 비동기 지원(Async):
- 동일한 체인을
invoke()뿐만 아니라ainvoke(),astream()등의 비동기 메서드로 호출할 수 있어 - 고동시성 웹 서버 환경에 최적화됨
- 동일한 체인을
- 병렬 처리(Parallelism):
- RAG 가동 시 여러 문서 소스를 동시 검색하거나 다중 프롬프트를 실행할 때,
RunnableParallel을 통해 별도의 멀티스레딩 구현 없이 자동으로 병렬 처리
- 스트리밍 지원(Streaming):
6. 주요 특징 (Key Features)
- 데이터 인식 및 통합 (Data-Awareness & Integration)
- 정적 학습 데이터에만 의존하는 LLM의 한계를 극복하기 위해
- 엔터프라이즈 데이터베이스(SQL/NoSQL), 파일 시스템, 클라우드 스토리지, 실시간 웹 API 등 다양한 외부 데이터 소스와 유기적으로 결합
- 실시간 비즈니스 데이터 및 최신 정보를 반영한 애플리케이션 개발 가능
- 추상화와 모듈화 (Abstraction & Modular Design)
- 프롬프트, LLM, 메모리, 벡터 데이터베이스 등 복잡하고 파편화된 구성 요소를 표준화된 인터페이스로 추상화
- 하부 엔진(예: OpenAI에서 Ollama/로컬 LLM으로 교체)을 바꾸더라도
- 상위 비즈니스 로직을 최소한으로 수정하여 재사용할 수 있는 유연성을 확보
- 선언적 파이프라인 아키텍처 (LCEL 기반 인프라)
- 레고 블록을 조립하듯 Unix 파이프 연산자(
|)를 사용해 데이터 흐름을 선언적으로 정의 - 내부 메커니즘을 블랙박스화하지 않고, 복잡한 태스크를 원자적(Atomic) 단위로 쪼개어 가시성 높은 파이프라인을 구축 가능
- 레고 블록을 조립하듯 Unix 파이프 연산자(
- 강력한 엔터프라이즈 생태계 및 커뮤니티 지원
- 대규모 프로덕션 환경을 지원하기 위해
- 모니터링 및 디버깅 툴인 LangSmith, REST API 배포 툴인 LangServe와 연계
- 단순 실험실 스크립트 수준을 넘어 상용 서비스 관제까지 올인원으로 지원
7. 활용 분야 (Use Cases)
- 엔터프라이즈 RAG 기반 지식 관리 시스템
- 사내 보안 문서, 매뉴얼, 사규집 등의 방대한 비정형 데이터를 기반으로 한
- 고신뢰성 내부 질의응답 챗봇 및 지식 서치 허브 구축
- 자율형 데이터 분석 및 엔지니어링 에이전트
- 자연어로 데이터 추출 및 분석을 요청하면,
- 에이전트가 내부적으로 SQL 쿼리를 동적으로 생성·실행하고
- 파이썬 코드를 가동하여
- 차트 시각화 및 인사이트 보고서까지 자동 작성하는 시스템
- 지능형 워크플로우 자동화 (Customer Support Agents)
- 사용자의 이메일이나 문의 내역의 유즈케이스를 분류한 뒤,
- 필요한 외부 API를 에이전트가 스스로 판단해
- 고객 정보를 조회하고 맞춤형 대응 메일을 초안 작성 및 발송 예약하는
- 비즈니스 프로세스 자동화(RPA)의 핵심
- 스마트 팩토리 및 산업용 물리 AI(Physical AI) 제어 인터페이스
- 설비 데이터나 장비 매뉴얼(Data Connection)을 인지한 상태에서,
- 현장 제어 시스템이나 IoT 센서 API(Tools)와 연동하여
- 장비의 실시간 상태를 모니터링하고 가이드라인을 제공하는
- 자연어 기반의 HMI/SCADA 보조 인터페이스