[영상] LangGraph 개념 완전 정복
Day 2: A2A (Agent-to-Agent) 프로토콜
[영상] LangGraph 개념 완전 정복
AI Agent 심화 > Day 2: A2A (Agent-to-Agent) 프로토콜
LangGraph의 노드(Node)·엣지(Edge)·상태(State) 3요소를 정의하고 상호 관계를 설명할 수 있다 LangGraph가 단순 체인(LangChain)과 달리 순환(Cycle) 그래프를 지원해 에이전트 루프를 구현하는 원리를 설명할 수 있다 공유 상태(Shared State)를 활용해 멀티에이전트 간 정보를 전달하는 패턴을 설계할 수 있다 제조 트러블슈팅 시나리오에서 LangGraph 노드를 어떻게 분할할지 아이디어를 제시할 수 있다
영상 핵심 정리 — LangGraph 개념 완전 정복
이 영상은 LangGraph의 핵심 개념인 노드·엣지·상태를 통해 AI 에이전트가 어떻게 복잡한 판단 흐름을 실행하는지 설명한다. 단순 순차 체인을 넘어 순환 그래프 기반의 에이전트 오케스트레이션을 이해하면 복잡한 제조 트러블슈팅 자동화를 설계할 수 있다.
1. LangGraph 3요소
[State] ←→ {노드A: 알람 분석}
↓ 조건부 엣지
{노드B: 도면 검색} {노드C: 이력 조회}
↘ ↙
{노드D: 정비 지시 생성}
↓
[END]
| 요소 | 역할 | 제조 예시 |
|---|---|---|
| Node | LLM 호출·툴 실행·로직 단위 | '알람 원인 분류' 노드 |
| Edge | 노드 간 흐름 제어 | 알람 레벨 → 분기 |
| State | 노드 간 공유 데이터 컨테이너 | 설비ID·알람코드·이력 |
2. 상태 기반 멀티에이전트의 핵심
from langgraph.graph import StateGraph, END
from typing import TypedDict
class MfgState(TypedDict):
machine_id: str
alarm_code: str
root_cause: str
action_plan: str
def analyze_alarm(state: MfgState) -> MfgState:
# LLM이 알람 코드를 분석해 root_cause 업데이트
state['root_cause'] = llm.invoke(state['alarm_code'])
return state
def route_by_severity(state: MfgState) -> str:
return 'escalate' if 'CRITICAL' in state['alarm_code'] else 'auto_fix'
graph = StateGraph(MfgState)
graph.add_node('analyze', analyze_alarm)
graph.add_conditional_edges('analyze', route_by_severity,
{'escalate': 'human_review', 'auto_fix': 'generate_action'})
3. 함정 — 무한 루프 위험
LangGraph는 순환 그래프를 허용하므로 종료 조건(END 엣지)을 명확히 설계하지 않으면 에이전트가 루프에 빠진다. 반드시 최대 반복 횟수(recursion_limit)를 설정하고, 각 노드에서 진행 여부를 State에 기록해야 한다.
app = graph.compile()
result = app.invoke(initial_state, config={'recursion_limit': 10})
다음 task와의 연결
다음 reading 'A2A 프로토콜 설계 원칙'에서는 LangGraph로 만든 에이전트들이 서로 다른 프레임워크·벤더 경계를 넘어 통신하는 방법을 학습한다. Google이 2025년 발표한 A2A 프로토콜이 LangGraph 에이전트를 어떻게 연결하는지가 핵심이다.
LangGraph의 공유 State 객체가 단순 체인과 어떻게 다른지, 제조 시나리오로 구체적인 설계 예시를 받아 개념을 심화하세요.
LangGraph로 제조 불량 대응 워크플로우를 설계한다고 할 때, 공유 State 객체에 어떤 필드를 담아야 하는지 알려줘. '불량 감지 → 원인 분석 → 정비 예약' 각 노드가 State를 어떻게 읽고 쓰는지, 조건부 엣지(Conditional Edge)가 어떤 기준으로 다음 노드를 선택하는지 코드 예시와 함께 설명해줘.
- • LangGraph는 '에이전트 = 그래프의 노드'로 모델링한다 — 각 노드가 LLM 호출·도구 실행·조건 분기를 담당한다
- • 공유 State 객체가 모든 노드에서 읽고 쓸 수 있는 영속 컨텍스트 역할을 한다 — 단순 체인의 선형 전달과 근본적으로 다르다
- • 조건부 엣지(Conditional Edge)로 LLM의 판단 결과에 따라 다음 노드를 동적으로 선택하며, 이것이 '에이전트다운' 동작을 만든다
- • LangGraph는 블랙박스 결정이 아닌 명시적 그래프 제어이므로 에러 처리·롤백·감사 로그를 확정적으로 구현할 수 있다
