LangChain은 최근 AI/데이터/서비스 개발에서 매우 인기 있는 오픈소스 프레임워크로, 대형 언어 모델(LLM), 다양한 툴, API, 문서 데이터, 데이터베이스 등 여러 AI 구성요소를 조합하여 실제 서비스나 응용 프로그램을 빠르게 개발할 수 있도록 도와주는 라이브러리입니다.

GPT 같은 대형 언어모델(LLM)이 등장하면서 누구나 강력한 자연어처리/코드 생성/질문응답 챗봇 등 다양한 AI 기능을 활용할 수 있게 되었음.
실제 서비스로 만들기 위해서는 단순히 LLM에 프롬프트만 넣는 것보다, 다양한 데이터(문서, DB 등)와 연동하거나, 외부 툴(검색, 계산기 등)도 사용해야 하며, 여러가지 기능을 "워크플로우"로 조합하는 것이 필요.
하지만 이런 연결작업은 생각보다 어렵고 코드가 복잡해짐.
(프롬프트 관리, 입력/출력 체인, 도구 호출, context 관리, 다양한 LLM 연결 등)
→ 이를 단순화하고 추상화시켜주는 것이 바로 LangChain입니다.

여러 작업(예: 프롬프트 입력 → LLM 호출 → 결과 후처리 → 추가 API 호출 등)을 한 줄로 연결해 "파이프라인(체인)"처럼 만듭니다.
복잡한 작업 흐름을 단순하게 구현할 수 있습니다.
LLM이 단일 답변을 내놓는 게 아니라, 상황에 맞게 필요한 "도구"를 선택해 실행하는 패턴입니다.
예시
사용자가 계산 문제를 요청
LLM이 스스로 계산기 툴에 접근
다시 답변을 합성하여 제공
직접적으로 명령어 처리, 정보 검색, 요약, 번역, 코드 실행, API 호출 등 실제 문제 해결이 가능합니다.
문서 기반 Q&A, 검색챗봇 등을 만들 때 단순 전체 텍스트 검색이 아니라, 문서조각(embedding)간의 유사도를 바탕으로 가장 관련 있는 부분만 LLM에 넣는 "RAG(검색 + 생성)" 패턴을 구현하는 데 최적화되어 있습니다.
Pinecone, Weaviate, Chroma, FAISS 등 유명 벡터DB와 바로 연하여 인덱싱/검색이 가능합니다.
프롬프트 템플릿을 만들어 변수만 바꾸어 쉽게 가변적 상황에도 대응할 수 있습니다.
다양한 Prompt engineering 기법을 실험/적용할 수 있는 구조입니다.

