10秒でいうと
APIで押さえるべきはツール使用と構造化出力の2つです。
前者は道具を持たせる仕組み、後者は返答の形を保証する仕組みです。
ツール使用

第3章のNo.20で概念を扱いました。APIでの形はこうです。
- リクエストの
toolsに、道具の名前・説明・引数の形式を書いて渡す - Claudeが
tool_useのブロックを返す。「この道具を、この引数で」 - こちらのコードが実行する
- 結果を
tool_resultとして送り返す - Claudeがそれを見て答える、あるいはまた道具を呼ぶ
3番目が自分の責任範囲です。Claudeは実行しません。
道具には2種類あります。クライアント側のツール(自分のコードで実行するもの)と、サーバー側のツール(Anthropic側で実行されるもの。Web検索、Webページ取得、コード実行など)。後者は結果がそのまま返ってくるので、実行のコードが要りません。
この往復を自分で書くのが面倒なら、Tool Runnerという仕組みがSDKにあり、実行と送り返しを自動でやってくれます。
構造化出力
返答が必ず指定したJSONの形になる仕組みです。これが実務では効きます。
「JSONで返して」とプロンプトで頼む方法は、たいてい動きますが、たまに崩れます。前置きの文が付く、末尾にコードブロックの記号が残る、フィールドが抜ける。1万件処理すると、必ず何件か壊れます。
構造化出力を使うと、そこが保証されます。
from pydantic import BaseModel
class Quote(BaseModel):
company: str
item: str
unit_price: int
due_date: str
response = client.messages.parse(
model="claude-opus-5",
max_tokens=1024,
messages=[{"role": "user", "content": "この見積書から抜き出してください..."}],
output_format=Quote,
)
print(response.parsed_output)
パースのエラー処理も、再試行も要りません。見積書の仕事をAPIで組むなら、ここが中心になります。
TypeScriptならZodで同じことができます。
似た機能に「厳密なツール使用」があります。こちらは道具の引数のほうを保証します。使い分けは単純です。
| 何を保証するか | |
|---|---|
| 構造化出力 | 最終的な返答の形 |
| 厳密なツール使用 | 道具に渡す引数の形 |
両方を同時に使えます。
スキーマには制限があります。再帰的な構造、数値の範囲指定(minimum など)、文字列の長さ指定は使えません。オブジェクトには additionalProperties: false が必須です。
もう1つ、実務で効く注意。新しいスキーマの初回はコンパイルの時間がかかります。結果は24時間キャッシュされるので、同じスキーマを使い回す設計にしてください。
そのほか
思考の深さ。込み入った推論では既定で深く考えます。思考のトークンは出力として課金されるので、単純な処理では下げられます(No.53)。
Web検索。サーバー側のツールです。第2章のNo.18で書いたとおり出典が付きます。1,000回あたり10ドルが、トークン代とは別にかかります。
Webページの取得。こちらは追加料金なしで、取得した内容のトークン代だけです。
ファイル。画像やPDFを繰り返し使う場合、Files APIにアップロードしてfile_idで参照できます。毎回の送信量が減ります。第2章のNo.17で書いた画像の制限は、APIでも同じです。
やってみよう:構造化出力で見積書を処理する(5分)
手元のPDFか画像を1枚用意してください。
プロンプト
“`
Claude APIを使って、添付した書類から次を抜き出すPythonスクリプトを
書いてください。・日付、相手先、金額
・構造化出力(output_format)を使って、形を保証すること
・読み取れない項目は空文字ではなく null にすること
・スキーマは使い回せるよう、別の変数に切り出すこと実行はまだしないでください。コードだけ見せてください。
“`期待される結果:スキーマが定義され、
messages.parseが使われている。読み取れない場合の扱いが型に反映されている。うまくいかないとき:プロンプトで「JSONで返して」と頼む形になっていたら、それはこのページで避けたい書き方です。
output_formatを使うようにと足してください。
つまずきポイント
JSONをプロンプトで頼む。動きますが、量が増えると壊れます。構造化出力を使ってください。
スキーマを毎回変える。コンパイルのやり直しとキャッシュの無効化が起きます。使い回す形に。
ツールの実行を忘れる。tool_use が返ってきたら、こちらが実行して送り返すまで完結しません。
サーバー側ツールの追加料金を見落とす。Web検索には別料金があります。
まとめ
- ツール使用は往復。実行するのはこちらのコード
- 構造化出力で返答の形が保証される。量が増えるほど効く
- スキーマは使い回す。初回はコンパイルの時間がかかる
- Web検索にはトークンとは別の料金がある
次に読む
※本記事の情報は 2026年8月時点のものです。