랭그래프 시작

2026. 2. 21. 21:17·AI/LangGraph
반응형

👋 들어가기 전

 

요즘 AIAgent가 판을 치고 있는 시대에, 나도 더이상 늦으면 안되겠다 싶어.


LangGraph를 통해 AI Agent 관련 지식을 좀 습득해보려한다.

MCP가 나와 조금, 인기는 떨어졌지만, 기본을 배우는데 굉장히 도움이 된다고해서
LangGrpah를 통해 공부해보려고한다.

LangChain는 LangGrpah를 알기위한 기본 개념들만 알고 넘어갈 생각이다.


🏁 학습할 내용

  • 환경 설정
  • 구성 요소
  • 간단한 그래프 만들어보기

⚙️ 환경설정

 

iOS 개발자로써, 파이썬 세팅은 항상 골머리 아팠다.

그런데 요즘 uv라는 인기있는 파이썬 패키지를 이용하니, 해당 과정이 엄청 단축됐다.

 

📦 UV

Rust로 구현된 파이썬 환경 관리 도구

 

특징

  • 고속의 동작 및 메모리 안전성
  • 효율적인 캐시 관리
  • 크로스플랫폼 지원
  • 전용 인터페이스 제공
 

 

설치

// windows

powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"

// macos
brew install uv

 

의존성 설치

uv python install 3.13
uv python pin 3.13 // 파이썬 버전 고정
uv sync // uv.lock 파일을 기준으로 의존성 설치

 

 💻 VSCode + 쥬피터 노트북 관련 설정

 

  • VSCode에서 쥬피터 노트북 익스텐션 설치
  • ipykernel 설치
VS코드에서 쥬피터 노트북은 다음과 같이 실행됨

VSCode 
   ↓
ipykernel (Python 패키지) 
   ↓
Python interpreter

uv add --dev ipykernel // 커널 설치

🧱 구성 요소

 

1. State

  • 현재 Agent의 상태

2. Node

  • 에이전트가 실행하는 작업
    • 기본적으로는 함수지만, 또다른 에이전트가 될 수 있음
  • START와 END 노드는 랭그래프에서 기본적으로 제공

3. Edge

  • 노드 사이를 연결하는 관계
  • 노드가 반드시 먼저 생성되있어야 함
  • 실선으로 표시됨

4. Conditional Edge

  • 조건부 Edge
  • 필요할 때만, 해당 Node로 이동
  • 점선으로 표시됨

📊 간단한 그래프 만들기

 

from dotenv import load_dotenv
import os

load_dotenv()

# ========= State 정의 =========
from typing import Annotated
from typing_extensions import TypedDict

from langgraph.graph.message import add_messages
from langchain_core.messages import AnyMessage

class AgentState(TypedDict):
    messages: list[Annotated[AnyMessage, add_messages]]
    
# ========= 노드 밑 그래프 만들기 =========
from langgraph.graph import StateGraph

grpah_builder = StateGraph(AgentState)

def generate(state: AgentState) -> AgentState: # generate 노드 정의
    message = state['messages']
    ai_message = ["AI 답변"] # 원래는 openAI의 invoke 함수 실행
    return {'messages': [ai_message]}
    
    
# =========  Edge 연결 =========
from langgraph.graph import START, END # START와 END 노드는 LangGraph에서 제공

grpah_builder.add_node('generate', generate) # 반드시, 노드 추가 먼저 

grpah_builder.add_edge(START, 'generate') # START -> generate
grpah_builder.add_edge('generate', END) # generate -> END
graph = grpah_builder.compile() # 그래프 컴파일

# =========  그래프 시각화 =========
from IPython.display import display, Image
display(Image(graph.get_graph().draw_mermaid_png()))

 

💡 모르는 파이썬 개념 정리

TypeDict
- 클래스는 딕셔너리(Dictionary) 형태를 정의
- 이후, 키와 value 타입을 미리 컴파일 타임에 정의

