結構化輸出:欄位寫死,三十份才合得併
從 Markdown 表格到嚴格 JSON,示範怎樣指定欄位名稱、次序與允許值,為何合併試算表時欄位漂移比內容出錯更難補,以及怎樣處理 JSON 前後多餘說明。
Read in English週五放學後,中四生物科黃老師把全班 32 份實驗報告初評結果貼進試算表,發現七份多了一欄「總評」,五份把「改進建議」寫成項目符號而不是儲存格,還有三份在表格前加了「以下是我的評語」。內容大致可用,她花了 90 分鐘對齊欄位。她對科組說:「問題不在 AI 不懂生物,在於我沒有告訴它欄位長甚麼樣。」
結構化輸出是把 AI 由「寫一段給我看」推進到「連續處理三十份給我合併」。本課是模組四第 15 課,下一課處理圖片與語音輸入時,同樣需要固定欄位。
每次生成都重新決定格式
模型逐字預測時,沒有給輸出規格,它會按「這次怎樣呈現最合理」即興發揮——寫文章是優點,要合併資料是災難。你只說「用表格列出優點與建議」,今次兩欄、下次三欄,合併就要人手對齊。
結構化輸出的本質,是把呈現方式從模型的自由改成你的規格:欄位名稱、次序、每格字數上限、允許值清單,以及「只輸出表格、前後不得有任何文字」。
給人看的表格規格
Markdown 表格適合教師會議、科組紀錄、直接複製到 Google 試算表。關鍵不是漂亮,是第三十一份貼上去仍對齊:
角色:你是[科目]科實驗報告初評助理。
任務:評閱下方報告並輸出單一表格。
輸出格式:Markdown 表格,欄位依序為——學生代號、假設清晰度(1-5)、數據記錄(1-5)、結論邏輯(1-5)、一項優點(一句)、一項改進(一句)、需教師核實(是/否)。
限制:只輸出表格,前後不得有說明;不得增減或重新排列欄位;每格不多於 25 字;分數為 1 至 5 整數。無法判斷的項目,分數留空並把「需教師核實」填「是」。不得重寫學生報告原文。
報告:[貼上內容]
「需教師核實」欄是防呆設計:模型不確定時有地方誠實交代,而不是編數字填滿——與 引用式提示 裡授權「找不到」同一邏輯。
允許值要封閉
「類別」「嚴重程度」「是/否」等欄,把允許值列成清單,並規定無法歸類時用固定的「其他」。否則今次寫「概念不清」、下次寫「理解不足」,統計時變成兩類。
欄位漂移比內容出錯更難補救——錯一句評語你會改,錯一欄位置你要重跑三十份。
給系統看的 JSON
JSON 比表格嚴格:欄位名稱、大小寫、型別都要事先講清。聊天介面教師可靠提示加完整示例;學校要把輸出接進校務系統,應同時使用供應商 structured output(見 sources 連結),由 API 保證符合 schema,而不是只靠運氣。
角色:你是只輸出 JSON 的評卷服務,不與人對話。
任務:按評分準則評閱學生作答,輸出一個 JSON 物件。
輸出格式:只輸出以下結構,欄位名稱與大小寫完全一致:
{
"student_ref": "字串",
"criteria": [
{ "name": "字串", "score": 整數1-5, "evidence": "引自學生原文的一句", "comment": "不多於40字" }
],
"total": 整數,
"needs_teacher_review": true或false,
"review_reason": "字串,若false則填\"none\""
}
限制:只輸出 JSON,前後不得有任何文字;不得省略欄位,無值用約定空值;evidence 必須是學生原文,不得改寫。依據不足時 needs_teacher_review 填 true。
評分準則:[貼上]
學生作答:[貼上]
同一份資料既要開會表格又要存檔時:先要 JSON,再請模型依 JSON 轉表格,數值不得改動。轉換模板見本課 FAQ 所述做法。
處理 JSON 外的多餘文字
即使寫了「只輸出 JSON」,仍可能收到開場白。由易到難:給一整段完整示例;逐項列出禁止的前言、結語、標題、Markdown 圍欄;改用 API structured output。只用聊天介面時,前兩項通常已足夠;接系統時第三項不能省。
容易走歪的地方
- 只寫「用表格呈現」。 每次欄位不同,合併變成對齊地獄。自查:你的提示能否讓同事不看內容就知道有幾欄、叫甚麼?
- 缺值時刪掉整欄或整個 JSON 欄位。 下游程式會直接報錯。自查:是否規定無值時填固定字串或 null,結構保持完整?
- 格式整齊但沒有核實欄。 錯誤被整齊掩蓋。自查:不確定時模型有沒有「需教師核實」可填?限制行是否說明何時填「是」?
動手做一次
時間: 10 至 15 分鐘。
做甚麼: 選你常做的一類批量任務(例如觀課紀錄、學生回饋、問卷開放題整理)。先用「請用表格整理」跑一次;再按上面表格模板寫死欄位名稱、次序、允許值與「需教師核實」,用同一份輸入重跑。
交出甚麼: 兩份輸出;列出第二份比第一份多了哪幾條格式限制,以及若要把兩份貼進試算表,第二份省了多少對齊步驟(可估計分鐘數)。
怎樣算做對: 第二份可直接整段貼上試算表而欄位不漂移;且至少有一格因不確定而標「需教師核實」,代表核實欄在發揮作用。
這一課的重點
- 能夠逐欄寫明名稱、次序與允許值,並在限制行禁止增減欄位。
- 能夠說明固定結構的價值在於「第三十一份怎樣合併」,而不在於表格是否美觀。
- 能夠為 JSON 場景寫出「只輸出物件、無前後文字、缺值用約定空值」三條規則。
- 能夠在輸出中加入「需教師核實」欄,避免模型為填滿表格而編造。
幾條常被問到的問題
因為你只說了「用表格」,沒有列欄位。模型會按內容即興決定欄數與名稱。把欄位與次序寫死,並規定無內容時填固定字串而不是刪欄,合併才自動化。
提示層:給完整 JSON 示例,並逐項列出禁止的前言與結語。系統層:用供應商 structured output 或 JSON mode,由 API 保證符合 schema。兩層一起做,失敗率才適合自動處理。
人看、貼文件、複製到試算表用 Markdown 表格;程式讀取、匯入系統、長期統計用 JSON。兩種都要時,先要 JSON 再請它依同一份 JSON 生成表格,兩邊才一致。
- · 文中的價格、功能與規格以上列官方文檔為準。供應商隨時會改,採購之前請自行覆核一次。
- · 文中提及的產品名稱與商標屬各自擁有者所有。Edor.ai 與該等公司沒有合作、代理或贊助關係。
- · 這是為教育用途做的獨立整理,不是採購建議,也不是法律意見。
- · 凡涉及學生個人資料的用法,請先按學校政策與《個人資料(私隱)條例》(PDPO)評估,然後才在校內推行。