Claude Agent SDK の構造化出力|AIの答えをJSONで受け取る

公開 更新 著者 永上裕之マルチエージェント
AIが書いたばらばらの文章が、整った表の形に並び直されていくイメージ

この記事の要点

  • 構造化出力は、AI エージェントの最後の答えを、決めた形(JSON Schema)どおりの JSON で受け取る仕組み
  • エージェントは途中でどの道具を使ってもよく、最後に形の確認と作り直しまで SDK がやる
  • 成功の判定は「subtype が success」かつ「structured_output がある」の両方。形はシンプルに保つと失敗しにくい

活用例:問い合わせメールから必要な項目を抜き出して表に入れる

部署
営業・カスタマーサポート
使うもの
Claude Agent SDK
AIに任せる
文面を読んで項目を抜き出す・形をそろえる
人が決める
抜き出す項目の決め方・抜けた時の扱い

AI エージェントの答えは、ふつうは文章で返ってきます。人が読むならそれで十分ですが、表やデータベース、画面に流し込みたいとき は困ります。毎回、文章から必要な所を探して形を整える必要があるからです。

公式ドキュメント「Get structured output from agents」(2026年11月7日確認)にもとづいて、Claude Agent SDK で 答えを決まった形の JSON で受け取る方法 を解説します。SDK の全体像は Claude Agent SDK とは をご覧ください。

結論:欲しい形を先に渡せば、その形で返ってくる

構造化出力では、欲しいデータの形(JSON Schema)を先に渡します。 エージェントは作業の途中で検索やファイルの読み込みなど、どんな道具を使ってもかまいません。最後に SDK が答えを形と照らし合わせ、合っていなければ作り直させ、合格したものだけを返します。

文章で受け取る構造化出力で受け取る
返ってくるもの自由な文章決めた形どおりの JSON
使う前の手間必要な所を探して抜き出す・単位をそろえるそのまま使える
形のぶれ毎回少しずつ違う毎回同じ
向いている使い道会話・説明表・データベース・画面への流し込み

たとえばレシピを調べさせる場合、文章だと「準備15分」を数字に直したり、材料と手順を分けたりする手間がかかります。構造化出力なら prep_time_minutes: 15 のように最初から数字で、材料は材料の一覧として返ってきます。

ばらばらの文章が、決めた形の箱に収まって出てくる流れの図
ばらばらの文章が、決めた形の箱に収まって出てくる流れの図(イメージ)

使い方:output_format に形を渡すだけ

呼び出しのオプションに、次の2つを持った設定を渡します(Python は output_format、TypeScript は outputFormat)。

エージェントが終わると、結果のメッセージに structured_output という項目が付き、そこに形の確認を通った JSON が入っています。

形の書き方は、ふつうの JSON Schema です。文字・数字・真偽・配列・入れ子のオブジェクト、選択肢(enum)、必須の項目(required)、参照($ref)などが使えます。

{
  "type": "object",
  "properties": {
    "company_name": { "type": "string" },
    "founded_year": { "type": "number" },
    "headquarters": { "type": "string" }
  },
  "required": ["company_name"]
}

この例では、会社名だけが必須で、設立年と本社は分からなければ省いてよい形になっています。

注意しておきたい細かい点

Zod・Pydantic で型付きにする

JSON Schema を手で書く代わりに、TypeScript なら Zod、Python なら Pydantic で形を定義できます。こうすると、受け取った結果を型の付いたオブジェクトとして扱え、入力補完や型チェックも効きます。

公式の例では、新しい機能の「実装計画」を、要約・手順の一覧(それぞれの難しさつき)・心配な点の一覧という形で受け取っています。仕事なら、会議の議事録から「決まったこと・担当・期限」を受け取る、といった使い方にそのまま応用できます。

道具を何回使っても、最後は1つの形にまとまる

構造化出力のよいところは、途中の作業は自由なまま、最後の答えだけをそろえられる 点です。

公式の例では、エージェントが次のように動きます。

  1. 検索の道具で、コードの中の「TODO」というメモを探す
  2. コマンドで、それぞれのメモを誰がいつ書いたかを調べる
  3. 結果を「メモの一覧・件数」の形にまとめて返す

書いた人や日付は分からないこともあるので、形の上では 省いてもよい項目 にしてあります。エージェントは分かった分だけ埋めて、残りは空けて返します。自社の処理を道具として足したい場合は、Claude Agent SDK のカスタムツール と組み合わせます。

失敗の見分け方

形に合う答えが作れないこともあります。よくある原因は次のとおりです。

結果のメッセージの subtype を見ると、何が起きたかが分かります。

subtype意味
success形の確認を通った答えができた
error_max_structured_output_retries何回か作り直しても、形に合う答えが残らなかった

ここで大事なのが、「success なのに structured_output が空」という場合もある ことです。作業は終わったけれど、形どおりの答えを出さなかったケースです。公式は、subtype が success で、かつ structured_output がある時だけ成功 とみなし、それ以外はすべて失敗として扱う書き方をすすめています。

また、モデルが途中で切り替わった影響で、できていた答えが取り消されて同じエラーになることもあります。形を直す前に、エラーの一覧で原因を見分けるようにします。

失敗を減らす3つのコツ

公式が挙げているコツは3つです。

コツやり方
形はシンプルに深い入れ子や必須の項目が多いほど満たしにくい。小さく始めて足していく
形を仕事に合わせる情報がそろわないかもしれない項目は「なくてもよい」にする
頼み方をはっきりあいまいな頼み方だと、何を出せばよいか迷う

特に2つ目は、仕事のデータでよく効きます。問い合わせメールから項目を抜き出す場合、電話番号が書かれていないメールもあります。全部を必須にすると、それだけで失敗が増えます。

まとめ

出典

永上裕之

ユニコスクール株式会社 代表取締役。AIエージェント専門のスクール&コミュニティを運営しています。

この記事はAIを使って下書きし、著者が事実確認・加筆しています。ツールの機能や料金は変わることがあるため、最新の情報は各社の公式ページでご確認ください。

関連する記事