셀프호스팅 가능한 AI 데이터 애널리스트 공개 — 파일 업로드나 DB 연결만으로 4개 에이전트가 분석, Ollama·OpenAI·Anthropic·DeepSeek 지원
원문 제목 — Built a self-hostable AI data analyst — upload a file or connect a DB, 4 agents analyze it, works with Ollama, OpenAI, Anthropic, or DeepSeek
📄 전문 번역
데이터셋을 빠르게 탐색해야 할 때마다 데이터 정리 보일러플레이트, 인코딩 오류, 어떤 차트가 실제로 의미 있는지 판단하는 일이라는 같은 벽에 부딪혔다고 개발자는 설명한다. 기계적인 작업은 흥미롭지 않을 뿐 방해 요소일 뿐이라는 생각에 이를 대신 처리하는 도구를 직접 만들었다고 한다.
파일(CSV, Excel, Parquet, JSON)을 연결하거나 데이터베이스(Postgres, MySQL, SQLite, DuckDB)를 연결하면 네 개의 에이전트가 순차적으로 실행된다. 하나는 데이터를 정리하고, 하나는 실제 통계에 기반한 가설을 생성하며, 하나는 가설에 점수를 매기고 토론하고, 하나는 Plotly 차트를 만든다. 이후 일상 언어로 후속 질문을 할 수 있다.
Ollama(완전 로컬, API 키 불필요), OpenAI, Anthropic, DeepSeek 등을 지원하며 런타임에서 전환 가능하고 재시작이 필요 없다.
가장 많은 시간을 들인 부분은 NLQ 에이전트가 Python 코드를 작성해 실행하기 때문에 이를 적절히 샌드박스 처리해야 했다는 점이다. 코드는 RestrictedPython을 거쳐 무엇이든 실행되기 전에 AST 검사를 수행하고, 이후 os와 open 함수, 네트워크가 제거된 축소된 컨텍스트에서 실행된다. 모델은 pandas와 Plotly 외에는 아무것도 사용할 수 없다.
한 줄의 설치 명령어로 시작할 수 있으며 소스 코드는 GitHub 저장소 laban254/insight-orchestra에 공개되어 있다.
💬 주요 댓글 번역 (2)
🔍 루키 분석
데이터 탐색 과정의 반복적인 기계 작업을 자동화하기 위해 개발자가 만든 셀프호스팅 AI 데이터 분석 도구로, 정리·가설 생성·검증 토론·시각화를 담당하는 네 개의 에이전트가 순차적으로 작동한다. Ollama를 지원해 완전 로컬 실행이 가능하며 OpenAI, Anthropic, DeepSeek 간 런타임 전환도 재시작 없이 가능하다. 모델이 작성한 Python 코드를 실행하는 NLQ 에이전트의 보안을 위해 RestrictedPython과 AST 검사 기반 샌드박스를 적용한 점이 댓글에서 주요 논의가 되었고, 프로세스 수준 격리로 보완하자는 의견도 제기되었다.
— 루키 · glm-5.3-flash:cloud
샌드박싱 접근 방식이 눈길을 끌었다. LLM이 코드를 작성하고 실행하게 하는 많은 도구가 이 단계를 완전히 건너뛰다가 문제가 터지고 나서야 놀라곤 한다. 실행 전 AST 검사는 올바른 선택이다. NLQ 에이전트가 AST 검사는 통과하지만 여전히 시간 초과되거나 메모리를 모두 잠식하는 코드를 작성할 때는 어떻게 처리하는지 궁금하다.
좋은 프로젝트다. 정리, 가설, 차트를 담당하는 별도 에이전트로 이뤄진 파이프라인은 합리적인 분리다. 유사한 도구(일상 언어 요청을 차트 설정으로 변환하는 MCP 서버)를 만들며 얻은 몇 가지 의견이 있다. 샌드박스와 관련해 RestrictedPython 공식 문서는 이것이 샌드박스 시스템이나 보안 환경이 아니라고 명시하며, 이는 한 계층일 뿐 경계가 아니라는 의미다. NLQ 에이전트가 모델이 작성한 코드를 실행하고 데이터베이스 연결이 같은 프로세스에 존재할 수 있으므로, 네트워크 접근이 차단된 별도 서브프로세스나 컨테이너에서 읽기 전용 자격 증명으로 실행하는 프로세스 수준 격리를 아래에 추가할 것을 권한다.