實作指南 / 8 分鐘
把 Schema 當成使用者體驗
可靠形狀仍需要 refusal、validation 與 domain checks。
Structured Outputs 能讓回應遵守指定 JSON Schema,消除一類 parsing failure;但不代表值真實、有用、被授權或可以安全套用。
A
工作原則
形狀不等於真相
Schema adherence 驗證結構;domain validation、來源與 business rules 才決定可否接受。
Refusal 是一級狀態
安全拒絕不一定符合 application schema;要有獨立 UI 與 control-flow branch。
契約需要版本
替 schema 命名版本並明確 migration;prompt 修改不能默默重定義 production data。
B
實地程序
- 01
從 consumer 開始
只寫下一個 application step 真正需要的最小 object。
- 02
限制模糊空間
使用 enums、required keys、bounds 與 descriptions;已知清單不要用無界 map。
- 03
處理所有 terminal states
分開 valid output、refusal、incomplete、transport error 與 local validation failure。
- 04
套用 domain validation
解析後檢查 identifiers、dates、permissions、totals、references 與 cross-field invariants。
- 05
用 fixtures 評估
保留代表性輸入,在改 prompt 或 model 前同時檢查 schema 與 task quality。
PASS / FAIL
驗收清單
- Schema 有明確 version。
- Refusal 有產品狀態設計。
- Parsing 後會執行 business invariants。
- Fixtures 涵蓋正常、邊界、對抗與拒絕。
WATCH / REJECT
失敗模式
- 把 parse success 當 correctness。
- 為避免失敗把每欄都設 optional。
- 只依第一份 sample 設計 schema。