練習 - 自動叫用函式
語意核心 SDK 可讓您自動協調核心中所參考的函式和提示。 此工具不需要手動叫用函式和提示,即可協助您節省時間,並讓應用程式變得更聰明。 讓我們試試看!
準備您的開發環境
針對這些練習,您可以使用入門專案。 使用下列步驟來設定入門專案:
重要
您必須安裝 Visual Studio Code 和 .NET Framework 8.0,才能完成這些步驟。 您可能也需要安裝 Visual Studio Code C# 開發套件延伸模組。
打開 Visual Studio Code。
在 Visual Studio Code [開始] 區段之下,選取 [複製 Git 存放庫]。
在 URL 列中,輸入
https://github.com/MicrosoftLearning/MSLearn-Develop-AI-Agents-with-Azure-OpenAI-and-Semantic-Kernel-SDK.git
在 [檔案總管] 中,在容易尋找和記住的位置建立新的資料夾,例如桌面中的資料夾。
按一下 [選取作為存放庫目的地] 按鈕。
您必須登入 GitHub 才能成功複製專案。
在 Visual Studio Code 中開啟專案
在 [總管] 中,以滑鼠右鍵按一下 M05-auto-invoke-functions/M05-Project 資料夾,然後按一下 [在整合式終端機中開啟]
展開 M05-auto-invoke-functions/M05-Project 資料夾
您應該會看到「Program.cs」檔案。
開啟 Program.cs 檔案,並使用 Azure OpenAI 服務部署名稱、API 金鑰和端點更新下列變數。
string yourDeploymentName = ""; string yourEndpoint = ""; string yourAPIKey = "";
現在您已準備好開始練習。 祝您好運!
向使用者推薦音樂會
在 [外掛程式] 資料夾中,建立名為 [MusicConcertPlugin.cs] 的新檔案
在 [MusicConcertPlugin] 檔案中,新增下列程式碼:
using System.ComponentModel; using Microsoft.SemanticKernel; public class MusicConcertPlugin { [KernelFunction, Description("Get a list of upcoming concerts")] public static string GetTours() { string dir = Directory.GetCurrentDirectory(); string content = File.ReadAllText($"{dir}/data/concertdates.txt"); return content; } }
GetTours
函式會讀取名為 'concertdates.txt' 的檔案,並傳回內容。 此函式將用來擷取即將推出的音樂會清單。接下來,建立提示,要求 LLM 根據使用者最近播放的音樂來建議音樂會。
在 [提示] 資料夾中,建立名為 [SuggestConcert] 的新資料夾
使用下列內容在 [SuggestConcert] 資料夾中建立 [config.json] 檔案:
{ "schema": 1, "type": "completion", "description": "Suggest a concert to the user", "execution_settings": { "default": { "max_tokens": 4000, "temperature": 0 } }, "input_variables": [ { "name": "upcomingConcerts", "description": "A list of artist's upcoming concerts", "required": true }, { "name": "recentlyPlayedSongs", "description": "A list of songs recently played by the user", "required": true }, { "name": "location", "description": "The user's location", "required": true } ] }
使用下列內容在 [SuggestConcert] 資料夾中建立 [skprompt.txt] 檔案:
Based on the user's recently played songs: {{$recentlyPlayedSongs}} And a list of upcoming concerts: {{$upcomingConcerts}} Suggest an upcoming concert. The user lives in {{$location}}, please recommend a relevant concert that is close to their location.
此提示會要求 LLM 根據使用者最近播放的歌曲和位置來建議音樂會。 接下來,您將啟用自動函式呼叫設定。
開啟
Program.cs
檔案和下列 using 陳述式:using Microsoft.SemanticKernel.Connectors.OpenAI;
此套件可讓您使用自動函式呼叫設定。
使用下列程式碼更新
Program.cs
檔案:kernel.ImportPluginFromType<MusicLibraryPlugin>(); kernel.ImportPluginFromType<MusicConcertPlugin>(); kernel.ImportPluginFromPromptDirectory("Prompts"); OpenAIPromptExecutionSettings settings = new() { ToolCallBehavior = ToolCallBehavior.AutoInvokeKernelFunctions }; string prompt = @"I live in Portland OR USA. Based on my recently played songs and a list of upcoming concerts, which concert do you recommend?"; var result = await kernel.InvokePromptAsync(prompt, new(settings)); Console.WriteLine(result);
在終端機中輸入
dotnet run
產生的建議應根據最近播放的歌曲和位置來推薦音樂會。 輸出可能類似下列回應:
Based on your recently played songs and your location in Portland, OR, I would recommend attending the upcoming concert of Lisa Taylor. She will be performing in Portland on April 16, 2024. This concert would be a great opportunity for you to enjoy live music and experience Lisa Taylor' beautiful songs.
語意核心會自動偵測適當的外掛程式函式,以使用並傳入正確的參數。 您可以嘗試修改位置以查看推薦如何變更。 您也可以嘗試變更提示,告訴 LLM 從媒體庫中推薦一首歌曲。
AutoInvokeKernelFunctions
設定可讓語意核心自動呼叫已新增至核心的函式和提示。 此工具可讓您使用較少的程式碼來建立動態且健全的應用程式。