E2B(The Enterprise AI Agent Cloud) 是一个专为 AI Agent 设计的安全代码执行平台。它提供:
- 完全隔离的云端 Sandbox:使用 Firecracker microVM 技术实现硬件级隔离
- 毫秒级启动:约 150ms 启动时间,几乎无延迟
- 多语言支持:Python、JavaScript/TypeScript SDK
- 开箱即用的工具:Python、Node.js、浏览器等预配置环境
- 企业级安全:被 88% 的财富 100 强公司使用
适用场景:
- AI 生成的代码执行
- 数据分析和处理
- 文件处理和转换
- API 测试和集成
- 自主 AI Agent 应用
环境准备与安装
前置要求
- Python:3.8 或更高版本
- Node.js:16 或更高版本(如果使用 JavaScript SDK)
- E2B API Key:需要注册获取
步骤 1:注册 E2B 账号
- 访问 E2B 官网
- 点击"Sign Up"注册账号
- 登录后获取 API Key(可在 Dashboard 中找到)
步骤 2:安装 Python SDK
pip install e2b-code-interpreter
或者安装标准 SDK:
pip install e2b
步骤 3:配置环境变量
Linux/Mac:
export E2B_API_KEY="your_api_key_here"
Windows (PowerShell):
$env:E2B_API_KEY="your_api_key_here"
或在代码中设置:
import os
os.environ["E2B_API_KEY"] = "your_api_key_here"
步骤 4:验证安装
from e2b_code_interpreter import Sandbox
# 测试连接
sandbox = Sandbox()
print(f"Sandbox ID: {sandbox.sandbox_id}")
sandbox.kill()
如果成功打印出 Sandbox ID,说明安装配置正确!
快速入门
示例 1:执行 Python 代码
from e2b_code_interpreter import Sandbox
# 创建 Sandbox 实例
sandbox = Sandbox()
# 执行 Python 代码
result = sandbox.notebook.exec_cell("print('Hello from E2B Sandbox!')")
# 查看结果
print(result)
# 输出:ExecutionResult(stdout='Hello from E2B Sandbox!\n', stderr='', error=None)
# 关闭 Sandbox
sandbox.kill()
示例 2:数学计算
from e2b_code_interpreter import Sandbox
sandbox = Sandbox()
# 执行数学运算
code = """
import math
result = math.sqrt(16) + math.pi
print(f"计算结果: {result:.2f}")
"""
execution = sandbox.notebook.exec_cell(code)
print(execution.stdout)
sandbox.kill()
# 输出:计算结果: 7.14
示例 3:使用上下文管理器(推荐)
from e2b_code_interpreter import Sandbox
# 使用 with 语句自动管理资源
with Sandbox() as sandbox:
result = sandbox.notebook.exec_cell("2 + 2")
print(result.stdout)
# Sandbox 会自动关闭
# 无需手动调用 sandbox.kill()
优势:即使发生异常,Sandbox 也会正确关闭。
基础技能:代码执行
处理代码输出
from e2b_code_interpreter import Sandbox
with Sandbox() as sandbox:
# 执行代码
result = sandbox.notebook.exec_cell("""
x = 10
y = 20
print(x + y)
""")
# 访问不同输出
print("标准输出:", result.stdout) # x + y 的结果
print("标准错误:", result.stderr) # 错误信息
print("错误对象:", result.error) # None 或异常对象
print("返回值:", result.results) # 如果有 return 语句
捕获和处理错误
from e2b_code_interpreter import Sandbox
with Sandbox() as sandbox:
# 故意写一个错误的代码
result = sandbox.notebook.exec_cell("""
print(1 / 0)
""")
if result.error:
print(f"发生错误: {result.error}")
print(f"错误堆栈:\n{result.stderr}")
else:
print("执行成功")
print(result.stdout)
# 输出:
# 发生错误: division by zero
# 错误堆栈:
# Traceback (most recent call last):
# File "<string>", line 2, in <module>
# ZeroDivisionError: division by zero
执行多段代码
from e2b_code_interpreter import Sandbox
with Sandbox() as sandbox:
# 第一段:定义变量
sandbox.notebook.exec_cell("data = [1, 2, 3, 4, 5]")
# 第二段:处理数据
sandbox.notebook.exec_cell("squared = [x**2 for x in data]")
# 第三段:计算结果
result = sandbox.notebook.exec_cell("print(sum(squared))")
print(result.stdout) # 输出:55
关键点:Sandbox 中的状态会保留,后续代码可以访问之前定义的变量。
使用 Jupyter Notebook 风格
from e2b_code_interpreter import Sandbox
with Sandbox() as sandbox:
# 创建数据分析 notebook
cells = [
"import pandas as pd\nimport numpy as np",
"df = pd.DataFrame({'A': [1, 2, 3], 'B': [4, 5, 6]})",
"print(df.describe())"
]
for i, cell in enumerate(cells):
print(f"\n--- Cell {i+1} ---")
result = sandbox.notebook.exec_cell(cell)
print(result.stdout)