콘텐츠로 이동

9.6. AI로 데이터 분석하기

데이터 분석 워크플로우는 보통 여러 도구를 오가며 이루어집니다. CSV를 보기 위한 스프레드시트, 스크립트를 작성하기 위한 코드 편집기, 실행을 위한 터미널, 결과 정리를 위한 또 다른 편집기가 필요합니다. Backend.AI GO의 Cowork 메뉴는 이 모든 과정을 하나의 자율 워크플로우로 통합합니다. 분석 목표를 설명하면, 에이전트가 데이터를 읽고, 계산을 수행하고, 보고서를 작성합니다. 모든 작업은 로컬 머신에서 이루어집니다.

이 가이드에서는 데이터 분석을 위한 Cowork 설정 방법과 CSV 파일, JSON 데이터, Python 기반 처리를 사용하는 구체적인 예시를 제공합니다.

왜 Cowork으로 데이터 분석을 해야 할까요?

기존 워크플로우 Cowork 워크플로우
스프레드시트에서 CSV를 열고 수동으로 수식 작성 에이전트가 CSV를 파싱하고 자율적으로 계산 수행
별도의 도구에서 Python 스크립트 작성 및 실행 에이전트가 샌드박스 환경에서 Python을 작성하고 실행
결과를 수동으로 보고서에 복사 에이전트가 최종 보고서를 파일 시스템에 직접 저장
새로운 데이터셋마다 반복 Global Instructions로 일관된 형식 재사용

핵심 장점은 프라이버시입니다. 데이터가 로컬 머신을 벗어나지 않습니다. 분석은 로컬 모델과 로컬 도구 실행을 통해 완전히 이루어지므로 클라우드 업로드가 필요하지 않습니다.

사전 준비

시작하기 전에 다음을 확인하세요:

  • Backend.AI GO가 설치되어 실행 중인 상태
  • 최소 하나의 모델이 로드된 상태 — 최상의 분석 품질을 위해 7B+ 파라미터 모델 권장
  • 로컬 파일 시스템에 데이터 파일이 있는 상태 (CSV, JSON, TXT 또는 기타 텍스트 형식)

빌트인 데이터 분석 도구

Cowork 메뉴는 데이터 분석 워크플로우를 위한 여러 빌트인 도구를 제공합니다. 플러그인이나 확장 기능이 필요하지 않습니다.

도구 설명 일반적인 사용
csv_reader 구분자, 열 선택, 행 제한을 설정하여 CSV 파일 파싱 판매 데이터 로드, 열 필터링, 구조 미리 보기
json_query JSONPath 표현식으로 구조화된 JSON 데이터 조회 API 내보내기에서 필드 추출, 중첩 객체 필터링
run_python 샌드박스 환경에서 Python 스크립트 실행 pandas 분석, 통계, 데이터 처리
read_file 텍스트 파일 읽기 (CSV, JSON, TXT, 로그) 원시 데이터 파일 로드
write_file 결과, 보고서, 처리된 데이터 저장 분석 출력 내보내기
search_content 정규 표현식 패턴으로 파일 전체 검색 로그 파일에서 특정 항목 찾기
calculator 수학 표현식 계산 빠른 단순 계산

데이터 분석 설정하기

1단계: 폴더 접근 권한 부여

에이전트가 데이터 파일을 읽고 (선택적으로) 결과를 쓰기 위한 권한이 필요합니다.

  1. Cowork 페이지 하단의 작업 입력 영역에서 폴더 권한 토글을 클릭합니다.

  2. 폴더 추가를 클릭하고 데이터 파일이 있는 폴더를 선택합니다.

  3. 권한 수준을 선택합니다:

권한 수준

  • 읽기 전용: 에이전트가 파일을 읽을 수 있지만 생성하거나 수정할 수 없습니다. 에이전트가 변경 없이 탐색하고 분석하기를 원할 때 사용하세요.
  • 읽기 및 쓰기: 에이전트가 기존 파일을 읽고 새 파일을 생성하거나 수정할 수 있습니다. 분석 결과, 생성된 보고서 또는 처리된 데이터셋을 저장할 때 사용하세요.
  • 전체 접근: 에이전트가 파일을 삭제하고 이동할 수도 있습니다. 주의해서 사용하세요.

