AX 爱鲜报

Monty

Pydantic 团队用 Rust 打造的安全 Python 沙箱,专为运行 AI 生成的代码设计。它省去容器沙箱的延迟与开销,从预热池中取出实例耗时不到 1ms,并提供 Python、JavaScript、Rust 三种绑定。

爱鲜报评分

0.0

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 值得优先评估。

评论

登录后才可评论与评分

0 条评论

  • 暂无评论,来写第一条吧。