當前位置: 妍妍網 > 碼農

智慧升級:AntSK教你如何讓聊天機器人實作智慧聯網操作

2024-03-04碼農

隨著人工智慧技術的飛速發展,智慧體已經逐步融入到我們的日常生活中。不過,要想讓智慧體不僅能聊天,還能接入網路即時獲取資訊,為我們提供更多便利,所需技術的復雜性不得不讓人矚目。今天,我將和各位分享如何在基於.NET開發的AI知識庫/智慧體計畫 AntSK 中,利用Semantic Kernel實作智慧體的聯網功能,加入查詢天氣、發送信件、呼叫外部API等「神技能」。

AntSK是什麽?

AntSK 是一個基於最新的 .NET8 技術棧以及 AntBlazor Semantic Kernel 開發的開源計畫,為開發者提供了構建AI知識庫和智慧體的強大工具。計畫源碼開放在GitHub平台,讓每位對AI和.NET感興趣的開發者都能參與進來,探索智慧體的無限可能。

https://github.com/xuzeyu91/AntSK

AntSK的聯網功能

AntSK 的智慧體中嵌入網路操作,聽起來是不是感覺非常「 黑科技 」?別急,這並沒有我們想象的那麽復雜。 Semantic Kernel 作為AntSK中的一大核心SDK,已經為我們提供了便捷的自動呼叫功能,讓聯網操作變得觸手可及。

配置API通道

首先,我們先來配置通向外界的API通道。這一步相較於編碼來說簡單得多,僅需要構造一個配置API的頁面。在這個頁面中,我們可以設定要呼叫的具體介面資訊,比如請求頭、請求方式、參數等。

然後同時,我們也需要在套用中選擇對應的API外掛程式

智慧體如何自動呼叫API

在AntSK中,套用的配置完成,你是否期待智慧體能自如地呼叫API呢?正是如此,透過下面的程式碼配置,我們的智慧體可以在聊天時動態地註入API外掛程式,並且根據不同的場景去呼叫指定的API介面,比如天氣查詢:

OpenAIPromptExecutionSettings settings = new() { ToolCallBehavior = ToolCallBehavior.AutoInvokeKernelFunctions };

動態註入API外掛程式

我們還需要編寫一些程式碼來讓智慧體在實際聊天過程中註入我們預設的API外掛程式。以下是範例程式碼,詳細地展現了如何按照不同的方法型別(GET或POST),建立函式並將其註入到Semantic Kernel外掛程式中:

publicvoid ImportFunctionsByApp(Apps app, Kernel _kernel){//開啟自動外掛程式呼叫var apiIdList = app.ApiFunctionList.Split(",");var apiList = _apis_Repositories.GetList(p => apiIdList.Contains(p.Id)); List<KernelFunction> functions = newList<KernelFunction>();var plugin = _kernel.Plugins.FirstOrDefault(p => p.Name == "ApiFunctions"); { foreach (var api in apiList) {switch (api.Method) {case HttpMethodType.Get:functions.Add(_kernel.CreateFunctionFromMethod((string msg) => {try { Console.WriteLine(msg); RestClient client = new RestClient(); RestRequest request = new RestRequest(api.Url, Method.Get); foreach (var header in api.Header.Split("\n")) {var headerArray = header.Split(":");if (headerArray.Length == 2) { request.AddHeader(headerArray[0], headerArray[1]); } } //這裏應該還要處理一次參數提取,等後面再叠代 foreach (var query in api.Query.Split("\n")) {var queryArray = query.Split("=");if (queryArray.Length == 2) { request.AddQueryParameter(queryArray[0], queryArray[1]); } }var result = client.Execute(request);return result.Content; }catch (System.Exception ex) {return"呼叫失敗:" + ex.Message; } }, api.Name, $"{api.Describe}"));break;case HttpMethodType.Post:functions.Add(_kernel.CreateFunctionFromMethod((string msg) => {try { Console.WriteLine(msg); RestClient client = new RestClient(); RestRequest request = new RestRequest(api.Url, Method.Post); foreach (var header in api.Header.Split("\n")) {var headerArray = header.Split(":");if (headerArray.Length == 2) { request.AddHeader(headerArray[0], headerArray[1]); } } //這裏應該還要處理一次參數提取,等後面再叠代 request.AddJsonBody(api.JsonBody);var result = client.Execute(request);return result.Content; }catch (System.Exception ex) {return"呼叫失敗:" + ex.Message; } }, api.Name, $"{api.Describe}"));break; } } _kernel.ImportPluginFromFunctions("ApiFunctions", functions); }}

實戰演示

我們可以看到,已經可以在聊天過程中順利的呼叫我們的天氣查詢API了,並返回給我們今天的天氣如何,同理我們也可以透過配置聯網搜尋API讓聊天機器人具備搜尋即時資訊的能力。

結語

將這樣一種創新與強大的技術分享給大家,我感到無比自豪。我希望你能在GitHub上給 AntSK 點上一個star,相信計畫的潛力會讓你感到興奮。如果你在使用過程中遇到任何問題,或者有新的構想想要貢獻,都可以透過加入我們的【 .Net/AI套用開發交流群】 來參與討論。目前由於群人數已滿,你可以先透過添加我的微信 xuzeyu91 ,我將會邀請你進入群聊。

這個計畫不僅僅是技術的集合,它更是一個開放的社群,一個共同成長的空間。如果你對人工智慧、.Net開發有熱情,那麽 AntSK 無疑將是你展示才華、交流思想的絕佳平台。在未來的版本叠代中,我相信 AntSK 會變得更強大、更智慧,能夠解決越發復雜的問題,並在人類與電腦互動中發揮關鍵作用。

正如新興科技所展示的,未來並非遙遠,而是觸手可及。 AntSK 正是這一理念的體現,它不僅僅為技術愛好者和專業人士提供了交流的舞台,更為整個社會開啟了智慧互動的新程度。它證明了,無論是在知識管理、復雜決策支持還是日常生活輔助中,人工智慧都能發揮其獨有的力量。

趕快參與進來吧,AI的未來等你來書寫!