일반적인 패턴은 원시 데이터 폴더를 읽기 전용으로, 별도의 results/ 폴더를 읽기 및 쓰기로 추가하는 것입니다.

2단계: Global Instructions 설정 (선택)

Global Instructions를 설정하면 모든 Cowork 작업에 적용되는 지속적인 기본 설정을 지정할 수 있습니다.

  1. 헤더의 톱니바퀴 아이콘을 클릭하여 설정 드로어를 엽니다.

  2. Instructions 탭으로 이동합니다.

  3. 다음과 같은 분석 기본 설정을 입력합니다:

    데이터 조작에는 pandas를 사용한 Python을 사용하세요.
    모든 숫자는 소수점 2자리로 표시하세요.
    숫자 열에 대해 항상 통계 요약(개수, 평균, 최소, 최대, 표준편차)을 포함하세요.
    출력 파일은 'results' 하위 폴더에 저장하세요.
    표 형식 출력에는 Markdown 테이블을 사용하세요.
    
  4. 지침을 활성화하고 드로어를 닫습니다.

이 지침은 변경할 때까지 이후 모든 Cowork 작업에 적용됩니다.

단계별 예시: 판매 데이터 분석

이 예시는 CSV 파일을 사용한 완전한 데이터 분석 워크플로우를 보여줍니다.

시나리오: date, product_category, region, units_sold, revenue 열을 포함한 sales_2024.csv 파일이 있습니다. 상위 실적 카테고리를 파악하고 월별 성장률을 계산하려고 합니다.

1단계: Cowork 열기

사이드바에서 Cowork 아이콘을 클릭하여 Cowork 인터페이스를 엽니다.

2단계: 폴더 권한 설정

  1. 폴더 권한 토글을 클릭합니다.

  2. sales_2024.csv가 있는 폴더를 읽기 전용 권한으로 추가합니다.

  3. 출력을 위한 results/ 폴더를 읽기 및 쓰기 권한으로 추가하거나 생성합니다.

3단계: 분석 작업 입력

페이지 하단의 작업 입력란에 원하는 내용을 설명합니다:

내 데이터 폴더의 sales_2024.csv 파일을 분석해 주세요. 제품 카테고리별 총 매출 요약, 상위 5개 월 파악, 월별 성장률 계산을 수행해 주세요. 분석 결과를 results 폴더에 sales_analysis.md로 저장해 주세요.

Enter를 누르거나 작업 시작을 클릭하여 시작합니다.

4단계: 에이전트 작업 관찰

에이전트가 작업을 단계별로 분해하고 자율적으로 실행합니다. 스텝 뷰어에서 진행 상황을 확인할 수 있습니다:

  1. 구조 파악 — 에이전트가 csv_reader를 사용하여 파일의 열, 데이터 유형, 샘플 행을 검사하여 스키마를 파악합니다.

  2. 데이터 로드read_file을 사용하여 전체 데이터셋을 로드합니다.

  3. 분석 실행 — 에이전트가 run_python으로 Python 스크립트를 작성하고 실행합니다:

    • 날짜를 파싱하고 월별, 카테고리별로 데이터 그룹화
    • 카테고리별 총 매출 계산
    • 매출 기준 월별 순위 결정
    • 월별 성장률 계산
  4. 보고서 작성 — 에이전트가 결과를 Markdown 문서로 형식화하고 write_file을 사용하여 sales_analysis.md를 저장합니다.

  5. 요약 제시 — 주요 발견 사항이 담긴 최종 요약이 대화에 표시됩니다.

도구 승인

에이전트가 run_python이나 write_file을 처음 사용할 때 승인 요청이 표시될 수 있습니다. 한 번만 승인하거나 세션 전체에 대해 승인하도록 선택할 수 있습니다. 허용된 폴더 내의 읽기 작업은 기본적으로 자동 승인됩니다.

5단계: 작업 중 에이전트 안내