역할: 여러 회사/종류의 LLM(OpenAI, Google, HuggingFace, Ollama 등)을 하나의 통합 인터페이스 객체(클래스)로 다룸.
이점: 코드 한 줄만 바꿔도 모델 교체/멀티모델 연결이 쉬움.
OpenAI, ChatOpenAI, Ollama, HuggingFaceLLM 등역할: 사용자의 입력과 컨텍스트, 그리고 시스템 메시지, 지시문 등을 "템플릿" 형태로 만들어 LLM에 전달.
이점: 다양한 상황에 맞춰 프롬프트 구성/변수치환이 쉽고, 일관된 인터페이스 제공.
역할: 여러 단계를 순서대로 파이프라인처럼 연결하는 처리 흐름(워크플로우).
예:
유저 입력
프롬프트 작성
LLM 호출
후처리
이점: 복잡한 로직도 단계별로 쉽게 조립, 재사용성과 유지보수성이 높음.
역할: 대규모 문서, 데이터셋에서 빠르고 효율적으로 검색/질의하기 위해 임베딩(벡터화)+벡터DB 기반 색인 인프라 제공.
연결: 체인이나 에이전트가 질의 전 필요한 정보를 인덱스(벡터스토어)에서 검색하여 컨텍스트로 LLM에 제공. (대표: RAG 패턴)
예: FAISS, Chroma, Pinecone 등
역할: 여러 번의 대화 튜닝이나, 에이전트가 진행 중 과거 상태를 기억·저장하는 컴포넌트.
이점: 자연스러운 멀티턴 챗봇, 긴 대화, 대화 중 맥락 유지에 필수.
역할: LLM이 주체적으로 적합한 "행동"(tool 호출, 검색, 계산 등)을 판단해 복잡한 목표를 스스로 단계별로 해결하는 구조.
이점: 단편적 답변이 아니라, 복수 작업 조합+툴/데이터 활용+상황별 분기 등의 고도화된 처리가 가능.
[1. LLM 추상화]
|
▼
[2. 프롬프트 템플릿]
│ ▲
│ │
▼ │
[3. 체인 (입력 처리 → 프롬프트 생성 → LLM 호출 → 후처리)]
│ ▲
│ │
▼ │
[4. 인덱스 (문서 검색 → 관련 컨텍스트 추출)]
│ ▲
│ │
▼ │
[5. 메모리 (과거 대화/history, context 유지)]
│
▼
[6. 에이전트 (상황에 따라 검색/계산/DB/API 호출 등 순서 제어 및 도구 결합 실행)]
사용자 질문: “파이썬에서 리스트 정렬 방법을 알려줘.”
체인 작동
인덱스에서 “파이썬 리스트” 관련 문서 쿼리
프롬프트 템플릿에 문서 요약/컨텍스트 삽입
LLM 추상화된 엔진이 프롬프트로 답 생성
프로세스 중 메모리가 “사용자가 이전에 ‘리스트’ 관련 질문” 있음을 기억
만약 에이전트가 필요하다고 판단하면 구체적 코드를 검색 툴에서 불러오기도 함.
입력(질문)
│
[에이전트]
│
┌──>[체인]─────┐
│ │ │
│ ▼ │
│ [프롬프트] │
│ │ │
│ ▼ │
[인덱스]<────[메모리]
│ ↑ │
│ │ │
▼ │ │
[LLM 추상화: OpenAI, Ollama 등]
│
답변(출력)
LLM 추상화가 LLM 호출을 통합으로 책임짐
프롬프트는 입력과 문서 등 다양한 요소를 한데 모아 LLM을 위한 '질문지' 역할
체인은 이 모든 과정을 하나의 파이프라인/워크플로우로 연결
인덱스는 외부 문서·DB를 검색, LLM에 '외부 지식' 제공
메모리는 대화 또는 작업 과정의 맥락을 지속적으로 저장·공유
에이전트는 이 전체 흐름에서 “다음엔 뭘 해야 하는가?”를 LLM 관점에서 판단, 트리거/툴 연결/순서제어를 수행
from langchain.llms import OpenAI
from langchain.prompts import PromptTemplate
from langchain.chains import LLMChain
llm = OpenAI(api_key="...")
prompt = PromptTemplate(
input_variables=["topic"],
template="Write a short story about {topic}"
)
chain = LLMChain(llm=llm, prompt=prompt)
result = chain.run(topic="a robot learning piano")
print(result)
계산기, 검색 등 여러 툴을 조합한 자동화 에이전트 예시
LLM이 "검색이 필요해"라고 판단하면 외부 툴을 자동 호출
from langchain.agents import initialize_agent, load_tools
from langchain.llms import OpenAI
llm = OpenAI(...)
tools = load_tools(["serpapi", "llm-math"], llm=llm)
agent = initialize_agent(tools, llm, agent="zero-shot-react-description", verbose=True)
agent.run("서울의 현재 기온에 7을 곱하면 얼마야?")
[User]
|
[LangChain Framework]
|
├──── [Chains] : 여러 LLM, 프롬프트, 도구를 파이프라인처럼 연결
│
├──── [Agents] : LLM+툴/외부API, 필요한 기능을 LLM이 선택해 수행
│
├──── [Data Loaders] : 웹, PDF, DB 등 다양한 데이터를 로딩
│
├──── [VectorStore] : 임베딩 기반 검색/유사 텍스트 추출
│
├──── [LLM Wrappers] : OpenAI, Ollama 등 다양한 LLM 연결 및 래핑
│
└──── [Prompt Management] : 프롬프트 템플릿, 관리, 변수 치환 등
GPT 챗봇, 지식/문서 Q&A, 대화형 에이전트, 자동화 서비스, 검색형 요약 등 복잡한 AI기능을 쉽고 빠르게 개발
워크플로우 파이프라인화 → 코드의 가독성, 재사용성, 유지보수성 상승
다양한 AI 도구/API/DB와의 연결 지원
오픈소스 커뮤니티의 빠른 성장과 다양한 예제, 레퍼런스 제공