주뇽's 저장소
Part 1: 기본 챗봇 만들기 - LangGraph의 기초 🌱 본문
728x90
반응형
Part 1: 기본 챗봇 만들기 - LangGraph의 기초 🌱
LangGraph를 처음 시작하는 분들을 위한 기초 가이드를 작성한다. 이번 글에서는 가장 기본적인 챗봇을 만들어보면서 LangGraph의 핵심 개념을 이해한다.
1. 환경 설정 🛠️
먼저 필요한 라이브러리를 설치한다:
%pip install -U langgraph langsmith langchain_openai python-dotenv
2. 기본 코드 구현 💻
import os
from dotenv import load_dotenv
from typing import Annotated
from typing_extensions import TypedDict
from langgraph.graph import StateGraph, START, END
from langgraph.graph.message import add_messages
from langchain_openai import ChatOpenAI
# 환경변수 로드
load_dotenv()
# State(상태) 정의
class State(TypedDict):
messages: Annotated[list, add_messages]
# 그래프 설정
graph_builder = StateGraph(State)
# AI 모델 설정
llm = ChatOpenAI(
model="gpt-4",
temperature=0.7,
streaming=True
)
# 챗봇 노드 함수
def chatbot(state: State):
return {"messages": [llm.invoke(state["messages"])]}
# 그래프 구성
graph_builder.add_node("chatbot", chatbot)
graph_builder.add_edge(START, "chatbot")
graph_builder.add_edge("chatbot", END)
# 그래프 컴파일
graph = graph_builder.compile()
3. 주요 구성요소 설명 📝
State (상태)
class State(TypedDict):
messages: Annotated[list, add_messages]
- State는 챗봇의 '기억' 역할을 수행한다
messages
리스트에 모든 대화 내용을 저장한다add_messages
로 자동 메시지 추가 기능을 구현한다
노드 (Node)
def chatbot(state: State):
return {"messages": [llm.invoke(state["messages"])]}
- 챗봇의 실제 작업을 수행하는 부분을 담당한다
- 메시지를 받아서 AI 모델로 처리한다
- 처리 결과를 반환한다
엣지 (Edge)
graph_builder.add_edge(START, "chatbot")
graph_builder.add_edge("chatbot", END)
- 노드 간의 연결을 정의한다
- START → chatbot → END 순서로 실행한다
4. 테스트 코드 🧪
def test_chatbot(question):
print("\n" + "="*50)
print(f"😀 사용자: {question}")
print("="*50 + "\n")
try:
for event in graph.stream({"messages": [("human", question)]}):
for value in event.values():
if "messages" in value:
message = value["messages"][-1]
if hasattr(message, "content"):
print(f"🤖 AI: {message.content}\n")
except Exception as e:
print(f"\n❌ 오류 발생: {str(e)}")
# 테스트 실행
test_questions = [
"안녕하세요!",
"1 + 1은 뭐야?",
"파이썬이란 무엇인가요?"
]
for question in test_questions:
test_chatbot(question)
5. 실행 결과 예시 🎯
==================================================
😀 사용자: 안녕하세요!
==================================================
🤖 AI: 안녕하세요! 무엇을 도와드릴까요?
==================================================
😀 사용자: 1 + 1은 뭐야?
==================================================
🤖 AI: 1 + 1은 2입니다.
6. 중요 포인트 정리 ✨
- 상태 관리
- State 클래스로 대화 내용을 관리한다
- Annotated와 add_messages로 메시지 추가 로직을 구현한다
- 노드 설계
- chatbot 함수로 메시지 처리 로직을 구현한다
- AI 모델과의 통신을 담당한다
- 흐름 제어
- START와 END 노드로 실행 흐름을 제어한다
- add_edge로 노드 간 연결을 설정한다
이렇게 기본적인 LangGraph 챗봇을 구현하고 테스트할 수 있다. 다음 글에서는 웹 검색 기능을 추가하여 더 똑똑한 챗봇을 만드는 방법을 알아본다. 🚀
예제 코드 : https://github.com/junyong1111/LangGraph/tree/main/example1
참고 : https://langchain-ai.github.io/langgraph/tutorials/introduction/#part-1-build-a-basic-chatbot
'LangGraph' 카테고리의 다른 글
Part 2.2: LangGraph와 웹 검색 도구를 활용한 지능형 챗봇 구현하기 🔍 (2) | 2025.01.18 |
---|---|
Part 2-1: LangGraph 도구 활용 에이전트 - 날씨 정보 챗봇 구현하기 🌤️ (1) | 2025.01.18 |
0. LangGraph 완벽 가이드: AI 챗봇 개발의 새로운 패러다임 🚀 (0) | 2025.01.18 |