반응형

👋 들어가기 전
요즘 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같은 프레임워크에서 특별한 동작을 정의
출처
1-1-2. LangGraph와 LangChain의 차이점
## LangGraph와 LangChain의 차이점 LangGraph와 LangChain은 둘 다 LLM(대규모 언어 모델) 애플리케이션 개발을 위한 강력한 도구이지만, 각각의…
wikidocs.net
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 |