第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]
🎉
まとめ
お疲れ様でした!