iT邦幫忙

2024 iThome 鐵人賽

DAY 26
0

我想大多數開發者都聽過 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

Azure AI Studio 是一個建置 AI 應用程式的平台,提供了許多功能來幫助開發者進行整個開發週期,從構思、建構到部署和管理,並支援聊天、內容生成、資料分析等功能。

Azure AI Studio 的一些主要功能

  1. 模型選擇:Azure AI Studio 提供了廣泛的 API 和模型選擇,包括 Azure AI 服務、Azure OpenAI 服務以及模型目錄。開發人員可以根據自己的使用案例選擇最適合的服務和模型。
  2. 模型基準測試:AI Studio 提供模型基準測試功能,讓開發者可以根據關鍵指標(如準確性、一致性、流暢度和相似度)評估不同模型的效能。
  3. 提示目錄:為了幫助開發者更好的利用生成式 AI 模型,AI Studio 提供了一個提示目錄,其中包含各種常見使用案例的提示範例。
  4. 負責任的 AI 工具:提供一系列工具和最佳實踐,幫助開發者建構安全、可靠和符合道德的 AI 應用程式。
  5. 協作功能:AI Studio 提供了協作功能,允許開發團隊共同建構 AI 解决方案。提供企業級安全性,並允許共用檔案、預先訓練的模型、數據和計算資源。

Azure AI Studio 與 Azure OpenAI 的差異

Azure OpenAI 是 Azure AI 服務的一種,而 Azure AI Studio 則是一個涵蓋範圍更廣的平台,其中包含 Azure OpenAI 服務以及許多其它非 OpenAI GPT 的模型。

  • Azure OpenAI:提供對 OpenAI 強大模型(例如 GPT 和 DALL-E)的存取權,開發人員可以利用這些模型建構各種 AI 應用程式。
  • Azure AI Studio:是一個更全面的平台,為開發人員提供端到端的 AI 開發體驗。它不僅包含 Azure OpenAI,還提供其他 Azure AI 服務、模型目錄、模型基準測試、提示目錄、負責任的 AI 工具以及企業級生產環境部署等功能。

https://ithelp.ithome.com.tw/upload/images/20241009/20126569kphHlQ6aJa.png

Azure AI Inference SDK

提供統一且一致的介面,讓開發人員能夠在不變更基礎程式碼的情況下,取用由各種模型(包括在 Azure AI Studio 中部署的模型)產生的結果,輕鬆地在不同的基礎模型之間切換。這種方法簡化了開發流程,減少了程式碼維護的工作量,並讓開發人員可以專注於建構應用程式的核心功能。雖然 Azure AI Inference 定義了一組通用的模態和參數,但某些模型可能具有 API 規範之外的額外功能。 為了因應這種情況,允許開發者將模型特有的參數作為額外參數傳遞。Azure AI Inference 目前支援特定模型,這些模型部署為無伺服器(serverless)和可受控端點(VM)。 開發人員可以從模型目錄中部署任何受支援的模型,並使用完全相同的程式碼來開發LLM 生成式應用。

部署模型服務 - 以無伺服器(serverless)為例

https://ai.azure.com 進入 Azure AI Studio,當然前題是要有Azure訂閱。

  • 從模型目錄選擇所需要的模型,Azure AI Studio 有著相當多的模型,例如 hugging face 、meta、microsoft 等。
  • 模型決定後進行部署,過程中會建立"專案"用於管理各種工具及服務。

本文內容只需要部署模型即可,其它工具不涉及。而我選擇部署 Meta-Llama-3-8B-Instruct 模型。
https://ithelp.ithome.com.tw/upload/images/20241009/20126569mZfNNHWfNB.png

Semantic Kernel 整合 Azure AI Inference

首先 Semantic Kernel 已實作了平台服務的連結器,只不是它並沒有直接附掛在 Semantic Kernel 套件。

  • 安裝 Microsoft.SemanticKernel.Connectors.AzureAIInference
dotnet add package Microsoft.SemanticKernel.Connectors.AzureAIInference
  • 建立 Kernel 物件
    加入了 AddAzureAIInferenceChatCompletion (在dotnet add package Microsoft.SemanticKernel.Connectors.AzureAIInference套件裡)。目標端點以及API-Key可以在部署功能裡找到所部署的模型,進入模型詳細資料即可找到。
var kernel = Kernel.CreateBuilder()
            .AddAzureAIInferenceChatCompletion(
                endpoint: new Uri(Config.azure_ai_endpoint),
                apiKey: Config.azure_ai_apiKey)
            .Build();
  • 取得 IChatCompletionService 實作
    由於kernel配置了AddAzureAIInferenceChatCompletion連結器,因為便可以取得實作 IChatCompletionService 介面的 Azure AI Inference 服務。
var ChatCompletionService = kernel.GetRequiredService<IChatCompletionService>();
  • 建立 system Prompt以及ChatHistory物件
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 的優勢!


上一篇
LLM 別再亂來!收服 Prompt 和 Plugin Function
下一篇
RAG 篇章 - 向量概念
系列文
Semantic Kernel 的魔力-用.NET探索生成式應用30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言