
結構化輸出是讓 AI 按事先規定的欄位與資料形式回覆,方便後續系統讀取與處理。例如同樣是整理訂單,每次都交出日期、品名、數量,比有時寫一段話、有時漏一欄更容易接續整理;但欄位整齊,仍不代表內容一定正確。
下面用一筆餅乾訂單,從表格走到簡短的資料文字。你不需要先懂程式,也能分辨「格式有照規定」和「資料有抄對」是兩件事。
結構化輸出如何把一句訂單變成固定欄位?
「欄位」就是每筆資料要填的項目。假設收到一句話:「我想訂燕麥餅乾 3 盒,下週二送到。」我們想把它整理成日期、品名、數量三欄。這是自製的教學例子,沒有實際呼叫 AI 服務。
| 日期 | 品名 | 數量(盒) |
|---|---|---|
| 待確認 | 燕麥餅乾 | 3 |
這筆資料的日期先不填年月日,因為我們只有這句話,沒有訊息發送日期,還不能確定「下週二」指哪一天。結構化輸出可以保留需要補問的空缺,不必為了把表格填滿而猜日期。

讀懂結構化輸出的三個欄位
AI 工具常使用 JSON 這種文字格式表達資料:每個欄位名稱旁邊放它的值。你可以把下面的內容和剛才的表格對照;它是在描述資料,不是要求你執行程式。
{
"date": null,
"item": "燕麥餅乾",
"quantity": 3
}
date是日期欄。null表示明確的空值,在這個案例代表日期還沒確認。item是品名欄,雙引號中的「燕麥餅乾」是一段文字。quantity是數量欄,3是數字;本例已約定單位是盒。
結構化輸出的用途不是讓人看起來更專業,而是讓接收資料的系統知道要去哪個欄位取值。Google 的相關文件也以指定格式協助擷取與後續處理來說明這項功能。
欄位名稱之外,還要規定怎麼填
只說「請給數量」還不夠精確。系統若需要拿數量做加總,就要知道這一欄接受的是數字,而不是「三盒」這段文字。這種「允許填哪一種值」的規定,叫作資料型別。
結構化輸出會用到的 schema,可以理解成一份欄位規格:有哪些欄位、各欄接受文字或數字、哪些欄位一定要出現。以這筆訂單為例,我們可以約定數量必須是整數,日期欄必須保留,但允許暫時填空值。

「日期欄必須出現」與「日期已經確認」並不相同。JSON Schema 的物件說明也區分了欄位不存在與欄位值為 null。只有規格確實允許空值,結構化輸出填 null 才符合這項約定;它不代表今天,也不表示客人沒有下單。
要求 AI 排整齊,就啟用結構化輸出了嗎?
在聊天視窗說「請只回日期、品名、數量」,可以幫助 AI 按你的要求整理。這是格式指令;不能只因為你寫了這句話,就認定工具已啟用有系統約束的結構化輸出功能。
真正按規格限制輸出,需要工具支援這項功能,並實際啟用對應規則。不同平台支援的規則與複雜程度可能不同,所以使用結構化輸出前,應確認當下工具的說明,不能把某一份範例貼到任何聊天介面就當作相同設定。
對一般使用者而言,可以先分清楚自己的目的:只是把一筆訊息整理成方便閱讀的表格,還是後面有系統必須收到固定欄位?後者尤其需要確認工具提供的是格式要求,還是實際的格式約束。
結構化輸出格式正確,內容仍可能填錯
回到餅乾訂單,假設數量欄被填成 30。它仍是整數,可能通過格式檢查;但原文寫 3 盒,所以內容錯了。若填成 "三盒",意思可能看得懂,卻不符合本例「只收整數」的型別規定。

這就是結構化輸出需要分開做的兩種檢查:一種查欄位與型別是否符合規格;另一種把內容逐欄對回原文。Google 官方文件的限制說明也指出,遵循結構不等於內容在語意上必定正確。
- 確認三個必要欄位都在,數量是允許的整數,日期空值也被規格允許。
- 對照原文,確認品名是燕麥餅乾、數量是 3 盒,沒有看錯或自行增加。
- 向下單者確認實際配送年月日,再補上日期;不要把「待確認」直接當成可出貨日期。
結構化輸出讓資料更容易接續處理,仍要保留這一步來源核對。特別是日期不完整時,固定欄位應幫助你發現缺件,而不是遮住缺件。
先訂填法,再逐欄對回原文
理解結構化輸出,可以從一筆資料練習:先列出要哪些欄位,決定每欄怎麼填,遇到未知資料怎麼表示,最後再核對值是否符合原文。這樣就能看出漂亮格式背後,還有哪些資訊需要確認。
參考資料
資料查核日:2026 年 10 月 3 日。本文談 AI 回覆格式,與網站上的搜尋引擎結構化標記不同;未提供特定聊天產品的操作按鈕或功能保證。



