Summary
LangGraph를 활용한 완전 자동화된 데이터 분석 Agent. 사용자의 자연어 요청 → Python 코드 자동 생성 → 실행 → 오류 감지 → 자동 수정의 4단계 반복 루프로 사용자가 코드를 작성하지 않아도 데이터 분석이 가능하도록 구현. Agentic AI의 실무 사례.
Key Claims
- 완전 자동화 파이프라인 — 사용자가 분석 목표만 말하면 나머지는 자동 처리
- 자동 코드 생성 — LLM이 요청 의도를 파악하고 Python 코드 작성
- 샌드박스 실행 — 안전한 격리 환경에서 코드 실행
- 오류 자동 감지 & 수정 — 실행 실패 시 스택 트레이스 분석 후 재작성
- 다중 반복 루프 — 정상 완료까지 자동으로 재시도
Key Concepts Introduced
-
Agentic Loop (에이전트 루프)
자연어 입력 ↓ LLM이 의도 파악 → 코드 생성 ↓ 샌드박스에서 실행 ↓ 성공? → 결과 반환 실패? → 오류 메시지 수집 ↓ LLM에게 오류 피드백 → 코드 재작성 ↓ (반복) -
State Machine (상태 기계)
- LangGraph의 상태 정의
- 노드: {CodeGeneration, Execution, ErrorAnalysis, Conclusion}
- 엣지: 성공/실패에 따른 다음 상태 결정
-
Prompt Engineering for Code
- “다음 요청을 Python으로 구현해줘: {request}”
- 라이브러리 명시 (pandas, numpy, matplotlib)
- 오류 시: “다음 오류가 발생했어: {error}. 수정해줘”
-
Sandboxing
- 제한된 Python 실행 환경
- 위험 함수 차단 (os.system, exec 등)
- 타임아웃 설정 (코드 무한 루프 방지)
-
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)