Code Interpreter 是一个强大的代码执行沙箱环境,支持在安全的沙箱环境中执行Python代码、管理文件系统、执行shell命令等功能。本文详细介绍Code Interpreter的API接口。
功能介绍
使用Code Interpreter API可以实现以下功能:
代码执行:支持 Python、JavaScript等语言代码的安全执行
文件管理:上传、下载、移动、删除文件
文件系统操作:目录创建、文件状态查询等
上下文管理:独立的代码执行环境
会话管理:支持并发会话和超时控制
Code Interpreter API分为控制面和数据面两个层面:
控制面OpenAPI:负责代码解释器资源实体的创建和生命周期管理。
数据面OpenAPI:负责具体的代码执行、文件操作等功能调用。
使用说明
首次登录AgentRun控制台,请先根据界面提示创建AgentRun服务关联角色AliyunServiceRoleForAgentRun,后续可以通过SDK操作使用。
沙箱模板定义一组沙箱实例的基础配置;沙箱实例则是具体执行代码任务的沙箱环境,一个沙箱实例最长生命周期为 6 小时。此外,通过
sandboxIdleTimeoutInSeconds参数,可以设定一个超时时长。如果会话的浅休眠(原闲置)时间超过该值,它将被提前终止,而无需等待 6 小时的生命周期结束。
使用流程概览
创建代码解释器模板
启动代码解释器沙箱实例
创建执行上下文
执行代码
控制面OpenAPI
准备工作
在顶部菜单栏,单击选择云产品,在搜索框搜索并选择AgentRun。
在左侧导航栏,找到对应的API接口开始使用。
模板管理
以上述OpenAPI门户链接中的API文档为准。
数据面OpenAPI
准备工作
准备数据面调用BASEURL:https://${阿里云主账号 ID}.agentrun-data.cn-hangzhou.aliyuncs.com/
在产品控制台右上角单击头像获取阿里云主账号ID。

沙箱实例管理
该部分接口暂未上线OpenAPI Explorer,可先通过SDK或直接调用API端点使用。
创建Sandbox实例
请求路径:POST ${BASEURL}/sandboxes
请求头:X-Acs-Parent-Id: ${阿里云主账号ID}
Content-Type: application/json
请求体:application/json
{
"templateName": "string", // 必需:模板名称,系统内部通过 templateName 查询 template_id
"sandboxId": "string", // 可选:自定义沙箱 ID,用于端到端 tracing。如果不指定,系统会自动生成 ULID 格式的 ID
}响应示例:
{
"sandboxId": "01JCED8Z9Y6XQVK8M2NRST5WXY",
"templateId": "01JCED8Z9Y6XQVK8M2NRST5ABC",
"templateName": "python-sandbox",
"templateType": "CodeInterpreter",
"status": "READY",
"sandboxIdleTimeoutInSeconds": 3600,
"createdAt": "2024-12-02T10:30:00Z",
"lastUpdatedAt": "2024-12-02T10:30:15Z",
"metadata": {
"fcSessionDetails": {
"sessionId": "1234567890abcdef",
"sessionStatus": "Active",
"sessionIdleTimeoutInSeconds": 3600,
"functionName": "sandbox-function",
"qualifier": "LATEST",
"containerId": "container-123",
"createdTime": "2024-12-02T10:30:00Z",
"lastModifiedTime": "2024-12-02T10:30:15Z",
"sessionAffinityType": "HEADER_FIELD"
}
}
}停止Sandbox实例
请求路径:POST ${BASEURL}/sandboxes/{sandboxId}/stop
请求头:X-Acs-Parent-Id: ${阿里云主账号ID}
路径参数:
sandboxId(string, 必需): 沙箱 ID
请求体:无
响应示例:
{
"sandboxId": "01JCED8Z9Y6XQVK8M2NRST5WXY",
"templateId": "01JCED8Z9Y6XQVK8M2NRST5ABC",
"templateName": "python-sandbox",
"templateType": "CodeInterpreter",
"status": "TERMINATED",
"sandboxIdleTimeoutInSeconds": 3600,
"createdAt": "2024-12-02T10:30:00Z",
"lastUpdatedAt": "2024-12-02T11:00:00Z",
"endedAt": "2024-12-02T11:00:00Z"
}说明:
停止 Sandbox 会删除 FC Session 并将数据库状态更新为
TERMINATED操作具有幂等性,如果 Sandbox 已经是
TERMINATED状态,直接返回会设置
endedAt时间戳
删除Sandbox实例
请求路径:DELETE ${BASEURL}/sandboxes/{sandboxId}
请求头:X-Acs-Parent-Id: ${阿里云主账号ID}
路径参数:
sandboxId(string, 必需):沙箱 ID
请求体:无
响应示例:
{
"sandboxId": "01JCED8Z9Y6XQVK8M2NRST5WXY",
"templateId": "01JCED8Z9Y6XQVK8M2NRST5ABC",
"templateName": "python-sandbox",
"templateType": "CodeInterpreter",
"status": "READY|TERMINATED",
"sandboxIdleTimeoutInSeconds": 3600,
"createdAt": "2024-12-02T10:30:00Z",
"lastUpdatedAt": "2024-12-02T11:30:00Z",
"endedAt": "2024-12-02T11:00:00Z"
}删除 Sandbox 会执行以下操作:
检查 Sandbox 是否存在
如果 Sandbox 是
READY状态,先调用 StopSandbox 删除 FC Session会返回删除前 Sandbox 的状态
状态说明
Sandbox 的状态流转:
CREATING: 创建中READY: 就绪,可以使用TERMINATED: 已停止(通过 StopSandbox 接口)
错误响应
所有接口在出现错误时返回统一的错误格式:
{
"error": {
"code": "ERROR_CODE",
"message": "错误描述信息"
}
}常见错误码:
400 Bad Request:请求参数错误404 Not Found:Sandbox 不存在500 Internal Server Error:服务器内部错误
健康检查
检查服务健康状态
上下文管理
文件系统操作
代码执行
终端执行
进程管理
更多信息
资源管理
及时清理资源:
完成任务后删除不需要的文件
不再使用的上下文和会话应及时删除
监控存储空间使用情况
合理配置超时时间:
短期任务:使用较短的超时时间(5-10分钟)
长期任务:适当延长超时时间(30分钟-6小时)
代码执行
错误处理:
import traceback
try:
# 你的代码
result = some_function()
print(f"执行成功: {result}")
except Exception as e:
print(f"执行失败: {str(e)}")
traceback.print_exc()大数据处理:
使用 pandas 分块读取大文件
及时释放内存中的大对象
使用生成器处理大量数据
文件操作:
import os
import pandas as pd
# 检查文件是否存在
if os.path.exists('/workspace/data.csv'):
df = pd.read_csv('/workspace/data.csv')
print(f"读取了 {len(df)} 行数据")安全考虑
输入验证:
验证上传文件的类型和大小
检查文件路径防止目录遍历攻击
权限控制:
使用最小权限原则配置 executionRoleArn
定期审查和更新凭证
数据保护:
敏感数据使用后及时删除
避免在代码中硬编码敏感信息