에이전트가 실행 중일 때 분석을 조정하고 싶다면 Steering 입력을 사용하세요:

  • "카테고리별로 지역별 매출도 세분화해 주세요"
  • "월별 성장률을 ASCII 차트로 시각화해 주세요"
  • "Electronics와 Software 카테고리에만 집중해 주세요"

에이전트가 처음부터 다시 시작하지 않고 안내를 반영합니다.

6단계: 후속 작업

초기 분석이 완료된 후, 동일한 세션에서 계속 작업할 수 있습니다:

matplotlib을 사용하여 카테고리별 매출 막대 차트를 생성하고 results 폴더에 revenue_by_category.png로 저장해 주세요.

에이전트는 이전 분석의 컨텍스트를 유지하며 중단된 지점에서 계속합니다.

예시: JSON 데이터 분석

API 내보내기나 설정 파일과 같은 구조화된 JSON 데이터의 경우, json_query를 사용하여 처리 전에 특정 필드를 추출합니다.

시나리오: 중첩된 구조를 가진 api_export.json 파일이 있고 특정 지표를 추출하여 분석하려고 합니다.

  1. api_export.json이 있는 폴더를 읽기 전용 권한으로 추가합니다.

  2. 다음과 같은 작업을 입력합니다:

    api_export.json을 로드해 주세요. JSONPath $.data[*].metrics.revenuejson_query를 사용하여 모든 revenue 값을 추출해 주세요. 총합, 평균, revenue 기준 상위 10개 항목을 계산하고 결과를 revenue_report.md로 저장해 주세요.

에이전트가 다음을 수행합니다:

  1. json_query로 배열의 각 레코드에서 revenue 필드 추출
  2. run_python으로 추출된 값에 대한 통계 계산
  3. write_file로 형식화된 보고서 저장

JSONPath 문법

json_query는 표준 JSONPath 표현식을 사용합니다:

  • $.field — 최상위 필드
  • $.array[*].field — 배열의 모든 요소에서 필드 추출
  • $.array[?(@.status == "active")] — 조건으로 필터링
  • $..field — 모든 깊이에서 필드를 재귀적으로 검색

Python 실행 상세 정보

run_python 도구는 샌드박스 환경에서 Python 스크립트를 실행합니다. 제약 사항을 이해하면 효과적인 분석 작업을 작성하는 데 도움이 됩니다.

사용 가능한 라이브러리

기본적으로 다음 라이브러리를 사용할 수 있습니다:

  • 표준 라이브러리: math, statistics, json, csv, collections, itertools, functools, datetime, re, io, string, decimal, fractions, random
  • 데이터 분석: pandas, numpy
  • 시각화: matplotlib

샌드박싱 제한

보안을 위해 Python import 훅이 최상위 레벨에서 위험한 모듈을 차단합니다. 다음 모듈이 차단됩니다:

  • os, subprocess, shutil — 명령 실행 및 파일 시스템 조작
  • socket, http, urllib, ftplib, smtplib, telnetlib — 네트워크 접근
  • pickle, shelve, marshal — 안전하지 않은 역직렬화
  • ctypes — 네이티브 코드 실행
  • multiprocessing, signal, resource — 프로세스 및 시스템 관리
  • importlib, pkgutil, zipimport — 임포트 시스템 조작
  • tempfile, glob, pathlib — 파일 시스템 접근
  • code, codeop, compileall — 동적 코드 컴파일
  • xmlrpc — 원격 프로시저 호출

계산에 안전한 모듈(math, json, csv, re, datetime, random, collections, itertools, typing 등)은 사용 가능합니다. sys, io, threading 모듈은 많은 표준 라이브러리 모듈이 내부적으로 필요로 하기 때문에 사용 가능합니다.

이 보호는 import 훅을 통한 애플리케이션 수준의 방어이며 커널 수준 샌드박싱이 아닙니다. 실수로 또는 에이전트가 생성한 위험한 코드에 대한 강력한 기본 방어를 제공합니다.

스크립트에서 파일 I/O가 필요한 경우, 에이전트에게 read_filewrite_file 도구를 사용하여 데이터를 로드하고 저장한 다음 콘텐츠를 변수로 Python 스크립트에 전달하도록 요청하세요.

