[데이터분석] 부트캠프 TIL

20260409 TIL

myun0506 2026. 4. 9. 21:12

1. Streamlit 고급 기능 & 대시보드 구축 (streamlit)

캐싱(Caching)으로 성능 최적화

  • @st.cache_data: 데이터(DataFrame, API 응답) 캐싱. 복사본을 반환하여 사용자 간 수정 간섭 없음. ttl로 갱신 주기, max_entries로 최대 캐시 수 제한 가능.
  • @st.cache_resource: DB 연결, ML 모델 등 수정 불필요한 리소스 캐싱. 원본 객체를 공유.
  • @st.fragment: 위젯 변경 시 전체 코드가 아닌 해당 함수 영역만 재실행 → 캐싱과 조합하면 이중 최적화.

프로젝트 구조 & DB 연동

  • utils/ 폴더에 공통 함수(DB 연결, 데이터 로드) 분리 → 수정 용이성, 협업 편의성 향상.
  • sqlite3.connect() + pd.read_sql()로 DB 데이터를 DataFrame으로 변환. DB 종류에 관계없이 사용법 동일.

머신러닝 모델 통합

  • 앱 내에서 모델 훈련 금지! 별도 스크립트에서 훈련 후 joblib.dump()로 저장 → 앱에서는 @st.cache_resource로 로드만 수행.
  • 전처리 파이프라인(StandardScaler, 인코더 등)도 반드시 함께 저장. Pipeline 객체면 하나만, 개별이면 각각 저장.

API 연동 & 챗봇 UI

  • API 키는 .streamlit/secrets.toml에 저장, st.secrets["KEY"]로 접근.
  • 챗봇: st.chat_input() + st.chat_message()로 UI 구성. Streamlit 재실행 특성상 대화 기록은 session_state에 반드시 저장.
  • Gemini AI 챗봇: UI용/AI 입력용 대화 기록 분리하여 멀티턴 대화 구현. st.write_stream()으로 실시간 스트리밍 응답.

2. Streamlit API 및 머신러닝 연결 (streamlit)

ML 모델 연동 실습

  • Iris 데이터셋으로 RandomForest 모델 훈련 → joblib로 저장 → Streamlit 앱에서 @st.cache_resource로 로드하여 슬라이더 입력 기반 실시간 예측 구현.

외부 API 연결 실습

  • YouTube API: requests로 검색 API 호출 → 채팅 UI 형태로 영상 결과 표시.
  • Gemini 챗봇: PydanticAI의 Agent와 run_stream_sync()로 멀티턴 스트림 챗봇 구현. 이벤트 루프 충돌 대비 최대 3회 재시도 로직 포함.

핵심 코드 패턴

  • st.secrets["KEY"]로 API 키 관리
  • @st.cache_resource로 모델 캐싱
  • st.chat_input() / st.chat_message()로 채팅 UI 구성

3. LLM 텍스트 분석 6 | AI 분석 에이전트 개발 — 최종 (LLM 텍스트분석)

배치 처리 & API 최적화 복습

  • 비동기 동시 호출(gather + Semaphore): 여러 API를 동시 호출하여 시간 절감 (토큰 비용 절감은 없음).
  • 배치 스키마 전략: 한 번의 API 호출로 여러 댓글 처리 → 입력 토큰 절감.
  • Rate Limit 대응: 지수 백오프(Exponential Backoff) + 중간 저장 & 체크포인트 복원.

단일 에이전트(Single Agent)

  • MCP 도구 2개(SQLite + Python 실행)를 부여하면, 테이블 조회 → 스키마 확인 → SQL 생성·실행 → 차트 생성까지 자동화 가능.
  • 한계: 컨텍스트 윈도우 제한으로 대량·복잡한 분석 시 응답 품질 저하.

멀티 에이전트(Multi-Agent) 시스템

  • 단일 에이전트를 5단계 파이프라인으로 연결: ① 데이터 이해 → ② 과제 정의 → ③ 코드 생성 → ④ 코드 검토·실행 → ⑤ 보고서 생성.
  • Step 3·4는 각 과제가 독립적이므로 병렬 처리 가능.
  • 데이터 형식(CSV, SQLite 등)에 무관하게 동작.

에이전트 개발 우선순위

  1. 응답 스키마(Output Schema) 설계 ← 가장 중요!
  2. 시스템 프롬프트 설계
  3. 일반 프롬프트 설계

모델 선택 전략: Gemini(이미지 특화) / GPT(범용) / Claude(정확성). 종합 인사이트 도출에는 가장 성능 좋은 모델 + Thinking Level High 권장.

현업 스타일 프로젝트 구조: config/(프롬프트·설정 yaml), schema/(응답 스키마), output/(코드·차트·중간결과)로 파일 분리 → 가독성, 수정 용이성, 버전 관리 편의성 확보.

'[데이터분석] 부트캠프 TIL' 카테고리의 다른 글

20260413 TIL  (0) 2026.04.13
20260410 TIL  (0) 2026.04.10
20260408 TIL  (0) 2026.04.08
20260407 TIL  (0) 2026.04.07
20260406 TIL  (1) 2026.04.06