62

Step 3: LangGraph 메인 오케스트레이션

Day 5: 트러블슈팅 멀티에이전트 시스템 (주간 프로젝트)

학습 목표
  • LangGraph로 전체 트러블슈팅 워크플로우를 구현한다
  • A2A Client로 Agent들에게 병렬 질문하는 Node를 만든다
  • 조건부 분기로 심각도별 대응을 제어한다
  • 설비를 멈추는 조치는 실행하지 않고 승인 대기로 남긴다

메인 워크플로우: LangGraph로 전체 흐름 제어

워크플로우 설계

[접수] → [병렬 조사] → [원인 분석] → [조치 결정]
                                          │
                              ┌────────────┼────────────┐
                              ▼            ▼            ▼
                          [긴급 대응]  [경고 대응]  [정상 보고]
                              │            │            │
                              └────────────┴────────────┘
                                          │
                                      [보고서 생성]
                                          │
                                         END

핵심 포인트

  • 병렬 조사 Node: 3개 Agent에게 동시에 질문 (asyncio.gather)
  • LangGraph 노드는 async def 로 두면 되고, 그래프는 ainvoke() 로 돌린다. 스레드풀로 이벤트 루프를 다시 여는 우회는 필요 없다
  • 원인 분석 Node: 수집된 정보를 교차 분석한다. 다만 판정 근거가 문자열 일치뿐이므로 결론을 「확인」이 아니라 「가설」로 쓴다
  • 조치 결정: 심각도에 따라 분기

긴급 대응이 곧 긴급 정지는 아니다

심각도가 critical이어도 이 워크플로가 설비를 멈추지는 않는다. 조치를 자동 실행할 것과 승인을 받을 것으로 갈라 State에 따로 담는다.

State 필드담기는 것
actions실제로 실행한 조치 (알림, 감시 강화, 정비 요청)
pending_approvals승인을 기다리는 조치 (긴급 정지, 라인 이관, 대피 안내)

보고서도 둘을 나눠 적고 대기 조치에는 「미실행」이라고 쓴다. 정지가 이미 걸린 것처럼 읽히는 보고서는 그 자체가 사고다. 실제 실행은 Step 1의 execute_action 이 맡고, 그쪽에서 같은 기준으로 한 번 더 막는다.

에디터 로딩 중...
힌트 보기
  • 3개 Agent가 먼저 실행되어야 워크플로우가 동작합니다
  • 병렬 조사 Node에서 asyncio.gather로 3개 요청을 동시에 보냅니다
  • 교차 분석은 문자열 일치로 판정하므로 결론을 가설로 쓰고 확인 방법을 함께 적습니다
  • 긴급 정지와 라인 이관은 actions가 아니라 pending_approvals에 담깁니다. 보고서에서 둘이 섞이지 않는지 확인하세요
정답 보기
에디터 로딩 중...
AI로 학습하기 — 꿀팁
LangGraph A2A 병렬 호출 노드 생성AI 학습 팁

AI에게 LangGraph Node 안에서 A2A Client로 3개 Agent에 병렬 질의하는 코드를 생성시켜 트러블슈팅 오케스트레이션을 완성하세요.

LangGraph StateGraph의 'gather_diagnosis' Node를 구현해줘. 이 Node에서 asyncio.gather로 설비Agent·품질Agent·생산Agent 3개에 A2A 요청을 동시에 보내고, 응답을 State의 agent_responses 필드에 저장하며, 하나라도 실패 시 부분 결과로 계속 진행하는 코드를 작성해줘.
이 팁이 도움이 됐나요?
용어