我想大多數開發者都聽過 Azure OpenAI (又稱AOAI),但應該比較少開發者聽過 Azure AI Studio 以及 Azure AI Inference SDK,而知道 Semantic Kernel 可以整合 Azure AI Inference SDK 可能又更少了。所以本篇就來好好介紹一下 Azure AI Studio、Azure AI Inference SDK。
Azure AI Studio 是一個建置 AI 應用程式的平台,提供了許多功能來幫助開發者進行整個開發週期,從構思、建構到部署和管理,並支援聊天、內容生成、資料分析等功能。
Azure AI Studio 的一些主要功能
Azure OpenAI 是 Azure AI 服務的一種,而 Azure AI Studio 則是一個涵蓋範圍更廣的平台,其中包含 Azure OpenAI 服務以及許多其它非 OpenAI GPT 的模型。
提供統一且一致的介面,讓開發人員能夠在不變更基礎程式碼的情況下,取用由各種模型(包括在 Azure AI Studio 中部署的模型)產生的結果,輕鬆地在不同的基礎模型之間切換。這種方法簡化了開發流程,減少了程式碼維護的工作量,並讓開發人員可以專注於建構應用程式的核心功能。雖然 Azure AI Inference 定義了一組通用的模態和參數,但某些模型可能具有 API 規範之外的額外功能。 為了因應這種情況,允許開發者將模型特有的參數作為額外參數傳遞。Azure AI Inference 目前支援特定模型,這些模型部署為無伺服器(serverless)和可受控端點(VM)。 開發人員可以從模型目錄中部署任何受支援的模型,並使用完全相同的程式碼來開發LLM 生成式應用。
從 https://ai.azure.com 進入 Azure AI Studio,當然前題是要有Azure訂閱。
本文內容只需要部署模型即可,其它工具不涉及。而我選擇部署 Meta-Llama-3-8B-Instruct 模型。
首先 Semantic Kernel 已實作了平台服務的連結器,只不是它並沒有直接附掛在 Semantic Kernel 套件。
dotnet add package Microsoft.SemanticKernel.Connectors.AzureAIInference
var kernel = Kernel.CreateBuilder()
.AddAzureAIInferenceChatCompletion(
endpoint: new Uri(Config.azure_ai_endpoint),
apiKey: Config.azure_ai_apiKey)
.Build();
var ChatCompletionService = kernel.GetRequiredService<IChatCompletionService>();
var system_Prompt =
"""
you're a human chatting with a user. You can ask questions, provide information, or just chat.
please provide a response use zh-tw language.
please provide a response use zh-tw language.
please provide a response use zh-tw language.
""";
var chatHistory = new ChatHistory(system_Prompt);
var msg = "圖畫裡,龍不吟虎不嘯,小小書僮可笑可笑。棋盤內,車無輪馬無韁,叫聲將軍提防提防。";
chatHistory.AddUserMessage(msg);
Console.WriteLine($"User: {msg}\n");
var reply = await ChatCompletionService.GetChatMessageContentAsync(chatHistory);
chatHistory.Add(reply);
Console.WriteLine($"Bot: {reply} \n\n");
User: 圖畫裡,龍不吟虎不嘯,小小書僮可笑可笑。棋盤內,車無輪馬無韁,叫聲將軍提防提防。
Bot: 這是一個非常有趣的對聯!對聯是一種中國古典詩歌的形式,通常用來描述兩個不同的景象或情況,並且具有深刻的意義。
在這個對聯中,前半句「圖畫裡,龍不吟虎不嘯,小小書僮可笑可笑」描繪了一幅描畫,龍和虎不會發出聲音,反而是一個小小的書僮(書生)可以笑著。這可能是指在畫中,沒有生命的龍和虎,無法發出聲音,而是書僮的笑聲是唯一的聲音。
後半句「棋盤內,車無輪馬無韁,叫聲將軍提防提防」描繪了一副棋盤的景象,車和馬沒有輪和韁,叫聲將軍需要提防。這可能是指在棋盤中,車和馬的移動是自由的,但是將軍需要注意敵方的攻擊和防禦。
整個對聯的意思可能是,生活中有很多不需要太多的聲音和變化,反而是一些小小的喜悅和注意的事情可以讓我們生活更加美好。
透過 Semantic Kernel,你可以用相同的程式碼來切換不同的服務連結器,像是連接到 Azure AI Studio 部署的模型。Azure AI Studio 提供的模型選擇更多元,不再侷限於 OpenAI 模型。這意味著,你可以利用 Semantic Kernel 實現多模型協作的生成式 AI 應用,且整體程式碼保持一致性。開發者因此可以專注於核心邏輯,不必為了不同模型去處理各種串接語法,這就是 Semantic Kernel 的優勢!