Monty - AI 생성 코드를 안전하게 실행하는 경량 Python 인터프리터

1 day ago 4

  • AI가 생성한 코드를 안전하게 실행하기 위해 설계된 Rust 기반의 경량 Python 인터프리터로, 컨테이너 샌드박스의 복잡성과 지연을 제거
  • 파일시스템·환경변수·네트워크 접근을 완전히 차단하고, 개발자가 지정한 외부 함수만 호출 가능
  • 1 마이크로초 미만의 시작 시간과 CPython과 유사한 실행 성능을 제공하며, Rust·Python·JavaScript에서 모두 호출 가능
  • 실행 상태를 바이트 단위로 스냅샷 저장 및 복원할 수 있어, 프로세스 간 중단·재개가 가능
  • Pydantic AI의 Code Mode 기능을 구동할 예정으로, LLM이 작성한 Python 코드를 안전하게 실행하는 핵심 구성요소로 사용

Monty 개요

  • Monty는 Rust로 작성된 실험적 Python 인터프리터로, AI가 생성한 코드를 안전하게 실행하기 위한 도구
    • 컨테이너 기반 샌드박스의 비용·지연·복잡성을 피하고, LLM이 작성한 Python 코드를 직접 실행 가능
    • 시작 시간은 수 마이크로초 단위, 일반적인 컨테이너의 수백 밀리초보다 훨씬 빠름
  • 가능한 기능
    • Python 코드의 일부 문법 실행 지원, 타입 힌트 기반 정적 타입체크 포함
    • 호스트 접근 완전 차단, 외부 함수 호출은 개발자가 명시적으로 허용한 함수만 가능
    • Rust·Python·JavaScript에서 호출 가능하며, 리소스 사용량 추적 및 제한 기능 내장
    • stdout/stderr 수집, 비동기 코드 실행, 스냅샷 저장 및 복원 기능 지원
  • 제한 사항
    • 표준 라이브러리는 sys, typing, asyncio, dataclasses(예정), json(예정)만 사용 가능
    • 클래스 정의 및 match 문은 아직 미지원
    • 서드파티 라이브러리는 지원 대상 아님
  • 설계 목적은 단 하나, 에이전트가 작성한 코드를 안전하게 실행하는 것

Pydantic AI 통합

  • Monty는 Pydantic AI의 Code Mode를 구동
    • LLM이 도구 호출 대신 Python 코드를 작성하고, Monty가 이를 안전하게 실행
    • 예시에서는 get_weather, get_population 같은 함수형 도구를 정의하고, LLM이 이를 호출하는 코드 작성

대안 기술 비교

  • Monty는 언어 완전성은 제한적이지만, 보안·속도·단순성에서 우수
    • 시작 지연 0.06ms, 무료, 설치 간단, 스냅샷 기능 지원
  • 다른 기술과의 비교 요약:
    • Docker: 완전한 CPython 환경, 보안 양호하나 시작 지연 195ms
    • Pyodide: WASM 기반, 보안 약하고 시작 지연 2800ms
    • starlark-rust: 매우 제한된 언어, 빠르지만 Python과 다름
    • sandboxing 서비스: 보안 강력하나 비용·지연·설정 복잡
    • YOLO Python(exec/subprocess) : 빠르지만 보안 전무
  • Monty는 파일 접근 제어, 리소스 제한, 스냅샷 기반 중단·재개 기능을 통해
    AI 코드 실행용 안전한 Python 환경을 제공

Read Entire Article