LLM을 기반으로 애플리케이션을 구축하기 위한 프레임워크. LLM 애플리케이션 개발을 위해서는 메모리, 프롬프트 형식 지정, 유효성 검사등의 과정들이 필요한데, LangChain은 이를 통합하여 관리하게 도와줌.
LangChain은 다음과 같은 기능을 제공함.
[사용자 입력]
|
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)