Code Interpreter 支援在代碼執行期間接收 stdout、stderr 和富結果回調。流式輸出適合前端即時展示、服務端日誌採集和長時間分析任務進度反饋。
stdout 和 stderr
JavaScript / TypeScript 使用 onStdout 和 onStderr:
import { Sandbox } from '@e2b/code-interpreter'
await sandbox.runCode(
`
import sys
import time
print("start")
time.sleep(3)
print("warning", file=sys.stderr)
time.sleep(3)
print("done")
`,
{
onStdout: (data) => console.log("stdout:", data),
onStderr: (data) => console.error("stderr:", data),
onError: (error) => console.error("error:", error),
},
);Python SDK 使用 on_stdout 和 on_stderr。回調參數是輸出片段,通常包含內容、是否為錯誤輸出和時間戳記。不要假設一次回調對應一整行業務日誌。
from e2b_code_interpreter import Sandbox
sandbox.run_code(
"""
import sys
import time
print("start")
time.sleep(3)
print("warning", file=sys.stderr)
time.sleep(3)
print("done")
""",
on_stdout=lambda data: print("stdout:", data),
on_stderr=lambda data: print("stderr:", data),
on_error=lambda error: print("error:", error),
)富結果
表格、文本等富結果也可以通過回調提前接收。圖表請寫入檔案後通過 Filesystem 取回。
import { Sandbox } from '@e2b/code-interpreter'
await sandbox.runCode(
`
import pandas as pd
df = pd.DataFrame({"value": [1, 2, 3]})
df
`,
{
onResult: (result) => console.log("result:", result),
},
);Python SDK 使用對應的 snake_case 回調參數,具體參數名以當前 SDK 版本為準。
from e2b_code_interpreter import Sandbox
sandbox.run_code(
"""
import pandas as pd
df = pd.DataFrame({"value": [1, 2, 3]})
df
""",
on_result=lambda result: print("result:", result),
)使用建議
流式回調用於使用者體驗和日誌觀察,業務成功與否仍應以最終
execution.error和返回結果判斷。日誌量較大時,應在業務側截斷、採樣或落盤,避免把完整輸出儲存在記憶體中。
前端展示流式輸出時,應區分 stdout、stderr、富結果和最終狀態。
如果雲沙箱當前模板或 SDK 未觸發富結果回調,可回退為等待最終
execution.results。