Code Interpreter 通過 run_code() / runCode() 在 Sandbox 內執行代碼。Python 是預設語言,其他語言通過 language 參數選擇。
建立 Sandbox
使用 code-interpreter-v1 模板建立 Sandbox:
import os
from e2b_code_interpreter import Sandbox
sandbox = Sandbox.create(
template="code-interpreter-v1",
api_key=os.environ["E2B_API_KEY"],
api_url=os.environ["E2B_API_URL"],
domain=os.environ["E2B_DOMAIN"],
)TypeScript 樣本:
import { Sandbox } from "@e2b/code-interpreter";
const sandbox = await Sandbox.create("code-interpreter-v1", {
apiKey: process.env.E2B_API_KEY,
apiUrl: process.env.E2B_API_URL,
domain: process.env.E2B_DOMAIN,
});執行 Python 代碼
execution = sandbox.run_code("""
import pandas as pd
df = pd.DataFrame({"value": [1, 2, 3]})
print(df)
df["value"].sum()
""")
stdout = "".join(execution.logs.stdout or [])
print(stdout.strip())
print(execution.text)TypeScript 樣本:
const execution = await sandbox.runCode(`
import pandas as pd
df = pd.DataFrame({"value": [1, 2, 3]})
print(df)
df["value"].sum()
`);
const stdout = execution.logs.stdout.join("");
console.log(stdout.trim());
console.log(execution.text);print() 寫入 stdout;最後一個裸運算式寫入 execution.text,並可能在 execution.results 中產生結構化結果。
設定逾時
長時間任務應顯式設定執行逾時和請求逾時:
execution = sandbox.run_code(
"import time; time.sleep(5); 42",
timeout=30,
request_timeout=60,
)TypeScript 樣本:
const execution = await sandbox.runCode(
"import time; time.sleep(5); 42",
{
timeoutMs: 30_000,
requestTimeoutMs: 60_000,
},
);timeout 限制 Sandbox 內代碼執行時間長度;request_timeout 限制 SDK 請求等待時間長度。具體參數名以當前語言 SDK 為準。
執行其他語言
雲沙箱 Code Interpreter 支援通過 language 參數執行 JavaScript、TypeScript 和 Bash;不支援 Java 和 R。生產接入前建議先用最小代碼驗證目標語言。
execution = sandbox.run_code(
'console.log("hello from js")',
language="javascript",
)TypeScript 樣本:
const execution = await sandbox.runCode('console.log("hello from js")', {
language: "javascript",
});更多語言樣本參見支援語言。
輸出行為
execution.logs.stdout/execution.logs.stderr返回標準輸出和標準錯誤。stdout/stderr 片段包含時間戳記。
execution.execution_count/execution.executionCount表示當前上下文內的執行序號。execution.text返回最後一個裸運算式的文本展示。execution.results返回富結果,例如文本和表格。圖表請寫入檔案後通過 Filesystem 取回。execution.error返回運行時報錯。