AI

[AI] LangChain(랭체인)이란?

Alex Han 2025. 2. 18. 16:57
반응형

LangChain은 대규모 언어 모델(LLM) 기반 애플리케이션을 쉽게 개발할 수 있도록 돕는 오픈소스 프레임워크이다. 주로 OpenAI, Hugging Face, Cohere 등의 LLM API를 활용하여 문서 처리, 질문 응답, 체인형 워크플로우 구성 등의 기능을 구현할 때 사용된다.

 

 

 


1. LangChain의 주요 개념

LangChain은 다음과 같은 주요 개념으로 구성된다.

 

1) LLM (Large Language Models)

OpenAI GPT-4, Hugging Face Transformers, Claude 같은 다양한 언어 모델을 사용할 수 있도록 지원한다.

from langchain.llms import OpenAI 같은 방식으로 쉽게 LLM을 호출할 수 있다.

 

2) 프롬프트 템플릿 (Prompt Template)

LLM의 입력을 동적으로 생성하는 기능을 제공한다.

예를 들어, 아래 코드는 프롬프트에 변수를 넣어 동적으로 완성하는 방식이다.

from langchain.prompts import PromptTemplate

prompt = PromptTemplate(
    input_variables=["topic"],
    template="Write a short article about {topic}."
)

print(prompt.format(topic="Artificial Intelligence"))

 

3) 체인 (Chains)

여러 단계를 거치는 복잡한 워크플로우를 간단하게 구성할 수 있도록 한다.

예를 들어, 사용자의 입력을 받아 LLM이 응답을 생성하는 체인은 다음과 같이 만들 수 있다.

from langchain_openAI import OpenAI
from langchain.chains import LLMChain
from langchain.prompts import PromptTemplate

llm = OpenAI(model_name="text-davinci-003")

prompt = PromptTemplate(
    input_variables=["name"],
    template="Tell me about {name}."
)

chain = LLMChain(llm=llm, prompt=prompt)

response = chain.invoke("Alan Turing")
print(response)

 

4) 메모리 (Memory)

LLM은 기본적으로 상태를 유지하지 않지만, LangChain의 메모리 기능을 활용하면 대화 내역을 기억할 수 있다.

예를 들어, ConversationBufferMemory를 사용하면 대화 내역을 저장할 수 있다.

from langchain.memory import ConversationBufferMemory

memory = ConversationBufferMemory()
memory.save_context({"input": "Hello"}, {"output": "Hi! How can I help you?"})
print(memory.load_memory_variables({}))  # {'history': 'Human: Hello\nAI: Hi! How can I help you?'}

 

5) 에이전트 (Agents)

LLM이 API 호출, 계산, 데이터베이스 조회 등의 작업을 수행할 수 있도록 한다.

예를 들어, OpenAI의 모델이 수학 문제를 푸는 도구를 호출하도록 만들 수 있다.

from langchain.agents import load_tools, initialize_agent
from langchain.llms import OpenAI

llm = OpenAI(temperature=0)
tools = load_tools(["serpapi", "llm-math"], llm=llm)

agent = initialize_agent(tools, llm, agent="zero-shot-react-description", verbose=True)
agent.run("What is 25 squared?")

 

 

 


2. LangChain의 활용 사례

LangChain은 다양한 애플리케이션에서 활용될 수 있다.

 

✅ 1) 질문 응답 시스템 (Q&A Bot)

위키피디아, 사내 문서 등의 데이터를 기반으로 질문을 받아 답변하는 챗봇을 구축할 수 있다.

 

✅ 2) 문서 요약 (Summarization)

긴 텍스트(뉴스, 논문 등)를 짧게 요약하는 애플리케이션을 만들 수 있다.

 

✅ 3) 코드 생성 및 디버깅

LLM을 활용하여 코드 스니펫을 생성하거나, 버그를 찾는 기능을 구현할 수 있다.

 

✅ 4) 데이터베이스 연동 (SQL Query 생성)

자연어를 입력하면 적절한 SQL 쿼리를 생성하도록 할 수 있다.

from langchain.sql_database import SQLDatabase
from langchain.llms import OpenAI

db = SQLDatabase.from_uri("sqlite:///chinook.db")
llm = OpenAI(temperature=0)
chain = SQLDatabaseChain.from_llm(llm, db, verbose=True)

result = chain.run("List all customers from Germany")
print(result)

 

 

 


3. LangChain과 함께 사용할 수 있는 기술

LangChain은 단독으로 사용되기보다는 여러 기술과 함께 활용된다.

기술 설명
OpenAI API GPT-4, GPT-3.5 등과 연동하여 텍스트 생성
Hugging Face 다양한 오픈소스 LLM 모델 지원
Pinecone 벡터 데이터베이스로 문서 검색에 활용
ChromaDB 로컬 벡터 데이터베이스로 검색 기능 제공
FAISS 빠른 유사도 검색을 위한 라이브러리
Weaviate 스케일러블한 벡터 데이터베이스
Streamlit 간단한 UI 개발 및 시각화

 

 

 


4. LangChain을 사용할 때 고려할 점

 

1. 비용 문제

OpenAI API를 사용할 경우 API 호출 비용이 발생한다.

Hugging Face의 오픈소스 모델을 활용하면 비용을 줄일 수 있다.

2. 성능 최적화

LLM을 호출하는 횟수를 줄이거나, 캐싱을 적용하면 성능을 개선할 수 있다.

RAG (Retrieval-Augmented Generation)를 활용하여 검색 + 생성 방식을 조합하면 정확도를 높일 수 있다.

3. 보안 문제

프롬프트 인젝션(prompt injection)과 같은 보안 취약점에 대비해야 한다.

LLM이 민감한 데이터를 유출하지 않도록 적절한 필터링이 필요하다.

 

 

 


5. 결론

LangChain은 LLM을 활용한 애플리케이션을 쉽게 개발할 수 있도록 돕는 강력한 프레임워크이다.

Q&A 시스템, 문서 요약, 데이터 분석 등 다양한 분야에서 활용할 수 있으며, 프롬프트 관리, 체인 구성, 메모리 저장 등의 기능을 통해 복잡한 LLM 애플리케이션을 구축할 수 있다.

반응형