Monty
Monty 是用 Rust 编写的轻量安全 Python 沙箱,用于运行 AI 生成的代码,旨在避免容器化沙箱的延迟、复杂性和成本。
访问 pydantic/monty项目简介
Monty 是用 Rust 编写的轻量安全 Python 沙箱,用于运行 AI 生成的代码,旨在避免基于容器的沙箱在延迟、复杂性和成本上的开销。它有两种形态:OSS Monty 是以软件包形式安装的 MIT 许可 Python 3.14 沙箱;Full Monty 是商业服务器,通过 gRPC 流以服务形式运行同一沙箱。
核心功能
- 低延迟沙箱:从运行中的沙箱池获取新的 OSS Monty 沙箱耗时低于 1 毫秒,Full Monty 约为 2 毫秒,而沙箱服务约为 1500 毫秒。
- 沙箱内不存在文件系统、环境变量和网络;只能通过传入的函数和挂载访问宿主。
- 宿主函数和外部查找让沙箱代码调用宿主提供的工具,同时只看到其返回值。
- 快照可将整个沙箱状态在外部函数调用时或 REPL 片段结束时转储为字节,支持挂起与恢复。
- VM 强制执行最大内存和执行时间等严格资源限制,因此像 'x' * 10**12 这样的操作会在尝试分配前引发 MemoryError。
- 提供 Python、JavaScript/TypeScript 和 Rust 包;商业版 Full Monty 通过 gRPC 以容器镜像运行相同工作进程,并增加操作系统级隔离和横向扩展。
适用场景
- 安全运行 LLM 生成的 Python 程序,尤其适用于 agent 编写调用工具的短程序,而不是依次发起多个单独工具调用。
- 在 Pydantic AI 中支撑 Code Mode,为生成的代码提供安全执行环境。
- 通过从字节挂起和恢复沙箱状态,实现长时间运行的 REPL 会话和人工介入工作流。
- 无需为每个沙箱新建 VM 或容器,以较低成本和复杂度扩展大量沙箱工作进程。
快速开始
- Python:uv add pydantic-monty
- JavaScript 或 TypeScript:npm install @pydantic/monty
- Rust:cargo add monty
- 后续步骤可参考 Python、JavaScript 或 Rust 快速入门。
部署与要求
- OSS Monty 以 Python、JavaScript/TypeScript 或 Rust 软件包安装,并在调用它的应用程序本地执行环境中运行代码。
- Full Monty 是商业服务器,通过 gRPC 流以服务形式在远程运行同一沙箱,并以容器镜像形式提供,适合需要操作系统级隔离和横向扩展的较大规模部署。
采用前须知
- 许可证:MIT。在使用、修改或分发项目前,请确认其具体条款。