LangChain

정지웅·2025년 4월 25일

LangChain

LLM을 기반으로 애플리케이션을 구축하기 위한 프레임워크. LLM 애플리케이션 개발을 위해서는 메모리, 프롬프트 형식 지정, 유효성 검사등의 과정들이 필요한데, LangChain은 이를 통합하여 관리하게 도와줌.

LangChain은 다음과 같은 기능을 제공함.

  1. Prompt Templates
  2. Chains
  3. Memory
  4. Agents
  5. Tools
  6. Retrieval

흐름

[사용자 입력]
|
v
[Memory] <— 이전 대화 내용 저장
|
v
[Agent] — (필요한 툴 선택)
|
├── [Tool: 여행지 추천 API 호출]
└── [Tool: 계산기 등 다른 도구도 가능]
|
v
[PromptTemplate] — 입력 + 도구 결과로 프롬프트 구성
|
v
[Chain] — LLM에 요청하고 응답 생성

예제 코드

from langchain.agents import initialize_agent, Tool
from langchain.agents.agent_types import AgentType
from langchain.chat_models import ChatOpenAI
from langchain.memory import ConversationBufferMemory
from langchain.prompts import PromptTemplate
from langchain.chains import LLMChain

# 1. LLM 설정
llm = ChatOpenAI(model="gpt-3.5-turbo")

# 2. Memory: 대화 내용 저장
memory = ConversationBufferMemory(memory_key="chat_history")

# 3. Tool: 외부 API 흉내내기
def fake_travel_api(query: str) -> str:
    return "파리의 인기 여행지는 에펠탑, 루브르 박물관, 몽마르뜨 언덕이 있어요."

travel_tool = Tool(
    name="TravelSearch",
    func=fake_travel_api,
    description="여행지를 추천해주는 도구입니다. 도시 이름을 입력하세요."
)

# 4. PromptTemplate
template = """
당신은 똑똑한 여행 어시스턴트입니다.
다음은 사용자와의 대화 내용입니다:
{chat_history}

사용자 질문: {input}

도움이 될 정보: {travel_info}

당신의 답변:
"""
prompt = PromptTemplate(
    input_variables=["chat_history", "input", "travel_info"],
    template=template
)

# 5. LLMChain: 프롬프트를 기반으로 응답 생성
chain = LLMChain(llm=llm, prompt=prompt, memory=memory)

# 6. Agent 설정 (Tool 사용)
agent = initialize_agent(
    tools=[travel_tool],
    llm=llm,
    agent=AgentType.ZERO_SHOT_REACT_DESCRIPTION,
    memory=memory,
    verbose=True
)

# 7. 실행
user_input = "파리 여행지 추천해줘"
response = agent.run(user_input)

print("AI 응답:", response)

0개의 댓글