Code Interpreter 的執行結果同時包含日誌、運算式結果、富結果和錯誤資訊。業務側應分別處理這些欄位,不要唯讀取 stdout。
結果結構
| 欄位 | 說明 |
execution.logs.stdout | print() 或標準輸出內容。 |
execution.logs.stderr | 標準錯誤內容。 |
execution.text | 最後一個裸運算式的文本展示。 |
execution.results | 富結果清單,可包含文本、表格等結構化結果。 |
execution.error | 運行時報錯。成功時為空白。 |
execution.execution_count / execution.executionCount | 當前上下文內的執行序號。 |
讀取 stdout 和 stderr
execution = sandbox.run_code("""
import sys
print("hello")
print("warning", file=sys.stderr)
""")
stdout = "".join(execution.logs.stdout or [])
stderr = "".join(execution.logs.stderr or [])
print(stdout.strip())
print(stderr.strip())TypeScript 樣本:
const execution = await sandbox.runCode(`
import sys
print("hello")
print("warning", file=sys.stderr)
`);
const stdout = execution.logs.stdout.join("");
const stderr = execution.logs.stderr.join("");
console.log(stdout.trim());
console.log(stderr.trim());讀取運算式結果
execution = sandbox.run_code("1 + 1")
print(execution.text)TypeScript 樣本:
const execution = await sandbox.runCode("1 + 1");
console.log(execution.text);execution.text 適合展示簡單文本結果。表格可從 execution.results 中讀取;圖表應儲存為檔案後通過 Filesystem 取回。
讀取富結果
execution = sandbox.run_code("""
import pandas as pd
df = pd.DataFrame({"month": ["2026-01", "2026-02"], "revenue": [120, 180]})
df
""")
for result in execution.results:
if getattr(result, "text", None):
print(result.text)TypeScript 樣本:
const execution = await sandbox.runCode(`
import pandas as pd
df = pd.DataFrame({"month": ["2026-01", "2026-02"], "revenue": [120, 180]})
df
`);
for (const result of execution.results) {
if (result.text) {
console.log(result.text);
}
}不同 SDK 版本對 Result 對象的欄位暴露方式可能不同。接入時應先列印一次 execution.results,確認當前 SDK 返回的欄位名。
處理錯誤
execution = sandbox.run_code("raise ValueError('bad input')")
if execution.error:
print(execution.error.name)
print(execution.error.value)
print(execution.error.traceback)TypeScript 樣本:
const execution = await sandbox.runCode("raise ValueError('bad input')");
if (execution.error) {
console.log(execution.error.name);
console.log(execution.error.value);
console.log(execution.error.traceback);
}execution.error 對象包含以下欄位:
| 欄位 | 說明 |
execution.error.name | SDK 封裝後的錯誤類型名稱,不一定等於原始 Python 異常類名(例如,ValueError 可能被封裝為 ExecutionError)。 |
execution.error.value | 錯誤摘要資訊,可能包含調用棧內容,不一定等於異常構造參數(例如,'bad input')。 |
execution.error.traceback | 完整調用棧字串,包含原始異常類型和訊息,是擷取錯誤詳情的信任的來源。 |
如需擷取原始異常類型或錯誤訊息,建議從 execution.error.traceback 中解析(例如提取最後一行的 ExceptionType: message 格式),而不要依賴 name 或 value 欄位做精確的類型匹配。
使用建議
面向使用者展示結果時,區分 stdout、運算式結果、富結果和錯誤。
對 Agent 情境,把
execution.error作為重試或修正代碼的輸入。表格優先使用
execution.results;圖表和報告檔案寫入 Sandbox 後通過 Filesystem 下載。