通过最简路径快速完成首个 PAI-Instant Service 的创建与调用:创建即时服务、基于公共模板创建实例、通过 E2B SDK 执行命令、销毁实例。
前置条件
在开始使用 PAI-Instant Service前,请确认已完成以下准备:
已开通阿里云账号并完成实名认证。
已开通 PAI 服务,并创建了 PAI 工作空间。
已在EAS专属机器购买页面购买即时服务计算资源。
(可选)如需基于自定义镜像创建模板,请先开通容器镜像服务(ACR),并创建标准版或高级版 ACR 企业实例。若仅使用公共模板,则无需配置 ACR。
(可选)当使用E2B Python SDK时,仅支持小于v2.25.0的版本。
步骤一:创建即时服务
登录 PAI 控制台,在左侧导航栏选择模型在线服务 (EAS),进入服务列表页。
在顶部 Tab 中切换至即时服务页签。
单击创建即时服务按钮,按以下示例配置,其他参数保持默认:
名称:自定义,例如
quickstart。资源类型:选择EAS资源组。
资源组:选择已购买的即时服务资源组。
网络出口方式:选择共享公网。
单击确认完成创建。
详细参数与高级配置参见管理沙箱空间与模板。
步骤二:选择公共模板
PAI-Instant Service已预置 code-interpreter、browser、desktop 等公共模板,开箱即用。本入门直接使用 code-interpreter,无需自建模板。
进入即时服务工作台。
在即时服务页签的列表中找到步骤一创建的即时服务,在调用列单击即时服务工作台图标。
在弹出的进入即时服务工作台对话框中复制管理链接或只读链接,在浏览器中打开。
在公共模板列表中,选择
code-interpreter,单击模板ID进入模板详情。单击模板详情页右上角的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.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. 获取实例详细信息(包括 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 的实例将持续计费(暂停状态也按运行中单价计费)。详见计费说明。