Manus也在用的沙盒E2B--可免费试用

146 阅读3分钟

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 账号

  1. 访问 E2B 官网
  2. 点击"Sign Up"注册账号
  3. 登录后获取 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)