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
- 项目
- 项目