核心 · Key Idea
一句话:Code Interpreter 是一个**让模型「写代码 + 跑代码 + 看结果」**的沙盒环境(默认是 Python)。模型遇到要算数、读文件、画图、跑数据时,生成代码、运行、看输出,再继续推理 —— 把不靠谱的「心算」交给可靠的「计算机」。
是什么#
工作流程:
用户: 这个 CSV 文件里销售额前 5 的城市是哪些?
模型: [生成 Python 代码]
import pandas as pd
df = pd.read_csv("/mnt/data/sales.csv")
print(df.groupby("city")["amount"].sum().nlargest(5))
执行: [代码在沙盒里跑]
city
Beijing 1234567
Shanghai 987654
...
模型: 销售额前 5 的城市是 …(基于真实结果回答)
模型自己决定要不要写代码、写什么代码,沙盒负责安全执行,结果回喂模型。
打个比方#
打个比方 · Analogy
LLM 心算 = 一个特别会胡说的人帮你算账。
Code Interpreter = 给他一台计算器和草稿纸 —— 他遇到数字就真的算一下,结果就靠谱了。
关键概念#
Sandbox沙盒
隔离的容器 / VM / WebAssembly。模型代码在里面跑,不能碰主机。
Stateful Kernel持续 kernel
Jupyter 风格 —— 变量在多轮调用之间保留,不必每次重读文件。
File I/O文件挂载
用户上传的文件挂在沙盒里 (`/mnt/data/`),模型读 / 写都行。
Output输出回写
stdout / 异常 / 图表都被捕获并喂回模型。
怎么工作#
模型把「执行结果」当 observation 接着推理,和 ReAct 是同一个套路。
实操要点#
- 优先派给数学 / 数据 / 文件:算账、统计、转格式、画图、跑回归 —— 都让 Code Interpreter 干,比硬聊天精确十倍。
- 沙盒安全:永远禁止 网络、SSH、读敏感目录。给最小权限,能跑数据分析就够了。
- kernel 复用 vs 新起:长会话保持同一 kernel 省时间,但变量污染要小心。多用户产品建议每人独立 kernel。
- 超时 + 资源限制:CPU / 内存 / 执行时间 / 输出大小都要 cap,避免模型生成死循环把机器打满。
- 失败要详细回喂:抛异常时把 traceback 完整喂回模型,它会根据错误改代码重试 —— 这是 Code Interpreter 真正强的地方。
易混点#
Code Interpreter
模型**临时编代码**解决问题。
无限灵活,但风险高、需沙盒。
无限灵活,但风险高、需沙盒。
普通 Function Calling
**预定义工具**集合,模型只会调。
可控,但每个新能力要先写好工具。
可控,但每个新能力要先写好工具。
Code Interpreter
**写 + 执行**:模型在沙盒跑代码看结果。
Code Generation
**只写**:把代码交给用户,自己不跑。
Cursor / Copilot 默认是这种模式。
Cursor / Copilot 默认是这种模式。
延伸阅读#
- Function Calling —— Code Interpreter 是一个特殊的「工具」
- Hallucination —— 用 Code Interpreter 现场算来压幻觉
- ReAct —— 「想 + 跑代码 + 看结果」也是 ReAct 循环