上一篇打破迷思示範如何連接 Hugging Face,這一次換成 Google AI 也大丈夫滴。眾所皆知目前除了 OpenAI(Azure OpenAI)之外,另一個強大的 AI 雲平台就是 Google 啦,Semantic Kernel 當然也是理所當然的支援的。Semantic Kernel 就像是總機,可以幫助開發者輕鬆接通各種不同的 AI 服務平台。這次,把它連接到 Google AI,讓你可以利用 Google 的模型來打造屬於你的 AI 應用。
如何用 Semantic Kernel 連接 Google AI?
首先,當然是要有一個 Google Cloud 帳戶!你可以從 Google Cloud Console 註冊並啟動 AI API。然後,當你有了 API Key,接下來就可以用 Semantic Kernel 和 Google AI 開始「神仙組合」了(Google AI 註冊方式網路有許多教學相當容易,這裡就不多介紹)。這裡的流程和你連接 OpenAI 或其他平台的方式類似。Semantic Kernel,建立連接的方式非常簡單,框架會幫助你處理 API 呼叫。只要輸入正確的 API 金鑰和參數,就能讓 Google AI 進行文本生成、問答、翻譯等操作。
首先專案除了原本必要安裝的 Semantic Kernel 套件外,為了連接 Google AI,所以需要再加上 Microsoft.SemanticKernel.Connectors.Google 套件,它是 Semantic Kernel 內建的 Google AI 連接器。
var kernel = Kernel.CreateBuilder()
.AddGoogleAIGeminiChatCompletion(
modelId: "gemini-1.5-flash", apiKey: Config.googleai_apiKey)
.Build();
var chatCompletionService = kernel.GetRequiredService<IChatCompletionService>();
GeminiPromptExecutionSettings settings = new()
{
Temperature = 0.8,
MaxTokens = 1000
};
var chathistory = new ChatHistory("you are a helpful assistant. respond to the user's questions with zh-tw language.");
string? userInput;
while (true)
{
// Collect user input
Console.Write("User > ");
userInput = Console.ReadLine();
if (userInput.Equals("exit", StringComparison.OrdinalIgnoreCase))
{
break;
}
// Add user input
chathistory.AddUserMessage(userInput);
// Get the response
var result = await chatCompletionService.GetChatMessageContentAsync(
chathistory,
executionSettings: settings,
kernel: kernel);
Console.WriteLine("Assistant > " + result);
// Add the message from the LLM to the chat history
chathistory.AddMessage(result.Role, result.Content ?? string.Empty);
}
User > 颱風是如何生成的
Assistant > 颱風的生成是一個複雜的過程,需要滿足幾個條件:
**1. 溫暖的海水:** 颱風需要從海面吸收大量的熱量和水分,而海水溫度至少要達到攝氏26.5度以上才能提供足夠的能量。
**2. 低氣壓系統:** 在海洋表面形成低氣壓系統,空氣會往低氣壓中心流動,形成旋轉的風。
**3. 濕度高:** 高濕度的空氣會釋放潛熱,進一步提供能量給颱風,使它增強。
**4. 弱垂直風切變:** 垂直風切變是指不同高度的風速和方向的差異,如果風切變太大,會破壞颱風的結構,導致它無法發展。
**5. 科氏力:** 地球自轉會產生科氏力,使北半球的颱風逆時針旋轉,南半球的颱風順時針旋轉。
當這些條件都滿足時,一個低氣壓系統就會逐漸發展成颱風。颱風會隨著海洋上的暖濕空氣移動,並吸取更多能量,逐漸增強,最後形成巨大的風暴。
**颱風的發展階段:**
* **熱帶低氣壓:** 最初的低氣壓系統,風速較弱,沒有明顯的中心。
* **熱帶風暴:** 風速增強,有明顯的中心,開始形成螺旋狀雲系。
* **颱風:** 風速超過每小時119公里,具有明顯的中心和螺旋狀雲系。
**颱風的影響:**
颱風會帶來強風、豪雨、暴潮等災害,嚴重影響人類生活和經濟發展。因此,做好防颱準備非常重要。
由於 Semantic Kernel 支援不同的AI雲平台連接,設計系統時可以不再受限於某一個雲服務供應商!想用 OpenAI 的 GPT 系列就用 GPT,想切換到 Google 也是手起刀落的時間而已。因此能夠在同一個LLM應用中整合多種模型,根據不同的任務性質,選擇專用的模型,甚至是不同AI雲平台的模型服務,這樣的組合彈性,正是發揮了 Semantic Kernel 的價值,想想看過去要自已實作的時候,就必須了解不同平台的API差異,而現在直接使用 Semantic Kernel 用一致性的寫法,就可以對接不同的模型平台,省下了不少的時間。當然使用了框架也並非沒有缺點,例如使用框架都是會有被据限住的情況,所以要不要用,怎麼用,就需要開發者自行依各種條件做綜合評估。畢竟在求快求新的時代,如何投資你的時間創造最大的效益,也是滿重要。就像如果現在要求你寫一個網站,不可以使用任何的前後端框架,你....要做嗎 ?
所以是 git clone sematickernel 再用nuget add semantic kernel. Google 就可以用了嗎?
semantic kernel 與 SemanticKernel.Connectors.Google 都是從nuget 取得加入