Monty
Pydantic 团队用 Rust 打造的安全 Python 沙箱,专为运行 AI 生成的代码设计。它省去容器沙箱的延迟与开销,从预热池中取出实例耗时不到 1ms,并提供 Python、JavaScript、Rust 三种绑定。
爱鲜报评分
0 人评分
8.8k
星数
否
中文
Rust
主语言
是
活跃
71
贡献者
人工分析
EDITORIAL推荐理由
Monty 把「执行 LLM 生成的 Python 代码」这件事做成了轻量、可嵌入的组件:Rust 实现带来毫秒级启动,沙箱内没有文件系统、环境变量和网络,只能通过宿主显式传入的函数与挂载与外界交互,安全边界清晰。背靠 Pydantic 生态,与 Pydantic AI 的 Code Mode 天然配合,适合正在构建 Agent 工具调用或代码解释器能力的团队评估。
适用场景
- AI Agent 执行模型生成的 Python 代码
- 代码解释器 / Code Mode 工具链
- 多租户平台中受限脚本执行
- 需要低延迟沙箱的在线评测或教学环境
- 在 Python、Node.js、Rust 服务中嵌入安全执行层
优点
- Rust 实现,从预热池取出实例耗时低于 1ms,远快于容器方案
- 默认无文件系统、环境变量与网络,仅通过宿主注入的函数和挂载通信
- 同时提供 Python、JavaScript/TypeScript、Rust 三种官方绑定
- MIT 协议开源,另有商业版 Full Monty 提供 WebSocket 服务形态
- 由 Pydantic 团队维护,与 Pydantic AI 生态集成顺畅
缺点
- 只支持 Python 子集,并非完整 CPython 运行时,部分库与语法不可用
- 沙箱能力依赖宿主显式注入函数,接入时需要自行设计接口边界
- 文档以英文为主,中文资料较少
- 商业服务 Full Monty 需单独授权,开源版不含服务端能力
Monty 是什么
Monty 是 Pydantic 团队开源的安全 Python 沙箱,用 Rust 编写,目标场景很明确:安全地运行 AI 生成的代码。
传统做法是把 LLM 生成的代码丢进 Docker 或远程沙箱服务里执行,代价是启动慢、依赖重、成本高。Monty 的思路是去掉容器层,把沙箱做成一个可嵌入的库:
- 从预热池中取出一个沙箱实例,耗时不到 1ms(商业版 Full Monty 约 2ms),而常见沙箱服务约 1500ms。
- 沙箱内部没有文件系统、没有环境变量、没有网络,只能通过宿主显式传入的函数和挂载点与外界交互。
项目分为两部分:
- OSS Monty:MIT 协议,以包的形式安装的 Python 3.14 沙箱。
- Full Monty:商业服务端,把同一套沙箱以 WebSocket 服务的形式对外提供。
安装与接入
官方提供三种语言的绑定,按技术栈选择即可:
uv add pydantic-monty # Python
npm install @pydantic/monty # JavaScript / TypeScript
cargo add monty # Rust
使用方式示意
核心用法是:宿主把一段代码字符串交给沙箱执行,同时注入外部函数作为「能力」。沙箱只能看到这些函数的返回值,看不到宿主环境。
from pydantic_monty import Monty
code = """
kcal = nutrition('chocolate bar')['kcal']
hours = kcal * 4184 / (bulb_watts * 3600)
print(f'a chocolate bar powers a {bulb_watts} W bulb for {hours:.1f} hours')
"""
with Monty() as pool:
with pool.checkout() as session:
session.feed_run(
code,
inputs={'bulb_watts': 10},
external_lookup={'nutrition': lambda food: {'kcal': 230}},
)
上例中 nutrition 实际运行在宿主侧,沙箱只拿到它的返回值,从而把「能力」与「执行」隔离开。
关键概念
- 安全模型:默认拒绝一切外部访问,能力必须由宿主显式授予。
- 资源限制:可对执行时间、内存等维度做约束,防止失控代码拖垮服务。
- 快照:支持对沙箱状态进行快照,便于恢复或复用。
- Python 子集:Monty 实现的是 Python 的一个子集,并非完整 CPython,使用前需确认目标代码是否落在支持范围内。
生态与定位
Monty 是 Pydantic Stack 的一员,在 Pydantic AI 中用于支撑 Code Mode。社区还提供了 Go 绑定 gomonty 和 Dart/Flutter 绑定 dart_monty。
如果你的 Agent 需要「让模型写代码并安全执行」,又不想为每次执行付出一秒以上的容器启动开销,Monty 值得优先评估。
评论
- 暂无评论,来写第一条吧。