Azure OpenAI Service 18 - 深入探索新版 Azure OpenAI Studio:輕鬆部署多模態模型與高效運用 GPT-4o 和 GPT-4o Mini 以及實作程式串接

OpenAI 陸續推出了 GPT4oGPT4o-mimi 這兩個新的多模態模型,所謂多模態模型指的是這個模型可以同時處理文字和圖片的需求,過去在 Azure 上面會需要使用 GPT-4 Turbo with Vision 這個模型,透過結合 Azure AI Vision 來辨識圖片,現在新的多模態模型就不需要再透過額外的 Azure AI Vision 就可以支援了,後面就來介紹透過新介面的 Azure OpenAI Studio 來部署和實做程式串接。

說明

因為我們要用新版介面 Azure OpenAI Studio 來部署,可以在舊版上面看到切換的按鈕,點下去就可以切換到新版了。

非常推薦使用新版的介面,不僅可以在右上角快速切換不同目錄及同目錄底下多個 Azure OpenAI 資源,部署模型的介面和管理也更方便使用,還可以針對模型的 Token 有一個 UI 介面可以查詢使用狀態。

點選部署的功能,然後點選部署基本模型。

新版介面可以顯示模型的說明,以及上方也可以針對需求來篩選模型,比如下圖就是推斷工作類型的模型,就可以根據需求挑選出適合的模型來部署。

接下來就是輸入模型名稱跟選擇版本,而在部署類型的地方,會根據模型支援的部署類型而有所不同,詳細的差異可以參考微軟官方文件,這邊就選擇全域標準,如果沒有資料落地的需求的話,建立選擇這一個,Azure OpenAI 就會自動分流到多個不同的資料中心,避免單一資料中心吃緊導致回應效率較差。

部署好之後就可以在模型的頁面看到基本的資訊和取得連線的資訊。

在記量的分頁還可以方便察看使用的 Token 數量和狀態。

在風險與安全性的頁面則會顯示根據選擇的內容篩選被過濾掉的請求或回應的狀態,這對於正式上線給使用者使用的服務來說可以檢測是否有被濫用且一直有違規的請求發生。

接下來就用前面介紹過的 OpenAI 官方套件來實做,過去的範例也一直沒有多模態的模型,剛好可以來練習多模態模型需要傳入圖片的時候該如何處理。程式很簡單,比較特別的地方是傳入訊息的時候,透過 ChatMessageContentPart 來設定一個訊息有多個部分,包含了我們的檔案或是圖片等。

void Main()
{
	var client = new AzureOpenAIClient(
		new Uri("https://{Your Account}.openai.azure.com/"),
		new AzureKeyCredential("{Your Api Key}")).GetChatClient("{Your Model Name}");

	string imageFilePath = @"{Image Path}";
	using Stream imageStream = File.OpenRead(imageFilePath);
	BinaryData imageBytes = BinaryData.FromStream(imageStream);

	List<ChatMessage> messages = [
		new UserChatMessage(
				ChatMessageContentPart.CreateTextMessageContentPart("請描述後面的照片"),
				ChatMessageContentPart.CreateImageMessageContentPart(imageBytes, "image/png"))
	];

	ChatCompletion chatCompletion = client.CompleteChat(messages);

	Console.WriteLine($"[ASSISTANT]:");
	Console.WriteLine($"{chatCompletion.Content[0].Text}");
}

我用了之前 Dalle 模型產生的圖片來作為範例,讓模型來辨識內容。

結果如下:

跟之前一樣拿表格來請模型取出內容,提示詞為:請取出圖片中表格的內容。

而回應也正確的取出了內容了。

在模型的費用上比起之前 GPT4 還要來的便宜,而輕量化的 GPT4o-mini 更是便宜許多,在開發跟情境上不需要到那麼大的模型的話,目前來說 GPT4o-mini 會是最推薦的模型了,便宜又好用。

結論

最近微軟 Azure OpenAI 更新了不少新東西,包含了最新的模型和新版 Azure OpenAI Studio ,剛好透過這篇文章一起介紹,接下來應該也會推出更新更好用的模型,後續應該會開始針對一些應用來實做一些有趣的情境,單純模型部署跟串接應該不會有太大的變化了,就不會特別針對新模型來介紹。

參考資料