加载中

代码执行:Claude 运行自己编写的代码

第 5 课8 分钟
加载中

代码执行: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 传入:

python
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 的程序通过两个步骤将文件送入容器:

  1. 使用 Files API 上传每个文件,它会返回给您一个文件 ID。
  2. 将该文件 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 块中。