全部產品
Search
文件中心

Function Compute:輸出結果

更新時間:Jul 22, 2026

Code Interpreter 的執行結果同時包含日誌、運算式結果、富結果和錯誤資訊。業務側應分別處理這些欄位,不要唯讀取 stdout。

結果結構

欄位說明
execution.logs.stdoutprint() 或標準輸出內容。
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.nameSDK 封裝後的錯誤類型名稱,不一定等於原始 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 下載。