Code Interpreter 的常见模式是先把数据写入 Sandbox,再通过 run_code() 执行分析、转换或可视化代码。业务系统负责上传数据、约束代码、展示结果;Sandbox 负责隔离运行和返回结构化结果。
写入 CSV 并执行分析
import os
import textwrap
from e2b_code_interpreter import Sandbox
sandbox = Sandbox.create(
template="code-interpreter-v1",
api_key=os.environ["E2B_API_KEY"],
api_url=os.environ["E2B_API_URL"],
domain=os.environ["E2B_DOMAIN"],
)
try:
sandbox.files.write(
"/tmp/sales.csv",
"month,revenue\n2026-01,120\n2026-02,180\n2026-03,160\n",
)
execution = sandbox.run_code(
textwrap.dedent(
"""
import pandas as pd
df = pd.read_csv("/tmp/sales.csv")
print(df)
df["revenue"].sum()
"""
),
timeout=30,
request_timeout=60,
)
if execution.error:
raise RuntimeError(execution.error)
stdout = "".join(execution.logs.stdout or [])
stderr = "".join(execution.logs.stderr or [])
print("stdout:")
print(stdout.strip())
print("stderr:")
print(stderr.strip())
print("text:")
print(execution.text)
finally:
sandbox.kill()TypeScript 示例:
import { Sandbox } from "@e2b/code-interpreter";
const sandbox = await Sandbox.create("code-interpreter-v1", {
apiKey: process.env.E2B_API_KEY,
apiUrl: process.env.E2B_API_URL,
domain: process.env.E2B_DOMAIN,
});
try {
await sandbox.files.write(
"/tmp/sales.csv",
"month,revenue\n2026-01,120\n2026-02,180\n2026-03,160\n",
);
const execution = await sandbox.runCode(`
import pandas as pd
df = pd.read_csv("/tmp/sales.csv")
print(df)
df["revenue"].sum()
`, {
timeoutMs: 30_000,
requestTimeoutMs: 60_000,
});
if (execution.error) {
throw new Error(`${execution.error.name}: ${execution.error.value}`);
}
console.log("stdout:");
console.log(execution.logs.stdout.join("").trim());
console.log("stderr:");
console.log(execution.logs.stderr.join("").trim());
console.log("text:");
console.log(execution.text);
} finally {
await sandbox.kill();
}生成图表文件
sandbox.run_code("""import matplotlib.pyplot as plt; plt.plot([1, 2, 3], [120, 180, 160]); plt.title("Revenue"); plt.savefig("/tmp/revenue.png")""")
content = sandbox.files.read("/tmp/revenue.png", format="bytes")TypeScript 示例:
await sandbox.runCode(`import matplotlib.pyplot as plt; plt.plot([1, 2, 3], [120, 180, 160]); plt.title("Revenue"); plt.savefig("/tmp/revenue.png")`);
const content = await sandbox.files.read("/tmp/revenue.png", { format: "bytes" });云沙箱当前只支持文件降级方案。图表细节参见图表与可视化。
接入 AI 生成代码
把模型生成代码交给 Sandbox 执行前,应在业务侧加入基本约束:
明确数据文件在 Sandbox 内的路径。
限制代码运行时间、输入文件大小和输出大小。
把
execution.error、stdout、stderr 和富结果都返回给模型或用户。不把用户数据、API Key 和长期业务状态写入生成代码。
使用建议
小数据文件可以用
sandbox.files.write()写入;大文件建议使用上传地址。分析代码应显式读取 Sandbox 内路径,例如
/tmp/input.csv。对图表和报告文件,写入
/tmp后再下载;表格和文本结果可以从execution.results或输出文件读取。任务结束后主动调用
sandbox.kill(),避免 Sandbox 持续占用资源。
该文章对您有帮助吗?