Annotated
- (타입, 메타데이터) 형태
- 추가 정보 제공: 타입 힌트에 추가적인 메타데이터를 추가할 수 있음
- 유효성 검사: 특정 라이브러리(Pydantic)와 함께 사용하여 데이터 유효성 검사를 수행
- 프레임워크 지원: LangGraph같은 프레임워크에서 특별한 동작을 정의

출처

https://wikidocs.net/261585

 

1-1-2. LangGraph와 LangChain의 차이점

## LangGraph와 LangChain의 차이점 LangGraph와 LangChain은 둘 다 LLM(대규모 언어 모델) 애플리케이션 개발을 위한 강력한 도구이지만, 각각의…

wikidocs.net

 

https://bigadmin.tistory.com/entry/Python-%ED%8C%A8%ED%82%A4%EC%A7%80-%EA%B4%80%EB%A6%AC%EC%9D%98-%ED%98%81%EC%8B%A0-uv-%EC%86%8C%EA%B0%9C#google_vignette

 

Python 패키지 관리의 혁신 - uv 소개

안녕하세요! 오토씨입니다.Python 패키지 관리의 새로운 강자로 떠오르고 있는 uv가 주목받는 이유는 무엇일까요? 빠른 속도, 크로스 플랫폼 지원, 그리고 직관적인 인터페이스 덕분에 많은 개발

bigadmin.tistory.com

 

반응형

'AI > LangGraph' 카테고리의 다른 글

SubGraph와 Router  (0) 2026.02.22
Corrective RAG  (0) 2026.02.22
Self RAG  (0) 2026.02.22
Conditional Edge  (0) 2026.02.22
PDF 전처리 해보기  (0) 2026.02.21
'AI/LangGraph' 카테고리의 다른 글
  • Corrective RAG
  • Self RAG
  • Conditional Edge
  • PDF 전처리 해보기
Hamp
Hamp
남들에게 보여주기 부끄러운 잡다한 글을 적어 나가는 자칭 기술 블로그입니다.
  • Hamp
    Hamp의 분리수거함
    Hamp
  • 전체
    오늘
    어제
    • 분류 전체보기 (339)
      • CS (30)
        • 객체지향 (2)
        • Network (7)
        • OS (6)
        • 자료구조 (1)
        • LiveStreaming (3)
        • 이미지 (1)
        • 잡다한 질문 정리 (0)
        • Hardware (2)
        • 이론 (6)
        • 컴퓨터 그래픽스 (0)
      • Firebase (3)
      • Programing Langauge (41)
        • swift (34)
        • python (6)
        • Kotlin (1)
      • iOS (134)
        • UIKit (37)
        • Combine (1)
        • SwiftUI (34)
        • Framework (7)
        • Swift Concurrency (22)
        • Tuist (6)
        • Setting (11)
        • Modularization (1)
        • Instruments (6)
      • PS (59)
        • 프로그래머스 (24)
        • 백준 (13)
        • LeetCode (19)
        • 알고리즘 (3)
      • Git (18)
        • 명령어 (4)
        • 이론 (2)
        • hooks (1)
        • config (2)
        • action (7)
      • Shell Script (2)
      • Linux (6)
        • 명령어 (5)
      • Spring (21)
        • 어노테이션 (6)
        • 튜토리얼 (14)
      • CI-CD (4)
      • Android (0)
        • Jetpack Compose (0)
      • AI (21)
        • 이론 (10)
        • MCP (1)
        • LangGraph (10)
  • 블로그 메뉴

    • 홈
    • 태그
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    dispatch
    CS
    boostcamp
    AVFoundation
    프로그래머스
    GIT
    백준
    dfs
    투포인터
    lifecycle
    Tuist
    Spring
    SwiftUI
    Swift
    concurrency
    dp
    property
    protocol
    IOS
    UIKit
  • 최근 댓글

  • 최근 글

  • 반응형
  • hELLO· Designed By정상우.v4.10.0
Hamp
랭그래프 시작
상단으로

티스토리툴바