Agentic Research

Structured Output(結構化輸出)

又稱:結構化輸出 · JSON 輸出 · JSON mode · schema 輸出 · 結構化回應

要求模型不回自由文字,而是回一段符合你指定格式(通常是一個 JSON schema)的資料,讓下游程式能直接解析、不用再猜。

你會在什麼時候遇到它

任何「AI 之後要接自動化」的場景都靠它。模型回一段散文,你的程式沒法可靠地取出欄位;回一個結構固定的 JSON,才能直接存進資料庫、觸發下一步。沒有它,AI 的輸出就停在「給人看」,進不了「給機器用」。

打個比方

像點餐。自由文字是客人用說的:「我要那個辣的、不要蔥」,廚房得猜。結構化輸出是一張固定欄位的點餐單:辣度=中、加蔥=否,廚房照單做,不會錯意。差別不在內容,在「格式是否固定到能自動處理」。

最小範例

// 你要的 schema(簡化):
{
  "type": "object",
  "properties": {
    "company": { "type": "string" },
    "revenue_million": { "type": "number" },
    "is_profitable": { "type": "boolean" }
  },
  "required": ["company", "revenue_million", "is_profitable"]
}

// 模型被約束後回的東西(可直接 json.loads 解析):
{ "company": "某科技公司", "revenue_million": 25000.5, "is_profitable": true }

看兩個地方。第一,required 列出「一定要有」的欄位,模型不能漏。第二,每個欄位有 type,所以 revenue_million 一定是數字(不會回「約兩萬五」這種沒法算的文字)。下游程式因此可以放心解析,不用寫一堆容錯。

最常搞錯的地方

  • 只在 prompt 裡寫「請回 JSON」就以為穩了。模型仍可能加解釋文字、用錯引號、漏欄位。要可靠,得用 API 的 JSON mode/structured output 功能或 schema 約束,並在程式端再做一次校驗。
  • 以為結構化輸出等於「內容正確」。它只保證格式對(是合法 JSON、欄位齊全),不保證裡面的數字是真的。模型照樣能把一個編造的數字,規規矩矩地填進正確的 schema。

相關詞條

下一步