안녕하세요.
오늘은 랭체인에 대하여 알아보겠습니다.
LangChain은 대규모 언어 모델(LLM) 을 이용해 다양한 기능을 구현할 수 있도록 도와주는 파이썬 기반의 프레임워크입니다. 특히, PromptTemplate과 Chain 같은 개념을 활용하여 체계적이고 효율적인 개발이 가능합니다.
LangChain을 쓰면 질문 응답 시스템, AI 에이전트, 챗봇, 콘텐츠 생성기와 같은 기능을 쉽고 빠르게 구현할 수 있습니다.
1. 주요 개념 정리 (PromptTemplate, Chain, Documents 변환)
(1) PromptTemplate
- PromptTemplate은 LLM에게 전달할 프롬프트(입력 문장)를 템플릿 형태로 관리하는 도구입니다.
- 상황에 따라 동적으로 바뀌는 질문이나 지시사항을 일관된 형식으로 관리하고 생성할 때 사용합니다.
- 변수(input_variables)를 이용해 매번 다른 질문을 편리하게 만듭니다.
예시 코드 -
from langchain.prompts import PromptTemplate
# PromptTemplate 생성
prompt = PromptTemplate(
input_variables=["topic", "length"],
template="{topic}에 대해 {length}자로 요약해 주세요."
)
# 프롬프트 적용 예시
final_prompt = prompt.format(topic="인공지능의 역사", length=200)
print(final_prompt)
#출력
# 인공지능의 역사에 대해 200자로 요약해 주세요.
(2) Chain(체인)
- Chain은 여러 단계의 작업을 연결하여 복잡한 작업을 순차적으로 처리하는 구조입니다.
- 예를 들어, Documents 변환 → 요약 → 키워드 추출 → 최종 답변 생성과 같은 여러 단계를 LLM과 결합하여 자동화할 수 있습니다.
- LangChain에서는 여러 유형의 Chain을 제공하며, 필요한 기능에 따라 적절한 Chain을 선택하거나 커스텀 Chain을 만들 수 있습니다.
대표적인 Chain 예시:
- LLMChain: PromptTemplate과 LLM을 결합한 기본적인 Chain입니다.
- RetrievalQAChain: 문서를 검색하고 관련된 내용을 질문과 연결하여 답변을 생성합니다.
간단한 Chain 예시 코드:
from langchain.llms import OpenAI
from langchain.prompts import PromptTemplate
from langchain.chains import LLMChain
# OpenAI 모델 연결
llm = OpenAI(api_key="YOUR_API_KEY")
# PromptTemplate 준비
prompt = PromptTemplate(
input_variables=["keyword"],
template="{keyword}의 최신 트렌드를 설명해주세요."
)
# Chain 생성
chain = LLMChain(llm=llm, prompt=prompt)
# Chain 실행
response = chain.run(keyword="인공지능")
print(response)
(3) Documents 변환 (Document Transformation)
- Documents 변환이란 LangChain이 외부에서 얻은 데이터를 LLM이 쉽게 이해할 수 있도록 가공하거나 변형하는 과정입니다.
- 문서 형식의 데이터를 LLM에 넣기 좋게 요약(Summarization), 분할(Splitting), 키워드 추출(Keyword Extraction) 등으로 변환합니다.
- 특히, Retrieval (검색 기반 답변 생성) 과정에서 흔히 사용됩니다.
Documents 변환 과정 -
간단한 코드 예시(문서 변환):
from langchain.document_loaders import WebBaseLoader
from langchain.text_splitter import RecursiveCharacterTextSplitter
from langchain.chains.summarize import load_summarize_chain
from langchain.llms import OpenAI
# 웹 문서 로드
loader = WebBaseLoader("https://ko.wikipedia.org/wiki/인공지능")
documents = loader.load()
# 문서 분할 변환 (Splitting)
text_splitter = RecursiveCharacterTextSplitter(chunk_size=1000, chunk_overlap=100)
docs_transformed = text_splitter.split_documents(documents)
# 요약 체인(Summarization Chain) 생성
llm = OpenAI(api_key="YOUR_API_KEY")
summarize_chain = load_summarize_chain(llm, chain_type="map_reduce")
# Documents 변환 후 요약 결과 얻기
summary_result = summarize_chain.run(docs_transformed)
print(summary_result)
2. 전체 과정 정리 (PromptTemplate → Chain → Documents 변환)
PromptTemplate 생성
▼
Chain 구성 (PromptTemplate + LLM 결합)
▼
외부에서 가져온 원본 문서(Documents) 로딩
▼
Documents 변환(분할/요약 등으로 가공)
▼
변환된 Documents를 Chain에 입력하여 원하는 결과 생성
3. LangChain 활용 예시
지식 검색 시스템 (RAG: Retrieval-Augmented Generation)
- 사용자의 질문이 들어오면, 관련 문서를 찾아 LLM이 문서를 요약하고 이해하여 답변 생성
대화형 챗봇
- 사용자의 의도를 파악하여 미리 정의된 문서나 외부 데이터를 참고해 더욱 정확한 대답 제공
자동 콘텐츠 생성기
- 블로그 글, 보고서, 뉴스 기사 등을 프롬프트 템플릿을 활용하여 자동 생성
AI 자동화 에이전트
- AI 스스로 API 호출, 웹 검색, 계산 등 다양한 작업을 자동화하여 효율적 수행 가능
4. 기술 스택과의 연동
LangChain은 다양한 기술 스택과 쉽게 연동할 수 있습니다.
구분 | 지원되는 기술 |
모델 | OpenAI GPT, Anthropic Claude, Google Gemini, Hugging Face 등 |
데이터베이스 | PostgreSQL, MySQL, MongoDB, ChromaDB, Pinecone 등 |
외부 API | Google 검색 API, Wikipedia API, 뉴스 API 등 |
개발 프레임워크 | FastAPI, Flask, Streamlit, React 등 |
5. 정리
LangChain은 LLM을 활용한 개발 과정에서 발생하는 복잡한 문제를 단순하고 효율적으로 해결할 수 있게 해주는 프레임워크입니다. 프롬프트 엔지니어링, 체인 구성, 에이전트 등을 통해 실제 AI 기반 서비스 및 어플리케이션을 빠르게 구축할 수 있도록 도와주는 역할을 합니다.
감사합니다.
'AI' 카테고리의 다른 글
[AI] 머신러닝 핵심 개념 요약 정리 - Day_2 (1) | 2025.05.31 |
---|---|
[AI] 머신러닝 핵심 개념 요약 정리 - Day_1 (0) | 2025.05.30 |
청크(Chunk)와 임베딩 (Embedding)이란 (1) | 2025.03.10 |
[LLM]파인튜닝 (Fine-tuning)? RAG (Retrieval-Augmented Generation)? 무엇일까?? (1) | 2025.03.09 |
LLM과 RAG란 무엇일까? (3) | 2025.03.04 |