快速入门

更新时间:
复制 MD 格式

通过最简路径快速完成首个 PAI-Sandbox 的创建与调用:创建沙箱空间、基于公共模板创建沙箱实例、通过 E2B SDK 执行命令、销毁实例。

前置条件

在开始使用 PAI-Sandbox前,请确认已完成以下准备:

  • 已开通阿里云账号并完成实名认证。

  • 已开通 PAI 服务,并创建了 PAI 工作空间。

  • (可选)如需基于自定义镜像创建模板,请先开通容器镜像服务(ACR),并创建标准版或高级版 ACR 企业实例。若仅使用公共模板,则无需配置 ACR。

  • (可选)当使用 EAS 资源组时,需提前准备好沙箱专用资源组。使用公共资源时无需额外准备。

  • (可选)当使用E2B Python SDK时,仅支持小于v2.25.0的版本。

步骤一:创建沙箱空间

  1. 登录 PAI 控制台,在左侧导航栏选择模型在线服务 (EAS),进入服务列表页。

  2. 在顶部 Tab 中切换至沙箱页签。

  3. 单击创建沙箱空间按钮,按以下示例配置:

    • 空间名称:自定义,例如 quickstart

    • 资源类型:选择公共资源(按量付费、开箱即用)。

    • 专有网络:下拉选择已有 VPC(如无可前往 VPC 控制台创建)。

    • 其他参数保持默认。

  4. 单击确认完成创建。

说明

详细参数与高级配置参见管理沙箱空间与模板

步骤二:选择公共模板

PAI-Sandbox已预置 code-interpreterbrowserdesktop 等公共模板,开箱即用。本入门直接使用 code-interpreter,无需自建模板。

  1. 进入沙箱空间工作台。

    1. 沙箱页签的列表中找到步骤一创建的沙箱空间,在调用列单击沙箱空间工作台图标。

    2. 在弹出的进入沙箱空间工作台对话框中复制管理链接只读链接,在浏览器中打开。

  2. 在公共模板列表中,选择code-interpreter,单击模板ID进入模板详情。

  3. 单击模板详情页右上角的SDK接入获取SDK连接配置及Python示例。

步骤三:通过 SDK 创建沙箱实例并执行命令

安装 E2B SDK

pip install "e2b<2.25.0"       

完整示例

以下示例展示一个完整的沙箱使用流程:创建实例 → 获取信息 → 执行命令 → 文件读写 → 销毁。

注意:将 <YOUR-API-TOKEN><YOUR-DOMAIN> 替换为步骤二中获取的值。

import os
from e2b import Sandbox
import time

# 1. 设置认证信息
os.environ["E2B_API_KEY"] = "<YOUR-API-TOKEN>"
os.environ["E2B_DOMAIN"] = "<YOUR-DOMAIN>" 

# 2. 创建 sandbox
sandbox = Sandbox.create(
    template="<YOUR-TEMPLATE-ID>",
    timeout=300000,   # 超时时间(毫秒)
)
print(f"Sandbox ID: {sandbox.sandbox_id}")

# 等待沙箱进入运行中状态
print("Waiting for sandbox to be ready...")
max_attempts = 30
for attempt in range(1, max_attempts + 1):
    try:
        is_running = sandbox.is_running()
        status = "Running" if is_running else "Not Running"
        print(f"    [{attempt}/{max_attempts}] Sandbox status: {status}")
        if is_running:
            print("    ✓ Sandbox is now running!")
            break
    except Exception as e:
        print(f"    [{attempt}/{max_attempts}] Failed to check status: {e}")

    if attempt < max_attempts:
        time.sleep(2)

# 3. 获取 sandbox 详细信息(包括 metadata 和 dashboard URL)
info = sandbox.get_info()
print(f"State: {info.state}")
print(f"CPU: {info.cpu_count}, Memory: {info.memory_mb}MB")

# 打印 metadata
if info.metadata:
    print("\nMetadata:")
    for key, value in info.metadata.items():
        print(f"  {key}: {value}")

    # 获取 dashboard URL
    dashboard_url = info.metadata.get('sandbox.alicloud.com/dashboard-url') or \
                    info.metadata.get('dashboard_url')
    if dashboard_url:
        print(f"\nDashboard URL: {dashboard_url}")

# 4. 执行命令
result = sandbox.commands.run("echo 'Hello, World!'")
print(result.stdout)

# 5. 文件操作
sandbox.files.write("/tmp/test.txt", "Hello from sandbox!")
content = sandbox.files.read("/tmp/test.txt")
print(content)

# 6. 清理
sandbox.kill()      

步骤四:清理资源

  • 调用 sandbox.kill() 销毁实例后,计算资源与系统盘均停止计费

  • 您也可以在沙箱空间工作台的沙箱列表中找到该实例,单击删除销毁。

  • 如不再使用,可在沙箱空间列表中删除整个空间。

重要

未调用 kill() 或未达到 timeout 的沙箱将持续计费(暂停状态也按运行中单价计费)。详见计费说明

下一步