「JSON 模式」是模型 1106 版本中的新功能,主要適用在一些自動化場景中,比起單純使用 Chat Completions API 生成的文字對話,「JSON 模式」可以有效地確保輸出都是使用 JSON 格式,以下使用幾個範例來測試這項功能,完整的程式碼可以查看文末的 GitHub 連結。
模型佈署
本篇將使用美東 2 地區佈署 gpt-4-1106-preview 模型進行測試。
相關連結:區域配額限制
必要條件
- 佈署一個符合上述條件的 Azure OpenAI 資源與模型,並記下模型的佈署名稱
- 使用目前最新的 API 版本:2023-12-01-preview
- 執行以下指令來安裝目前最新的 Python SDK
- 使用以下程式碼完成初始化設定
json_object
JSON 模式的使用方式非常簡單,只需要在原有的 Chat Completions API 中加入參數 response_format={'type': 'json_object'} 即可。
程式執行結果如下:
可以看到程式輸出從原有的純文字變成了 JSON 格式,另外在官方文件中,也建議將「輸出 JSON 格式」做為系統訊息的一部份放入 Chat Completions API 中,以達到更好的效果與減少一些空白輸出的異常狀況。
其他範例
上述是在官方文件中所使用的範例,不免俗的還是要來測試一下 JSON 模式在中文的表現狀況。先從一個簡單的訂票場景開始:
程式執行結果如下:
在這種有明確實體的範例中,效果想當然的好,一些地名:「台中」、「台北」與「高鐵」等關鍵字都有被抓出來,算是一個簡單有效的嘗試。
接著再測試另一個進階一點的範例,這次是一個有開放性問答的對話場景:
程式執行結果如下:
確實輸出結果變得比較不可預期了,有興趣的朋友也可以多重複執行幾次程式,會發現在這種沒有明確結果或實體的對話中,執行輸出的變動性就會增加許多。
總結
整體來說,以目前的「JSON 模式」還是僅適合放在一些簡單且有明確實體的應用中,對於較複雜,甚至是想再整合一些後續動作的系統來說,「JSON 模式」的不可預期性還是太高。
「JSON 模式」與「可重現的輸出」兩項功能目前看起來都還算半成品,不過確實都符合實際應用的場景,在可見的未來中,兩項功能勢必可以互相搭配來做到真正的自動化應用,期待在後續的改版裡兩項功能都可以再持續精進!
留言
張貼留言