AI Agent란?
- 스스로 의사 결정하며, 도구를 사용하여, 목표를 달성하는 시스템
- 도구 사용이나 다단계 추론을 활용
- LLM을 중심으로 다양한 외부 도구를 연결하여 구축
- AI Agent = GPT + Tool 사용 능력 + 상태 유지
- 문제를 스스로 해결하는 시스템
- 주요 구성 요소
- Goal : “무엇을 해야 할까?” - 사용자의 요청이나 해결할 문제
- Reasoning Engine : GPT 같은 모델 → 계획을 세움
- Toolset : 외부 기능(검색, 계산 API 등)
- Memory / State : 이전 정보 저장, 진행 상황 추적
LangGraph란?
LangGraph
- AI Agent 간의 협업을 그래프 기반으로 설계하는 프레임워크
- 워크플로우(Workflow) : AI 에이전트들이 특정 목표를 위해 수행하는 일련의 과정 의미
- 복잡한 워크플로우를 처리하기 위해 그래프 구조가 필요
여기서 그래프(Graph)란?
- 워크플로우(작업 순서)를 의미
- 그래프의 구성요소
- 노드 : 실제 처리 함수(예: GPT 호출, 요약, 분류)
- 엣지(Edge) : “이 노드가 끝나면 어디로 갈지” 정의
주요 구성 요소
- 노드(Node)
- 노드는 그래프에서 특정 작업이나 판단을 수행하는 단위를 의미
- 각 노드는 파이썬 함수나 객체의 call 메서드로 구현
- 예) 사용자의 질문을 이해하거나 필요한 정보를 검색하는 등의 작업을 담당
- 엣지(Edge)
- 엣지는 노드간의 연결을 나타내며, 작업의 흐름을 정의
- 즉, 한 노드의 작업이 완료된 후 어떤 노드로 이동할지를 결정하는 역할
- 조건부 엣지(Conditional Edge)
- 조건부 엣지는 특정 조건에 따라 노드 간의 분기 처리를 가능하게 함
- 예) 특정 조건이 총족되면 A 노드에서 B 노드로 이동하고, 그렇지 않으면 C 노드로 이동
- 스테이트(State)
- 스테이트는 그래프의 현재 상태 값을 저장 및 전달하는 역할
- 대화 이력, 수집한 정보, 중간 결과 등을 포함
- 각 노드는 이 state를 입력으로 받아 처리한 후 업데이트
그래프 유형
1. 간단한 그래프
- 입력, 처리, 출력으로 이어지는 단순 흐름
2. Routing
- 특정 입력에 따라 서로 다른 경로를 선택하여 실행 흐름을 제어
- 사용자의 입력이나 특정 조건에 따라 서로 다른 노드 실행
3. Reflection
- LLM이 스스로의 추론 과정을 반추하여, 자기 피드백을 생성하는 메커니즘
- 에이전트는 반복 수행 속에서 점진적으로 성능을 향상
Graph 구조 만들기 절차
- 시스템 목표 설정 및 구성 요소 준비(LLM 모델 선정, Toolset 준비 등)
- 그래프 디자인 : 손으로 그래프 구조 그리기
- Graph 코딩을 통해 구현
<aside> 💡
State 정의 → Node 정의 → 그래프 구조 → 그래프 실행
</aside>
State 정의
State
- 그래프 노드의 입력과 출력 관리하는 딕셔너리 형태의 자료형
- 그래프를 통과하며, 컨텍스트를 유지(각 노드는 입력과 출력을 State에 담아 처리)
- typing 모듈의 TypedDict 클래스를 사용
- TypedDict는 딕셔너리 기반 상태 구조를 명확하게 정의
- LangGraph가 각 노드 간 상태 흐름을 안정적으로 추적하고 검증할 수 있게 해줌
from typing import TypedDict
# 그래프 전체에서 주고받는 데이터 구조를 정의
class State(TypedDict):
text: str
extra_field: int
Node 정의
Node
- 노드(Nodes)는 단순히 Python 함수
- 입력 : State 구조
- 출력 : State 구조
def node_1(state: State):
print(state)
# 입력: 상태 (state) → text 필드에 문자열을 덧붙임
# extra_field은 무조건 10으로 덮어씀
return {"text": state['text'] + "(텍스트 추가됨)", "extra_field": 10}
간단한 그래프 : 그래프 구조
그래프 구조 : START → Node → END
- 그래프 초기화
- Node 추가 : 생성한 함수를 노드로 추가(add_node)
- 노드 연결 : .add_edge(노드1, 노드2)
- 컴파일
from langgraph.graph import StateGraph, START, END
# 그래프 초기화
builder = StateGraph(State)
# Node 추가
builder.add_node("node", node_1) # "node"라는 이름으로 node_1 함수를 노드로 추가
# 노드 연결
builder.add_edge(START, "node")
builder.add_edge("node", END)
# 그래프 컴파일
graph = builder.compile()
graph.invoke({"text" : "안녕!"})
AI_Agent/AI_Agent_Basic/06. AI Agent 기본 그래프.ipynb at main · 427paul/AI_Agent
Contribute to 427paul/AI_Agent development by creating an account on GitHub.
github.com
'AI Agent > AI Agent의 이해' 카테고리의 다른 글
| 7. LangGraph 기초2 도구 (0) | 2026.05.31 |
|---|---|
| 6. LangGraph 기초1 기본 그래프2 (0) | 2026.05.30 |
| 4. Memory (1) | 2026.05.28 |
| 3. RAG 개념 이해 (0) | 2026.05.27 |
| 2. 메모리, RAG 개념 이해 (0) | 2026.05.26 |