前面介紹了如何申請和建立服務以及建立模型的部署,都完成之後,我們就可以正式的來使用 OpenAI 了,本文將會透過 Azure OpenAI Studio 來測試我們建立的模型部署,Azure OpenAI Studio 是微軟針對 OpenAI 提供的 GUI 介面,讓我們可以方便快速的測試和使用 OpenAI,在測試完成之後後續可以再透過 API 來整合或是開發相關的應用,就可以加快驗證想法的可行性和調整 Prompt 的內容。
實做
我們可以從 Azure OpenAI Service 概觀的上方連結進入 Azure OpenAI Studio 的頁面。

進來之後可以點選 GPT-3 遊樂場 (Playground) 或是下方的 Prompt 範例來測試我們部署的模型。

GPT-3 遊樂場
選擇我們的模型部署以及想要測試的範例,或是自行輸入想測試的 Prompt 來驗證模型回傳的結果。

在畫面中下方可以看到目前送出的 Token 個數,在左邊也有一些參數可以設定,其中比較重要的是溫度和最大長度 (權杖),溫度的值設定的越高結果就會會有隨機性,也就是每次結果會越不容易重複,反之越低就越容易看到重複的答案出現。最大長度 (權杖)則為設定回傳結果最大的長度,設定比較大雖然可以回傳更多的文字,但是因為費用的計算也包含回傳的 Token 數,所以設定太大對於成本上也要負擔較大,所以就根據需求作取捨了。至於其他選項可以參考文字右邊的圖示去察看說明,它們也都會對應到呼叫 API 時候的參數,可以試著調整看看讓模型的回應結果會更符合預期。
我們也可以點選右邊的檢視程式碼,它就會提供範例程式讓我們可以直接複製來用,可惜的是目前僅有 python
、json
、curl
三個選項可以選擇,還沒有提供 C# 的語法範例。

03/26 補充
針對 ChatGPT 和 GPT-4 模型,目前範例程式碼中上面的 API 網址的版本需要注意,需使用 2023-03-15-preview
才可以接收較新的模型資料格式,也才會和 OpenAI API 目前可接受的格式一樣 message 的部分可以用比較結構化的方式來呈現。

ChatGPT 遊樂場
接下來點選左邊 ChatGPT 遊樂場就可以來測試我們部署的 ChatGPT 模型了,一樣我們可以選擇內建的範例,然後再右邊輸入文字之後送出就可以得到結果了,這部分就和我們在 OpenAI 的 ChatGPT 使用聊天機器人一樣。
03/26 補充
GPT-4 模型也會出現在此區內。

要特別說明的是 System message 部分,這邊可以用自然語言設定我們的聊天機器人用途以及功能,以 xbox 這一個客服範例來說,設定了它僅能回覆 xbox 設備相關的問題,底下我們也可以再新增一些回應的範例,設定的越多可以讓結果更符合預期,當然這些設定都是算入 Token 數的,設定的越多結果會越符合預期,但是相對的每次的成本也會越高。右邊我也測試問了 PS5 的價錢問題,的確回應上也不提供 PS5 的答覆,而且回覆的文字也相當符合客服的應對文字。

部署
在部署裡面可以看到我們建立的模型,除了 Azure Portal 外,我們也可以從這邊來建立我們的其它模型,因為設定上跟 Azure Portal 是一樣的,就不多做說明了。

模型
在這邊可以察看目前我們的所有模型和部署狀態,也可以再這邊建立自訂的模型,也就是微調 (Fine-tuned) 模型。

他是精靈的模式,只需要照著步驟輸入相關資訊即可完成。

而訓練資料和驗證資料需要準備 jsonl 格式的檔案。

jsonl 為裡面提供 prompt 和對應的 completion 結果,準備的資料集越多,微調出來的模型也會越符合我們的預期。
{"prompt":"Summary: <summary of the interaction so far>\n\nSpecific information:<for example order details in natural language>\n\n###\n\nCustomer: <message1>\nAgent: <response1>\nCustomer: <message2>\nAgent:", "completion":" <response2>\n"}
{"prompt":"Summary: <summary of the interaction so far>\n\nSpecific information:<for example order details in natural language>\n\n###\n\nCustomer: <message1>\nAgent: <response1>\nCustomer: <message2>\nAgent: <response2>\nCustomer: <message3>\nAgent:", "completion":" <response3>\n"}
最後儲存就可以完成我們的微調模型了。

檔案管理
這邊可以管理在自訂模型所使用的訓練和測試資料集。

結論
透過 Azure OpenAI Studio 可以讓我們提前在開發之前先驗證結果,並透過 GUI 介面來測試參數的調整對於結果的影響,也可以產生呼叫的程式碼範例,這樣後續用 API 開發的時候就可以更快速方便了。