타임아웃

스크립트에는 설정 가능한 타임아웃이 있습니다 (기본값: 30초, 최대: 300초). 대용량 데이터셋의 경우, 에이전트에게 데이터를 청크로 처리하도록 요청하거나 작업 설명에서 더 높은 타임아웃을 요청하세요:

이 데이터셋은 크기가 크므로 120초 타임아웃으로 분석을 실행해 주세요.

결과 캡처

결과는 다음을 통해 캡처됩니다:

  • print() 출력 — stdout으로 출력된 모든 내용이 반환됩니다
  • result 변수 — 최종 값을 result라는 이름의 변수에 할당하면 출력에 포함됩니다

데이터 분석 팁

  • 구조 개요부터 시작하세요. 전체 분석을 시작하기 전에 에이전트에게 csv_reader를 먼저 사용하여 열 이름, 데이터 유형, 샘플 행을 표시하도록 요청하세요. 인코딩 문제나 예상치 못한 형식을 조기에 발견하는 데 도움이 됩니다.

  • 대용량 JSON 파일은 미리 필터링하세요. 대용량 JSON 데이터셋의 경우, json_query를 사용하여 필요한 필드만 추출한 후 run_python에 데이터를 전달하세요. 메모리 사용량이 줄어들고 분석 속도가 빨라집니다.

  • 폴더별 지침을 사용하세요. 스키마를 설명하는 지침을 데이터 폴더에 첨부하세요. 열의 의미, 단위, 알려진 데이터 품질 문제를 포함하면 에이전트가 자동으로 이 컨텍스트를 적용합니다.

  • 반복적으로 작업을 연결하세요. 탐색부터 시작하여 분석, 보고서 순으로 진행하세요. 각 단계는 컨텍스트를 유지하며 이전 단계를 기반으로 합니다:

    1. "sales_2024.csv의 구조와 내용을 설명해 주세요"
    2. "이제 카테고리별 매출 추세를 분석해 주세요"
    3. "분석 결과로 형식화된 보고서를 생성해 주세요"
  • 원시 데이터에는 읽기 전용을 사용하세요. 실수로 수정되는 것을 방지하기 위해 원본 데이터 파일에 읽기 전용 권한을 부여하세요. 출력을 위해서는 별도의 폴더에 읽기 및 쓰기 권한을 사용하세요.

  • 프롬프트에 열 컨텍스트를 포함하세요. 에이전트가 열의 의미를 모르는 경우 알려주세요: "rev 열은 USD 기준 월별 매출을 나타냅니다. cat_id 열은 categories.json에 정의된 제품 카테고리에 매핑됩니다."

문제 해결

문제 해결 방법
csv_reader가 인코딩 오류를 보고 작업에서 인코딩을 지정하세요: "이 CSV는 Latin-1 인코딩을 사용합니다". 일반적인 인코딩: utf-8, latin-1, cp1252.
run_python이 타임아웃 분석을 더 작은 단계로 분리하거나 더 높은 타임아웃을 요청하세요. 대용량 파일의 경우 에이전트에게 먼저 데이터를 샘플링하도록 요청하세요.
json_query가 결과를 반환하지 않음 JSONPath 표현식을 확인하세요. 에이전트에게 먼저 $ (루트)로 json_query를 실행하여 최상위 구조를 보여달라고 한 다음, 경로를 세분화하세요.
에이전트가 잘못된 파일을 수정 소스 데이터에는 읽기 전용 권한을 사용하세요. 출력 폴더에만 읽기 및 쓰기 권한을 부여하세요.
분석 결과가 일관성 없음 Global Instructions에 명시적인 형식 지침을 추가하세요 (예: "항상 소수점 2자리로 반올림하세요", "ISO 8601 날짜 형식을 사용하세요").
run_python이 임포트 오류로 실패 필요한 라이브러리가 없을 수 있습니다. 에이전트에게 표준 라이브러리 대안을 사용하도록 요청하거나, Python 임포트 대신 csv_readerjson_query를 직접 사용하세요.

관련 페이지