昨天的分享提到了Saas服務的選項,然後今天則是會跟大家分享關於純開發的評估與可能的做法,分別從服務以及實作的選項各別檢視和說明。
再過去幾天的分享文章有提到OpenAI的服務,然後也有提到再導入服務的時候需要考量是否有商業版或者是資料隱私的問題,這個部分會先介紹Azure OpenAI,藉此讓大家能夠在公司內部評估的時候多一個選擇。
Azure OpenAI Service 提供了對 OpenAI 強大語言模型的 REST API 訪問,包括 GPT-4、GPT-35-Turbo 和 Embeddings 模型系列。這些模型可以輕易地適用於包括但不限於內容生成、摘要、語義搜索和自然語言到代碼轉換的特定任務。
那....他跟OpenAI有什麼差異呢?
Azure OpenAI 服務結合了 OpenAI 的先進語言 AI 模型和 Microsoft Azure 的安全及企業級承諾,並提供私有網絡、區域可用性和負責任的 AI 內容過濾,而 OpenAI 主要是提供 AI 模型和 API,而未包含 Azure 提供的安全和企業級功能。參考資訊
而要使用OpenAI API比較不同的是需要就服務提出申請(填寫的申請單連結),然後有幾個欄位需特別留意像是Azure訂閱的部分,若公司內部有依照訂閱區分開發環境和正式環境,就需要選擇不只一個的訂閱選項(如下圖)。
在送出申請後等待幾天完會收到開通的通知,然後接續就可以到先前申請訂閱用戶下的Azure OpenAI服務建立資源,然後若需要透過UI介面的功能測試這個模型可以到Azure OpenAI Studio。
在建立資源的時候如果後續提供的服務比較多人使用,這時候需要特別留意一下每個資源的地區(簡單來說每建立一個資源等同會使用某一個國家的伺服器),關於這方面的計價或者是資源的限制可以參考Model summary table and region availability,裡面包含了每個模型可以在哪一些地區建立、當前哪一些地區需求量高無法建立或者是有哪一些模型之後會被棄用。
在概念上沒有太大的差異,然後當完成前面的申請與前置作業的設定後,在開發的環節主要有兩種實踐的做法分別為SDK串接以及Restful API,那REST API和SDK在開發上的主要差異包括
上述提到的SDK和REST API可以參考Quickstart: Get started generating text using Azure OpenAI Service快速上手。
當使用.NET作為後端的服務或者是MVC的方式開發的話,已經建立好的專案可以透過指令安裝SDK,並且確認Azure OpenAI的識別資訊後再搭配範例程式碼就可以看到實作的結果。
using Azure;
using Azure.AI.OpenAI;
using static System.Environment;
string endpoint = GetEnvironmentVariable("AZURE_OPENAI_ENDPOINT");
string key = GetEnvironmentVariable("AZURE_OPENAI_KEY");
// Enter the deployment name you chose when you deployed the model.
string engine = "text-davinci-003";
OpenAIClient client = new(new Uri(endpoint), new AzureKeyCredential(key));
string prompt = "When was Microsoft founded?";
Console.Write($"Input: {prompt}\n");
Response<Completions> completionsResponse =
await client.GetCompletionsAsync(engine, prompt);
string completion = completionsResponse.Value.Choices[0].Text;
Console.WriteLine($"Chatbot: {completion}");
總結今天分享的資訊,如果企業內部已經有使用Azure的服務,並且對於資料上的保護有比較在意的話,那使用Azure OpenAI個人認為是一個不錯的選擇,另外在建立資源的過程中也可以更加彈性的規劃。
除此之外由於微軟有投資OpenAI,所以未來只要有模型的升級或者是客製化的服務,在Azure OpenAI也可以使用的到。