第4章 · Advanced Claude API

JSON / 構造化出力

Structured Output (JSON)
→ で次のスライド · F でフルスクリーン · N で講師ノート · Esc で終了

重要キーワード

Structured Output
構造化出力
JSON など機械可読フォーマットで結果を返させること
JSON Schema
JSONスキーマ
JSON の形を定義する仕様
Pydantic
ピダンティック
Python の型付き検証ライブラリ

JSON / 構造化出力

API 連携や DB 投入には 正確な JSON が必要です。 Claude に JSON を返させる定石を見ていきましょう。

方法 1: Tool Use の入力スキーマを利用

最も信頼性が高い方法。Tool Use の input_schema は JSON Schema なので、 ツールを「定義 → 呼ばせる → input をそのまま使う」と確実に構造化されます。

出力: Drive `/team-folder/output-YYYY-MM-DD.md`

方法 2: プロンプトで JSON 指示

シンプルな場合はプロンプトだけで OK。

出力: 新ブランチ `cw/<task-id>` に commit → PR 作成
PR title: "[クラウド版 Claude Code] React 17→18 migration"
PR body: 何をしたか + 変更ファイル一覧 + テスト結果

temperature=0 を併用するのが安定です。

方法 3: assistant プレフィックスを使う

API は messages の最後に {"role": "assistant", "content": "{"} を入れると JSON の { の続きから生成 させられます。

出力: #updates チャンネルに「完了。サマリ: ... 詳細: <Drive リンク>」

返ってくる文字列の先頭に { を付けて json.loads すれば安全に解析可能。

Pydantic で検証

from pydantic import BaseModel

class Meeting(BaseModel):
    title: str
    date: str
    attendees: list[str]

m = Meeting.model_validate(data)

検証エラー時は 再試行ループ に乗せるのが堅牢な実装です。

失敗パターン

❌ 解説が混ざる: 「以下が JSON です: { ... }」 → 「JSON 以外の文字列を出力するな」を strict に書く / Tool Use を使う

❌ trailing comma で json.loads が落ちる → Tool Use の input は SDK が安全に dict にしてくれる

❌ 配列の数が指定外 → JSON Schema の minItems / maxItems で制約

試す

JSON 抽出をやってみましょう。

▶ JSON 抽出 (Tool Use なし版)
次のメモから JSON を抽出してください。出力は JSON のみ、解説は禁止。 メモ: 5/8 14:00 から 田中・佐藤と週次定例 出力スキーマ: {title: string, date: "YYYY-MM-DD", attendees: string[]

}

Hands-on Exercise

演習: Pydantic 検証付き抽出

次のスキーマで会議メモから JSON を抽出 → Pydantic 検証 → 失敗なら 1 回だけ再試行、するスクリプトを書いてください。

class Meeting(BaseModel):
    title: str
    date: str  # YYYY-MM-DD
    attendees: list[str]
▶ Playground を開いて実行

理解度チェック

3 問のクイズで理解度を確認しましょう。

クイズを開く
🎉

まとめ

お疲れ様でした!