コード実行:Claudeが自ら書いたコードを実行する
コード実行により、ClaudeはPythonを書き、それをAnthropic側で実行し、出力された内容から回答できるようになります。
このビデオのデモは2026年9月に収録されました。Claude Sonnet 5(claude-sonnet-5)上で実行されています。新しいモデルでは結果が異なる場合があります。
多くのファイルにまたがる計算が必要な質問もあります。それはコードの仕事です。
架空のエンジニアリングコンサルティング会社であるMeridianを例に考えてみましょう。同社はポンプステーションごとに1つずつ、計12個のCSVファイルを持っており、各ファイルには1年分の流量測定データが含まれています。同社は、いずれかのステーションが設計容量を超えたことがあるかどうか、もしあればいつだったのかを知りたいと考えています。
コード実行は、Claudeがその仕事をこなす方法です。Claudeは、自ら書いたPythonを実行できるコンテナを与えられ、コードが出力した内容から回答します。
リクエストにツールを追加する
コード実行はサーバーツールであり、Anthropicのインフラストラクチャ上で実行されるツールです。これにはハンドラーを書く必要がなく、コードからtool_resultを送り返す必要もありません。
コード実行を追加するには、toolsリストに1つのエントリを追加するだけです。 エントリのtypeの末尾にある日付はツールのバージョンを表しており、Meridianではcode_execution_20260120を使用しています。現在のバージョンはツールリファレンスに記載されています(新しいタブで開きます)ので、そこからtypeの値をコピーしてください。
MeridianはこのリストをTOOLSという名前の定数として保持しており、そのリクエストではtools=TOOLSとして渡しています。
TOOLS = [{"type": "code_execution_20260120", "name": "code_execution"}]2026年10月時点で、コード実行(新しいタブで開きます)はClaude API、Claude Platform on AWS、AnthropicがGoogle Cloud上で管理するClaudeモデル、およびAnthropicでホストされているMicrosoft Foundryデプロイメントで実行できます。
ファイルをコンテナに配置する
Claudeのコードは、Anthropic側のコンテナ内で実行されます。お使いのファイルはまだご自身のマシン上にあるため、コンテナにはまだそれらが存在しません。Meridianのプログラムは、2つのステップでファイルをコンテナに取り込みます。
- Files API(新しいタブで開きます)を使って各ファイルをアップロードします。これによりファイルIDが返されます。
- そのファイルIDを、メッセージ内の
container_uploadブロックに入れます。
Meridianのプログラムは、質問と同じメッセージ内に、各ファイルに対して1つのcontainer_uploadブロックを追加します。 これにより、ファイルがコンテナ上に読み込まれ、Claudeのコードがそれらを開けるようになります。
Claudeの回答を読む
お使いのコードは1回のリクエストを送信し、通常はそれで完成した回答を受け取ります。
APIは、長時間実行されるターンを一時停止し、stop_reasonとしてpause_turnを返すことがあります。その場合は、レスポンスのコンテンツを同じtoolsを付けてassistantメッセージとして送り返すことで、Claudeが続行します。
Meridianに対するClaudeの回答は、ステーション7が設計容量である600 L/sを2025年4月と5月の2回超過した、というものです。レスポンスの中では、回答はClaudeが実行したコマンドの後に記載されます。
プログラムをまとめる
以下のMeridianのプログラムは、ツールを追加し、ファイルをコンテナに配置し、回答を読み取ります。このプログラムでは、pathsが12個のCSVファイルをpathlib.Pathオブジェクトとして保持し、QUESTIONがMeridianの質問を保持しています。
重要なポイント
- コード実行はサーバーツールです。
toolsに1つのエントリを追加するだけで、Claudeのコードは Anthropic側のコンテナ内で実行されます。 - 各ファイルをFiles APIでアップロードし、そのファイルIDを
container_uploadブロックに入れます。