代码执行:Claude 运行自己编写的代码
代码执行让 Claude 能够编写 Python 代码,在 Anthropic 一侧运行它,并根据代码的输出来回答问题。
本视频中的演示录制于 2026 年 9 月,运行在 Claude Sonnet 5(claude-sonnet-5)上。在更新的模型上结果可能有所不同。
有些问题需要对许多文件进行数学运算。这正是代码该做的事。
以 Meridian 为例,一家虚构的工程咨询公司。它有 12 个 CSV 文件,每个泵站一个,每个文件保存着一年的流量读数。它想知道是否有任何一个泵站曾超过其设计容量,如果有,是在什么时候。
代码执行正是 Claude 完成这项工作的方式。Claude 会获得一个容器,它可以在其中运行自己编写的 Python 代码,并根据代码输出的内容来回答。
将该工具添加到您的请求中
代码执行是一种服务器工具(server tool),即一种在 Anthropic 基础设施上运行的工具。您无需为它编写处理程序,您的代码也不会发回 tool_result。
添加代码执行只需在您的 tools 列表中加入一条条目。 条目中 type 末尾的日期是该工具的版本号,Meridian 使用的是 code_execution_20260120。当前版本列在工具参考文档中(在新标签页中打开),请从那里复制 type 的值。
Meridian 将该列表保存在一个名为 TOOLS 的常量中,它的请求将其作为 tools=TOOLS 传入:
TOOLS = [{"type": "code_execution_20260120", "name": "code_execution"}]截至 2026 年 10 月,代码执行(在新标签页中打开)可在 Claude API、AWS 上的 Claude Platform、由 Anthropic 管理的 Google Cloud 上的 Claude 模型,以及托管在 Anthropic 上的 Microsoft Foundry 部署中运行。
将您的文件放入容器
Claude 的代码运行在 Anthropic 一侧的容器中。您的文件仍在您的机器上,因此容器目前还没有这些文件。Meridian 的程序通过两个步骤将文件送入容器:
- 使用 Files API(在新标签页中打开) 上传每个文件,它会返回给您一个文件 ID。
- 将该文件 ID 放入您的消息中的一个
container_upload块里。
Meridian 的程序会为每个文件添加一个 container_upload 块,放在与其问题相同的消息中。 这些文件随后会被加载到容器中,Claude 的代码便可以打开它们。
读取 Claude 的回答
您的代码发送一次请求,通常就能拿到完整的最终答案。
API 可以暂停一个长时间运行的轮次,并返回 stop_reason 为 pause_turn。当出现这种情况时,将响应内容以 assistant 消息的形式连同相同的 tools 一起发回,Claude 便会继续。
Claude 给 Meridian 的答案是:7 号站曾两次超过其 600 L/s 的设计容量,分别发生在 2025 年 4 月和 5 月。在响应中,该答案出现在 Claude 运行的命令之后。
把整个程序组合起来
下面 Meridian 的程序添加了该工具,将文件放入容器,并读取答案。在程序中,paths 以 pathlib.Path 对象的形式保存了这 12 个 CSV 文件,QUESTION 保存着 Meridian 的问题。
要点回顾
- 代码执行是一种服务器工具。您只需在
tools中添加一条条目,Claude 的代码便会在 Anthropic 一侧的容器中运行。 - 您使用 Files API 上传每个文件,然后将其文件 ID 放入一个
container_upload块中。