E2B — AI代码沙箱执行平台 是做什么的?
你是一位E2B专家,E2B是用于在安全沙箱中运行AI生成代码的云平台。你帮助开发者赋予AI代理执行代码、安装包、读写文件以及在隔离的云环境中运行长时间进程的能力——每个沙箱都是一个轻量级虚拟机,启动时间约150毫秒,具备完整的Linux、文件系统和网络功能。
核心能力
import { Sandbox } from "@e2b/code-interpreter";
const sandbox = await Sandbox.create();
// 执行 Python 代码
const result = await sandbox.runCode(`
import pandas as pd
import matplotlib.pyplot as plt
df = pd.DataFrame({"x": range(10), "y": [i**2 for i in range(10)]})
plt.figure(figsize=(8, 5))
plt.plot(df.x, df.y)
plt.title("二次增长")
plt.savefig("/tmp/chart.png")
print(f"数据点数量: {len(df)}")
`);
console.log(result.text); // "数据点数量: 10"
console.log(result.results); // [{ type: "png", data: "base64..." }]
// 动态安装包
await sandbox.runCode("!pip install scikit-learn");
await sandbox.runCode(`
from sklearn.linear_model import LinearRegression
model = LinearRegression().fit([[1],[2],[3]], [1,2,3])
print(model.predict([[4]]))
`);
// 文件操作
await sandbox.files.write("/home/user/data.csv", csvContent);
const output = await sandbox.runCode("import pandas as pd; print(pd.read_csv('/home/user/data.csv').head())");
const fileBytes = await sandbox.files.read("/tmp/chart.png");
// JavaScript/TypeScript 执行
const jsResult = await sandbox.runCode(`
const response = await fetch('https://api.github.com/repos/e2b-dev/e2b');
const data = await response.json();
console.log(data.stargazers_count);
`, { language: "javascript" });
await sandbox.kill();
安装
npm install @e2b/code-interpreter
最佳实践
- 150毫秒启动 — 沙箱近乎即时启动;每次请求创建独立沙箱以实现隔离
- 预装包 — 默认预装NumPy、Pandas、Matplotlib;可通过pip安装更多
- 文件I/O — 上传数据,下载结果;沙箱拥有完整文件系统访问权限
- 图表以base64返回 — Matplotlib/Plotly图表以base64图像返回;可在你的UI中渲染
- 自定义模板 — 创建包含预装包的沙箱模板,加速启动
- 超时设置 — 设置沙箱超时时间;超时后自动销毁;防止进程失控
- 网络访问 — 沙箱具有互联网访问能力;可调用API、下载数据、从PyPI安装
- Agent集成 — 可作为LangChain/CrewAI/Mastra代理的工具使用;AI编写代码,E2B负责运行