vndee/llm-sandbox

Lightweight and portable LLM sandbox runtime (code interpreter) Python library.

LLM Sandbox – AI 生成代码的安全执行

是什么 – 一个轻量级的 Python 库,可启动隔离的容器(Docker、Kubernetes 或 Podman),并在其中运行大型语言模型生成的代码。它让开发者可以像处理普通脚本一样使用 LLM 输出,同时保护主机系统安全。

为何重要 – LLM 经常生成可运行的代码,但在开发者的机器上直接执行这些代码存在风险。LLM Sandbox 自动创建沙箱环境,应用资源限制,并可捕获代码生成的产物(例如图表)。


核心功能

功能 你将获得
隔离 每次运行都在独立的容器中进行,除非显式允许,否则无法访问主机文件系统或网络。
安全策略 可自定义 CPU、内存、执行时间及网络连接的策略。
多后端支持 Docker(默认)、Kubernetes(企业级扩展)、Podman(无 root 权限)。
多语言支持 Python、JavaScript/Node、Java、C++、Go、R – 库会动态安装所需的包管理器(pip、npm、Maven/Gradle 等)。
LLM 框架钩子 提供 11 个主流代理 SDK(LangChain、Claude、LlamaIndex、CrewAI 等)的预设示例。
产物提取 自动将生成的图像/图表以 base-64 字符串形式返回,便于在笔记本或 API 中显示。
交互式会话 InteractiveSandboxSession 保持长期运行的 IPython 内核,支持跨单元状态持久化执行。
容器池化 预热容器池并复用,可将启动延迟降低高达 10 倍,支持并发执行。
自定义镜像与 Dockerfile 可使用自定义容器镜像或 Dockerfile 构建专用环境。

快速开始(Python)

from llm_sandbox import SandboxSession

with SandboxSession(lang="python") as s:
    r = s.run("print('来自安全容器的问候!')")
    print(r.stdout)

安装库:

pip install llm-sandbox            # 核心功能
pip install 'llm-sandbox[docker]'   # Docker 支持(最常见)
# 或添加 [k8s] / [podman] 以启用其他后端

你也可以在运行时请求额外包:

s.run("import numpy as np; print(np.mean([1,2,3]))", libraries=["numpy"])

使用其他语言

# JavaScript (Node.js)
with SandboxSession(lang="javascript") as s:
    s.run("const axios = require('axios'); console.log('axios 准备就绪');", libraries=["axios"])

# C++
with SandboxSession(lang="cpp") as s:
    s.run("#include <iostream>\nint main(){std::cout<<'你好';}")

Java、Go 和 R 也使用相同模式,只需选择 lang 参数,并可选择性传入已包含运行时的容器镜像。

交互式笔记本

from llm_sandbox import InteractiveSandboxSession

with InteractiveSandboxSession(lang="python", kernel_type="ipython") as s:
    s.run("value = 7 * 6")
    print(s.run("print(value)").stdout)   # → 42
    s.run("%pip install pandas")          # 笔记本内魔法命令可用

状态(变量、导入、魔法命令)在上下文管理器退出前保持持久。

容器池化(高吞吐量用例)

from llm_sandbox.pool import create_pool_manager, PoolConfig
from llm_sandbox import SandboxSession

pool = create_pool_manager(
    backend="docker",
    config=PoolConfig(max_pool_size=10, min_pool_size=3, enable_prewarming=True),
    lang="python",
    libraries=["numpy", "pandas"]
)

with SandboxSession(lang="python", pool=pool) as s:
    print(s.run("import pandas as pd; print(pandas.__version__)").stdout)

pool.close()   # 应用关闭时清理

该池是线程安全的,可跨多个并发请求共享。

更多学习资源

  • 文档https://vndee.github.io/llm-sandbox/(完整 API 参考、配置指南、MCP 集成)。
  • MCP 服务器 – 该库可作为 Model Context Protocol 端点,使 Claude Desktop 等工具能安全发送代码执行。
  • 示例examples/agent_sdks/ 包含 OpenAI、Claude、LangChain、CrewAI 等的即用型代码片段。

TL;DR

  • 安装 llm-sandbox(选择 Docker、K8s 或 Podman 扩展)。
  • 将任意 LLM 生成的代码片段包裹在 SandboxSession(...).run(...) 中。
  • 获取 stdout、stderr、退出码以及生成的图表。
  • 生产负载使用容器池化,笔记本使用交互式会话。

总结 – LLM Sandbox 将 LLM 提出的“运行这段代码”建议转化为安全、可复现、语言无关的操作,使开发者能够在不暴露主机环境风险的前提下,自由实验 AI 生成的脚本。

相关

  • 项目
  • Dispatch
  • Dispatch
  • 项目
  • 项目