Cvičení – automatické vyvolání funkcí
Sada SDK sémantického jádra umožňuje automaticky koordinovat funkce a výzvy, na které se odkazuje ve vašem jádru. Místo ručního vyvolání funkcí a výzev vám tento nástroj pomůže ušetřit čas a chytřejší aplikace. Pojďme to vyzkoušet!
Příprava vývojového prostředí
Pro tato cvičení je k dispozici počáteční projekt, který můžete použít. Pomocí následujících kroků nastavte počáteční projekt:
Důležité
K provedení těchto kroků musíte mít nainstalovaný Visual Studio Code a rozhraní .NET Framework 8.0. Možná budete muset nainstalovat rozšíření Visual Studio Code C# Dev Kit.
Otevřete Visual Studio Code.
V části Start editoru Visual Studio Code vyberte Klonovat úložiště Git.
Na panelu URL zadejte
https://github.com/MicrosoftLearning/MSLearn-Develop-AI-Agents-with-Azure-OpenAI-and-Semantic-Kernel-SDK.git
V Průzkumník souborů vytvořte novou složku v umístění, které je snadné najít a zapamatovat, například složku v Desktopu.
Klikněte na tlačítko Vybrat jako cíl úložiště.
Abyste mohli projekt úspěšně naklonovat, musíte být přihlášení k GitHubu.
Otevření projektu v editoru Visual Studio Code
V Průzkumníku klikněte pravým tlačítkem myši na složku M05-auto-invoke-functions/M05-Project a klikněte na Otevřít v integrovaném terminálu.
Rozbalte složku M05-auto-invoke-functions/M05-Project.
Měl by se zobrazit soubor "Program.cs".
Otevřete soubor Program.cs a aktualizujte následující proměnné názvem nasazení služby Azure OpenAI Services, klíčem rozhraní API a koncovým bodem.
string yourDeploymentName = ""; string yourEndpoint = ""; string yourAPIKey = "";
Teď jste připraveni zahájit cvičení. Hodně zdaru!
Navrhnout koncerty uživateli
Ve složce Plugins vytvořte nový soubor s názvem MusicConcertPlugin.cs.
Do souboru MusicConcertPlugin přidejte následující kód:
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; } }
Funkce
GetTours
přečte soubor s názvem "concertdates.txt" a vrátí obsah. Tato funkce se použije k načtení seznamu nadcházejících koncertů.Dále vytvořte výzvu, abyste požádali LLM o navržení koncertu na základě nedávno přehráné hudby uživatele.
Ve složce Prompts vytvořte novou složku s názvem SuggestConcert.
Ve složce "SuggestConcert" vytvořte soubor config.json s následujícím obsahem:
{ "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 } ] }
Ve složce SuggestConcert vytvořte soubor skprompt.txt s následujícím obsahem:
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.
Tato výzva vyzve LLM, aby navrhl koncert na základě nedávno přehrávané skladby a umístění uživatele. Dále povolíte nastavení automatického volání funkce.
Program.cs
Otevřete soubor a následující příkaz using:using Microsoft.SemanticKernel.Connectors.OpenAI;
Tento balíček vám umožní použít nastavení automatického volání funkce.
Program.cs
Aktualizujte soubor následujícím kódem: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);
Zadejte
dotnet run
do terminálu.Vygenerovaný návrh by měl doporučit koncert na základě nedávno přehrávaných skladeb a umístění. Výstup se může podobat následující odpovědi:
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.
Sémantické jádro automaticky rozpozná příslušnou funkci modulu plug-in, která se má použít, a předává správné parametry. Můžete zkusit změnit umístění a podívat se, jak se doporučení mění. Můžete také zkusit změnit výzvu, aby LLM navrhla skladbu z knihovny.
Toto AutoInvokeKernelFunctions
nastavení umožňuje sémantickému jádru automaticky volat funkce a výzvy přidané do jádra. Tento nástroj vám umožní vytvářet dynamické a robustní aplikace s využitím méně kódu.