Summary

LangGraph를 활용한 완전 자동화된 데이터 분석 Agent. 사용자의 자연어 요청 → Python 코드 자동 생성 → 실행 → 오류 감지 → 자동 수정의 4단계 반복 루프로 사용자가 코드를 작성하지 않아도 데이터 분석이 가능하도록 구현. Agentic AI의 실무 사례.

Key Claims

  • 완전 자동화 파이프라인 — 사용자가 분석 목표만 말하면 나머지는 자동 처리
  • 자동 코드 생성 — LLM이 요청 의도를 파악하고 Python 코드 작성
  • 샌드박스 실행 — 안전한 격리 환경에서 코드 실행
  • 오류 자동 감지 & 수정 — 실행 실패 시 스택 트레이스 분석 후 재작성
  • 다중 반복 루프 — 정상 완료까지 자동으로 재시도

Key Concepts Introduced

  1. Agentic Loop (에이전트 루프)

    자연어 입력
      ↓
    LLM이 의도 파악 → 코드 생성
      ↓
    샌드박스에서 실행
      ↓
    성공? → 결과 반환
    실패? → 오류 메시지 수집
      ↓
    LLM에게 오류 피드백 → 코드 재작성
      ↓
    (반복)
    
  2. State Machine (상태 기계)

    • LangGraph의 상태 정의
    • 노드: {CodeGeneration, Execution, ErrorAnalysis, Conclusion}
    • 엣지: 성공/실패에 따른 다음 상태 결정
  3. Prompt Engineering for Code

    • “다음 요청을 Python으로 구현해줘: {request}”
    • 라이브러리 명시 (pandas, numpy, matplotlib)
    • 오류 시: “다음 오류가 발생했어: {error}. 수정해줘”
  4. Sandboxing

    • 제한된 Python 실행 환경
    • 위험 함수 차단 (os.system, exec 등)
    • 타임아웃 설정 (코드 무한 루프 방지)
  5. Error Recovery Strategies

    • 문법 오류 → 코드 재작성
    • 라이브러리 미설치 → 대체 라이브러리 제안
    • 데이터 타입 오류 → 타입 변환 추가
    • 범위 오류 → 인덱스 조정

구현 아키텍처

StateGraph 정의

from langgraph.graph import StateGraph
 
graph = StateGraph(DataAnalysisState)
 
graph.add_node("generate", generate_code)
graph.add_node("execute", execute_code)
graph.add_node("analyze_error", analyze_error)
graph.add_node("conclude", conclude)
 
graph.add_edge("generate", "execute")
graph.add_conditional_edges(
    "execute",
    lambda state: "conclude" if state.success else "analyze_error"
)
graph.add_edge("analyze_error", "generate")  # 피드백과 함께 재생성
graph.add_edge("conclude", END)
 
agent = graph.compile()

대사 예시

사용자: “2024년 월별 매출 트렌드를 그래프로 보여줘”

Agent 실행:

1️⃣ 코드 생성

import pandas as pd
import matplotlib.pyplot as plt
 
# 데이터 로드 (가정)
 
> [!caution] 검토 필요
> 
> 원본 자료 재방문 권장 (최초 수집: 2025-05-23)
df = pd.read_csv('sales.csv', parse_dates=['date'])
df['month'] = df['date'].dt.to_period('M')
monthly_sales = df.groupby('month')['sales'].sum()
 
plt.figure(figsize=(12, 6))
plt.plot(monthly_sales.index.astype(str), monthly_sales.values)
plt.title('2024년 월별 매출')
plt.xlabel('월')
plt.ylabel('매출')
plt.show()

2️⃣ 실행 → 오류 감지

FileNotFoundError: 'sales.csv' not found

3️⃣ 오류 분석 & 재작성

Agent: "파일이 없습니다. 샘플 데이터를 생성한 후 분석하겠습니다."
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
 
# 샘플 데이터 생성
dates = pd.date_range('2024-01-01', '2024-12-31', freq='D')
sales = np.random.randint(10000, 100000, len(dates))
df = pd.DataFrame({'date': dates, 'sales': sales})
 
# 월별 집계
df['month'] = df['date'].dt.to_period('M')
monthly_sales = df.groupby('month')['sales'].sum()
 
# 시각화
plt.figure(figsize=(12, 6))
plt.plot(monthly_sales.index.astype(str), monthly_sales.values, marker='o')
plt.title('2024년 월별 매출')
plt.xlabel('월')
plt.ylabel('매출')
plt.xticks(rotation=45)
plt.tight_layout()
plt.show()

4️⃣ 성공 & 결과 반환

✓ 실행 완료
📊 그래프 생성됨

실무 이점

이점설명
비기술자 권능화코드 작성 불필요
개발 속도분석 아이디어 → 결과 즉시
오류 감소자동 검증 및 수정
재사용성Agent가 자동으로 패턴 학습
감사 추적생성된 모든 코드와 실행 기록

한계 & 개선 방향

현재 한계:

  • 매우 복잡한 분석 로직 (수백 줄)은 어려움
  • 도메인 특화 라이브러리 미지원
  • 데이터 보안 이슈 (민감 데이터 처리)

개선 방향:

  • Few-shot examples로 특정 패턴 학습
  • Custom tools 등록 (자체 함수/라이브러리)
  • 데이터 마스킹 & 암호화

관련 개념

  • Agentic AI — 에이전트 루프의 이론적 기초
  • LangGraph — 상태 기반 워크플로우 프레임워크
  • ToolsRetriever — 도구 기반 자동화
  • — 오류 자동 복구 패턴

관련 소스: data-to-kg (파이프라인), self-correcting-text2cypher-agent (자동 수정 패턴)

인정: YouTube 공원나연 채널 (2025-05-23)