Azure OpenAI 在 11 月中也跟上了 GPT-4 模型 1106-preview 版本,其中包含了「可重現的輸出」這項功能,單從字面上理解,明顯就是希望解決大家詬病已久的回覆隨機性問題,以下將使用官方範例來測試這項功能,完整的程式碼可以查看文末的 GitHub 連結。
模型佈署
目前只有 gpt-35-turbo-1106 與 gpt-4-1106-preview 兩個模型中可以使用「可重現的輸出」功能,跟先前釋出新模型的模式一樣,一開始都只有特定幾個區域開放使用,有關模型與地區限制可以查看以下連結。
本篇將使用美東 2 地區佈署 gpt-4-1106-preview 模型進行測試。
相關連結:區域配額限制
必要條件
- 佈署一個符合上述條件的 Azure OpenAI 資源與模型,並記下模型的佈署名稱
- 使用目前最新的 API 版本:2023-12-01-preview
- 執行以下指令來安裝目前最新的 Python SDK
- 使用以下程式碼完成初始化設定
一般的輸出
對於一般的聊天輸出就是使用最常見的 Chat Completions API,不過在新版的 Python SDK 1.x 中寫法略微不同,首先使用 for 迴圈執行相同的提問三次,其中 model 記得修改成模型的佈署名稱,以我這邊為例是使用 gpt-4-1106。
程式執行結果如下:
可以看到順利的輸出了三段故事,但這邊就像平常的輸出一樣,GPT 每次的執行結果都存在隨機性,所以三段故事都不太相同。
可重現的輸出
為了解決這個問題,在這次的更新中允許我們加上一個隨機種子,設計邏輯與其他帶有隨機性的 Python 套件寫法一樣,帶有相同種子的問答可以預期有相同的結果。
加上隨機種子 seed=42 後,程式執行結果如下:
在這次執行中,因為加上了隨機種子 seed=42 的關係,輸出了三段相同的故事。
現實中的限制
以上兩段程式是官方文檔中提供的範例,但事實上這個功能其實沒辦法如預期的每次都得到相同輸出結果,隨意換上一些對話內容
呼叫中已經帶上了隨機種子,但程式執行結果如下:
很明顯輸出不是相同的。
總結
「可重現的輸出」對於程式的除錯來說非常重要,GPT 問世至今相關的系統也因為問答存在隨機性,而無法完整的執行單元測試,以出發點來說這項功能是非常需要且實用的。
不過畢竟還是 Preview 版本的模型與功能,實際上在使用時就算使用了相同的隨機種子,每次回覆還是不盡相同,尤其在回應的句子較長的案例中更為明顯,期待後續對於這項功能的改進!
留言
張貼留言