營運與維護 · 實作指南
客戶沒提電話,不等於讓 AI 刪除電話
辨別 JSON Merge Patch 的省略、null 與陣列取代語意,避免把未知資料變成刪除指令。
AAHouse 原創解說影片,採用 AI 輔助概念畫面、合成旁白及原創音樂。
英文逐字稿 · 簡體中文普通話逐字稿 · 台灣華語逐字稿 · 澳門粵語逐字稿
一張交班便條
設想一家美國腳踏車維修店:客戶說“請把取車備註改成星期五下午”,AI 便生成客戶資料更新。舊資料裡還有聯絡電話。危險不在備註寫得是否流暢,而在工具把“沒提到電話”編碼成了什麼。以下是虛構的變更評審,不是客戶事故或實測成果。

- 客戶只改取車備註
- 舊記錄仍有聯絡電話
- 先看變更含義,再看文案
已接受的區域說明圖重繪,並非未經修改的原始截圖。
候選甲:沒有 phone 欄位
如果介面明確採用 JSON Merge Patch,補丁只寫 pickupNote,而不包含 phone,原電話成員保持不變。[1] 我們建議模型先輸出“修改備註、保留其他欄位”的業務意圖,再由確定性程式碼生成允許的欄位。不要為了讓物件看起來完整,把未提到的值補成 null。

- 補丁:只包含 pickupNote
- phone 未出現
- 結果:原電話保持不變
已接受的區域說明圖重繪,並非未經修改的原始截圖。
候選乙:phone 為 null
同一協定中,{"phone":null} 的含義是移除現有 phone 成員,不是“我不知道電話”。[1] 因此,抽取階段的未知狀態不能直接複用為寫入補丁。刪除電話應有明確的使用者意圖與相應權限;“語法合法”不等於“業務獲准”。

- 補丁:{"phone": null}
- 合併修補格式中的 null → 移除成員
- 未知資訊 ≠ 刪除指令
已接受的區域說明圖重繪,並非未經修改的原始截圖。
還有一張容易誤讀的清單
客戶若說“加上週末可聯絡標籤”,也別讓 AI 直接提交只含新標籤的陣列。Merge Patch 對陣列採用整組取代,不是按項目追加。[1] 評審應展示更新前後完整清單,以及將消失的項目;若介面有專用追加操作,先核實它的實際規格約定。

- 原清單:[維修提醒, 郵件聯絡]
- 提交:[週末聯絡]
- 整組取代:舊專案不再保留
已接受的區域說明圖重繪,並非未經修改的原始截圖。
先核對門牌,再解釋便條
這些規則只適用於已確認採用該格式的介面。JSON Patch 是另一種格式,以有序的 add、remove、replace 等操作表達更改。[2] 不能因為請求方法都是 PATCH,就把兩者混用。記錄實際 Content-Type、供應商文件與欄位約束;若業務確實要儲存 null,也應確認協議能清楚表達該需求。

- Merge Patch:物件描述變更
- JSON Patch:有序操作清單
- 同為 PATCH,不代表相同語意
已接受的區域說明圖重繪,並非未經修改的原始截圖。
給交班人一張驗收單
建議用合成客戶資料演練四種輸入:未提及、明確刪除、空字串和新清單。預先寫好期望差異,檢查最終序列化請求,再在隔離環境讀回結果。我們的驗收目標是“未提及不變、刪除有據、清單無意外遺失項目”,不是讓 JSON 驗證器只亮綠燈。這裡給出測試方案,並未替你在業務系統執行。

- 輸入:未提及 / 刪除 / 空字串 / 清單
- 核對:意圖 → 序列化請求 → 結果
- 通過:無意外刪除或遺失項目
已接受的區域說明圖重繪,並非未經修改的原始截圖。
把“不知道”留在讀取端
給團隊的最終約定可以很短:讀取時允許“未知”,寫入時必須說清“保留、設定、移除”。相關的缺值處理見 AAHouse《缺少欄位需要工作流程》;本篇補上寫入端的語意檢查。模型越容易生成結構化輸出,這一道業務翻譯就越值得明確。

- 讀取狀態:已知 / 未知
- 寫入意圖:保留 / 設定 / 移除
- 負責人審核差異,不只審核句子
已接受的區域說明圖重繪,並非未經修改的原始截圖。