Giới thiệu
Monty (của Pydantic) là một trình thông dịch Python thu nhỏ (subset) được viết bằng Rust, được thiết kế đặc biệt để giải quyết bài toán an toàn khi chạy code do AI (LLM) sinh ra. Bình thường, để chạy code không tin cậy, developer phải dùng Docker container (chậm, nặng) hoặc WebAssembly. Monty giải quyết vấn đề này bằng cách cung cấp một môi trường sandbox ngay ở cấp độ thông dịch viên, khởi động cực nhanh (micro-seconds) và mặc định chặn mọi truy cập nguy hiểm (file hệ thống, mạng). Đây là công cụ lý tưởng cho các AI Agent cần khả năng ‘Code Interpreter’ mạnh mẽ và an toàn.
Tính năng chính
- Sandboxing mặc định: Ngăn chặn hoàn toàn việc truy cập filesystem, biến môi trường và mạng trừ khi được cấp quyền.
- Hiệu năng cực cao: Thời gian khởi động tính bằng microsecond, nhanh hơn rất nhiều so với việc spin-up một Docker container.
- Viết bằng Rust: Đảm bảo an toàn bộ nhớ và hiệu suất thực thi gần tương đương CPython.
- Hỗ trợ Host Functions: Cho phép định nghĩa các hàm an toàn từ phía ứng dụng chính (Host) để code trong sandbox gọi ra.
- Snapshotting: Hỗ trợ lưu trạng thái bộ nhớ để tạm dừng và tiếp tục thực thi sau này.
Hướng dẫn cài đặt Local (macOS)
Để sử dụng Monty trên macOS, bạn có thể cài đặt trực tiếp qua pip hoặc uv (khuyến nghị dùng uv để quản lý package tốt hơn).
- Cài đặt Python 3.9+ (nếu chưa có):
brew install python - Cài đặt thư viện
pydantic-monty:pip install pydantic-monty # Hoặc nếu dùng uv: uv add pydantic-monty - Kiểm tra cài đặt:
python -c "import pydantic_monty; print('Monty installed successfully')"
Hướng dẫn Docker
Mặc dù Monty sinh ra để thay thế Docker trong việc sandbox code, nhưng bạn vẫn có thể cần đóng gói ứng dụng AI Agent của mình (có chứa Monty) bằng Docker. Dưới đây là Dockerfile cơ bản:
# Sử dụng Python slim image để tối ưu dung lượng
FROM python:3.11-slim
# Thiết lập thư mục làm việc
WORKDIR /app
# Cài đặt dependencies
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
# Đảm bảo pydantic-monty có trong requirements.txt
# Copy mã nguồn ứng dụng
COPY . .
# Chạy ứng dụng
CMD ["python", "main.py"]
Build và Run:
# Build image
docker build -t my-ai-agent .
# Run container
docker run my-ai-agent
Ví dụ Code (Example Code)
Dưới đây là ví dụ minh họa cách sử dụng Monty để chạy một đoạn code Python không tin cậy một cách an toàn. (Lưu ý: API có thể thay đổi do dự án đang phát triển nhanh).
import asyncio
# Giả định import, tên module thực tế có thể là pydantic_monty
import pydantic_monty
async def run_safe_code():
# Code được sinh ra bởi LLM (ví dụ: tính toán đơn giản)
# Code này KHÔNG thể truy cập file hay mạng của máy bạn
unsafe_code = """
result = 0
for i in range(10):
result += i
print(f'Kết quả tính toán an toàn: {result}')
"""
print("--- Bắt đầu thực thi trong Monty Sandbox ---")
# Khởi tạo instance Monty với code cần chạy
monty_instance = pydantic_monty.Monty(unsafe_code)
# Thực thi code (API mẫu)
# Monty sẽ chặn nếu code cố gắng import os hay truy cập disk
await pydantic_monty.run_monty_async(monty_instance)
print("--- Kết thúc thực thi ---")
if __name__ == "__main__":
asyncio.run(run_safe_code())
Sources
- github.com
- pydantic.dev
- github.com
- simonwillison.net
- ycombinator.com
- substack.com
- daily.dev
- pydevtools.com
- github.com
- github.com
- github.com
- github.com
Github Page
https://github.com/pydantic/monty