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 下载。
该文章对您有帮助吗?