構造化出力:JSON / Function Calling

AI Navigate Original / 2026/5/16

共有:

要点

  • アプリは自由文でなく機械処理可能な構造化出力が必須
  • スキーマ JSON か Function Calling、実行は自前
  • スキーマ検証・余計な文禁止・列挙固定・引数検証
  • 検証+再試行、Function Calling は意図受領で実行ではない

アプリにAIを組み込むとき、本当に欲しいのは「読み物としての文章」ではなく、そのままプログラムが処理できるデータです。`{"name":"…","amount":1200}` のような決まった形で返ってくれば、画面に表示したり、DBに保存したり、次の処理へ渡したりできます。これを実現するのが構造化出力(Structured Output)Function / Tool Calling。本稿では、2026年時点の仕組みと、実務で壊れない設計の勘所を整理します。

自由文の回答 スキーマ で型を固定 { "name": "田中",   "amount": 1200 } 機械処理できるデータ

FIG.1 スキーマ(型の設計図)を渡すと、出力の「形」を固定できる

01「自由文」と「構造化出力」は別物

チャット画面で人間が読む答えは、文章として自然であれば十分です。ところがアプリの中でAIを使うときは、答えの一部を確実に取り出せることが必要になります。たとえば領収書の写真から「店名」「金額」「日付」を抜き出して経費精算フォームに入れる場面では、AIが「だいたい1,200円くらいでした」と書いてくれても困ります。プログラムが読むのは "amount": 1200 のような決まった形です。

そこで使うのが、出力の型(スキーマ)をあらかじめ定義し、その形で返させる仕組みです。何を必須にするか、各項目は文字列か数値か、選べる値は何か——これを設計図として渡します。

022つの代表的な手段

構造化を実現する道具は、大きく次の2つに整理できます。役割が違うので、目的で選びます。

JSON 構造化出力Function / Tool Calling
欲しいのは「整ったデータ」欲しいのは「どの操作を・どんな引数で呼ぶか」の意図
抽出・分類・要約をJSONで受け取る外部API・DB・社内関数を呼ぶ前段に使う
例:領収書→{店名, 金額, 日付}例:天気を聞かれたら get_weather(city="東京") を提案
返ってくるのはデータそのもの返ってくるのは「呼び出しの提案」。実行は自前のコード

大事なのは、Function Calling はAIが関数を実行するわけではないという点です。モデルは「この関数を、この引数で呼ぶとよさそう」という意図を返すだけ。実際に呼ぶかどうか、その引数が安全かは、受け取ったあなたのコードが判断します。

続きを読むには無料登録が必要です

アカウントを作成すると、オリジナル記事の全文をお読みいただけます。