주뇽's 저장소

Part 1: 기본 챗봇 만들기 - LangGraph의 기초 🌱 본문

LangGraph

Part 1: 기본 챗봇 만들기 - LangGraph의 기초 🌱

뎁쭌 2025. 1. 18. 17:33
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. 중요 포인트 정리 ✨

  1. 상태 관리
    • State 클래스로 대화 내용을 관리한다
    • Annotated와 add_messages로 메시지 추가 로직을 구현한다
  2. 노드 설계
    • chatbot 함수로 메시지 처리 로직을 구현한다
    • AI 모델과의 통신을 담당한다
  3. 흐름 제어
    • START와 END 노드로 실행 흐름을 제어한다
    • add_edge로 노드 간 연결을 설정한다

이렇게 기본적인 LangGraph 챗봇을 구현하고 테스트할 수 있다. 다음 글에서는 웹 검색 기능을 추가하여 더 똑똑한 챗봇을 만드는 방법을 알아본다. 🚀

 

예제 코드 : https://github.com/junyong1111/LangGraph/tree/main/example1

 

LangGraph/example1 at main · junyong1111/LangGraph

Contribute to junyong1111/LangGraph development by creating an account on GitHub.

github.com

 

 

 

참고 : https://langchain-ai.github.io/langgraph/tutorials/introduction/#part-1-build-a-basic-chatbot

 

Learn the basics

Home Guides Tutorials Quick Start 🚀 LangGraph Quickstart In this tutorial, we will build a support chatbot in LangGraph that can: ✅ Answer common questions by searching the web ✅ Maintain conversation state across calls ✅ Route complex queries to

langchain-ai.github.io