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.ap-southeast-1.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
定期審查和更新憑證
資料保護:
敏感性資料使用後及時刪除
避免在代碼中寫入程式碼敏感資訊