Azure OpenAI 入門 for .NET

只是玩一下 Azure OpenAI,從建立資源到撰寫程式來呼叫 OpenAI 的 Chat Completions API。



前提:要有 Azure 帳號(可免費試用)。

Step 1: Create an OpenAI Resource

欲撰寫程式來使用 Azure OpenAI 服務,必須先在自己的 Azure 帳戶中建立 OpenAI 資源,並設定一個 deployment 來指定欲使用哪一個訓練模型(例如 gpt-35-turbo、gpt-4 等等)。


首先,登入 Azure 入口網站,選擇建立資源(Create a resource)。然後在搜尋框中輸入 "openai",即可找到建立 OpenAI 資源的地方。(稍後有操作過程的影片連結)


建立 OpenAI 資源時,頁面下方可能會看到如下圖的錯誤訊息:



此訊息告訴我們:Azure OpenAI 目前必須透過一個申請程序,審核通過之後方能使用。此申請程序需要填寫一個線上表單,只要點擊訊息中的連結即可開啟那個線上申請表單。填寫表單時,有些欄位不可填錯,例如你的 Azure 訂閱 ID(subscription ID):



還有你任職公司的 email、地址、電話:


如果沒有填寫正確的公司資料和 email,例如填寫 gmail、yahoo mail 等私人信箱,都無法通過審核


如果你是 Microsoft MVP,在選擇組織類型的時候有對應的選項:


另外還要勾選你需要使用 AI services 提供的哪些功能,例如 Language、Dall-E、Whisper 等等。我不知道怎樣填寫才一定能通過申請,我只是據實填寫。


兩天後,我收到了核准通知的 email。然後我打開瀏覽器,登入 Azure 入口網站,前面圖中顯示的錯誤訊息便消失了,顯示我可以開始建立 OpenAI 資源。


我錄製了一個影片放在 Youtube 上,可大致了解如何建立一個 OpenAI 資源,連結如下:


Youtube 影片:Create an Azure OpenAI Resource

Step 2: Call the API

建立好 OpenAI 資源後,可以從 Azure 網站上找到三個關鍵資訊:


  • OpenAI 的 API endpoint。
  • 呼叫 API 時必須提供的 keys。
  • 預先建立的 OpenAI deployment 的名稱。


下圖顯示的網頁可以找到你申請的 OpenAI 的 API endpoint 以及 keys。密鑰有兩支,任何一支都可以用。




從上圖左方選單點擊 Model deployments 即可得知先前建立好的 OpenAI deployment 名稱,如下圖:




有了上述資訊之後,便可以撰寫程式碼來呼叫 OpenAI 服務了。


A REST Client Example

如果你有使用 Visual Studio Code 和 REST Client 擴充套件,可以直接用以下範例來測試(必須把開頭三個變數替換成你自己的資源和設定):



請注意這裡的 endpoint 並不是先前網頁截圖中顯示的  https://my-demo-ai-app.openai.azure.com/(此 endpoint 會用於稍後的 c# 範例),而是後面有加上 deployment  ID  和 Chat Completions API 路徑的 REST API endpoint:

https://{{RESOURCE_NAME}}.openai.azure.com/openai/deployments/{{DEPLOYMENT_ID}}/chat/completions?api-version=2023-05-15/ 


有關 Chat Completions 的 REST API endpoint 格式與查詢參數,可參考官方文件:Azure OpenAI Service REST API reference: Chat completions


以上範例中,我在 POST request body 的 messages 陣列中加入了兩條訊息:


  • 第一條訊息的角色是 system,表示這是一則 system message,用來預先給 AI 助理一些指示,請她在接下來的回應中按照這個指示來產生回應內容。這裡我給她的指示為:「請用中文回答。」
  • 第二條訊息的角色是 user,表示這是一則 user message,亦即使用者的提問內容。OpenAI 服務會針對這個提問來產生回應。此範例是請 AI 助理說一則關於小狗的笑話。


執行結果如下:



{
  "id": "chatcmpl-89WTdFFwqgeIZG6WNJ0g3mOxhaOb3",
  "object": "chat.completion",
  "created": 1697280485,
  "model": "gpt-35-turbo",
  "choices": [
    {
      "index": 0,
      "finish_reason": "stop",
      "message": {
        "role": "assistant",
        "content": "狗为什么总是追自己的尾巴?因为它们担心自己跑得太快,把自己追上了!"
      }
    }
  ],
  "usage": {
    "prompt_tokens": 25,
    "completion_tokens": 49,
    "total_tokens": 74
  }
}


結果 AI 助理是以簡體中文來回應。在接下來的 C# 範例程式中,我會明確指示她以繁體中文來回應。


A .NET Example

以下範例是以 C# 撰寫的 .NET Console application。寫程式前,需在專案中加入套件:Azure.AI.OpenAI。此套件目前還是 beta 版,故加入套件時必須使用 prerelease 選項。




程式碼如下:


這次我在 system message 中明確指示 AI 助理要同時使用繁體中文和英文來回應(第 17 行程式碼),執行結果如下圖:



如此便可確認 .NET 程式也能順利呼叫 OpenAI 服務。至於那個蝙蝠俠的梗(哏)好不好笑,就不是重點了。


Keep coding!


(此文章已同步發表於新站:Get Started with Azure OpenAI

Reference


沒有留言:

技術提供:Blogger.
回頂端⬆️