實用工具
輸入
結果
結果會顯示在這裡。結構化輸出和函式呼叫都需要一份 JSON Schema,而替層層巢狀的 API 回應手寫 Schema 既慢又容易寫出細微的錯誤。貼上一份真實範例——最好是包含多筆紀錄的陣列——就能拿到 Schema。推斷時會合併看到的每一個樣本:某筆紀錄缺少的鍵會變成選填,有時是 null 的值會變成可為 null,一律是 ISO 時間戳記的欄位會標上 format: date-time。開啟嚴格模式後,結果會改寫成 OpenAI Structured Outputs 能接受的子集。
它是怎麼運作的
- 推斷邏輯是本工具自己寫的,沒有用 quicktype,因為它產生的 Schema 會把巢狀物件藏在依猜測型別命名的 $ref 定義後面,不適合直接貼進函式定義。
- $schema 可選 2020-12 或 draft-07;物件一律以內嵌方式寫出,所以除了這一行,兩種版本的內容完全相同。
- 嚴格模式會把所有屬性列進 required、把選填屬性改成可為 null、替每個物件加上 additionalProperties: false,非物件的根會包到 items 鍵底下,OpenAI 文件沒列出的 format(例如 uri)會被移除。
你的資料去了哪裡
哪也沒去。本工具完全在你的瀏覽器裡執行:你貼上的文字由頁面處理,不會傳輸到任何伺服器,也不會寫進任何紀錄。
本工具免費且免登入,執行結果只存在於你目前的頁面裡,不會被儲存到任何地方。
它要花多少
本工具完全免費,不需要登入,也不消耗點數。
常見問題
- 某個欄位幾乎每筆紀錄都有,為什麼還是選填?
- 因為至少有一個樣本缺了它,而 Schema 描述的是你的資料實際的樣子。如果這個欄位確實必填,那麼缺了它的那個樣本本身就是問題所在。把那筆紀錄從輸入中刪掉再重新產生,或事後手動把它加進 required。
- OpenAI 嚴格模式有哪些要求?
- 每個屬性都必須出現在 required 裡,每個物件都要把 additionalProperties 設為 false,根必須是物件,不能是陣列或 anyOf。選填的值以包含 null 的型別來表達。字串 format 只支援 date-time、date、time、duration、email、hostname、ipv4、ipv6 和 uuid,所以本工具在嚴格模式下會移除 uri。
- 嚴格模式為什麼對空陣列回報錯誤?
- 空陣列無法讓推斷得知任何元素型別的資訊,而嚴格模式不接受什麼都允許的 items。在範例的這個陣列裡放一個真實的元素,再執行一次即可。非嚴格模式下,這種陣列會寫成不限制元素型別的 items。
背後的開源專案
本工具是獨立實作,並未打包第三方函式庫。glideapps/quicktype(Apache-2.0)在程式碼層面做的是同一件事——如果你需要在自己的程式裡實作它,從那裡開始,而不是呼叫一個網頁。
glideapps/quicktype也常被稱作
- json schema 產生器
- json 轉 json schema
- json schema 線上產生
- 結構化輸出 schema
- function calling 參數定義
- openai strict 模式