← レッスンに戻る
第3章 · Claude API入門

Files API でファイルを扱う

Files API · 約 10 分

重要キーワード

English日本語説明
Files API ファイルAPI PDF・画像などをアップロードして再利用するためのエンドポイント
file_id ファイルID アップロード後に発行される識別子
PDF Vision PDF視覚理解 Claude が PDF をそのまま画像 + テキストとして読む機能

Files API

長いドキュメント・画像などを 再利用しながらメッセージに添付 したいときは Files API を使います。アップロードすると file_id が発行され、 以降は ID で参照できるためトークンとネットワーク帯域を節約できます。

用途

アップロード

from anthropic import Anthropic
client = Anthropic()

with open("report.pdf", "rb") as f:
    file = client.files.create(
        file=("report.pdf", f, "application/pdf")
    )
print(file.id)  # 'file_01ABCD...'

メッセージに添付

msg = client.messages.create(
    model="claude-sonnet-4-6",
    max_tokens=1024,
    messages=[{
        "role": "user",
        "content": [
            {"type": "document", "source": {"type": "file", "file_id": file.id}},
            {"type": "text", "text": "この PDF の要点を 5 つにまとめてください。"},
        ],
    }],
)

PDF は Claude Vision によりテキスト+レイアウト+画像として理解されます。 スキャン PDF (画像のみ) でもある程度読み取れますが、品質は元の解像度次第。

サポートされる主な形式

ファイルの管理

# 一覧
for f in client.files.list():
    print(f.id, f.filename, f.size_bytes)

# 削除
client.files.delete(file.id)

コストの考え方

Tip: 巨大 PDF はチャンク戦略を併用

200 ページ超の文書だと、毎回フルで添付するとコストが膨らみます。 - 目次 → 必要な章だけテキスト抽出 → 渡す - もしくは RAG (第8章) と組み合わせる

試してみよう (Web 上)

API なしでも、claude.ai に PDF を添付するだけで同じ体験ができます。 コーディング前に Web で挙動を試すのが効率的です。

▶ 添付なしでもイメージ
一般的な企業の四半期決算 PDF を添付したと仮定して、Claude にどんな質問を投げると有用な要約が得られますか?5 つ提案してください。

演習問題

演習 1: PDF 要約スクリプトを書く

ローカルの PDF を Files API でアップロードし、3 行で要約させる Python スクリプトを書いてください。 - CLI: python summarize.py path/to/file.pdf - 結果はコンソール出力 - 終了時に file を削除 (掃除)

スタータープロンプト:
Python スクリプト summarize.py を書いてください。コマンドライン引数に PDF パスを取り、
anthropic SDK の Files API でアップロード → claude-sonnet-4-6 で 3 行要約 → ファイル削除、までを行います。
エラーハンドリングは最低限。20-30 行で。
ヒントを見る

with open(path, 'rb') as f でバイナリ読み込み。client.files.delete(file.id)try/finally で確実に呼ぶと安全です。

理解度チェック

  1. Files API の主な利点は?
    1. ファイルを一度アップして file_id で再利用しトークン節約
    2. GPU を予約できる
    3. API キーが不要になる
    4. OS をアップグレードする
  2. Files API でサポートされない形式はどれ?
    1. PDF
    2. PNG
    3. MP3
    4. JPEG
  3. アップロード済みファイルを削除する SDK 呼び出しは?
    1. client.files.delete(id)
    2. client.files.remove(id)
    3. client.delete(id)
    4. client.purge(id)
解答と解説を見る
  1. A — ID 参照で何度でも添付でき、ネットワーク・トークン両面で効率的です。
  2. C — 音声 (MP3) は直接サポートされません。テキスト/画像/PDF が中心。
  3. A — `client.files.delete(file_id)` で削除します。