Harjoitus – Funktioiden automaattinen kutsuminen

Valmis

Semanttisen ytimen SDK:n avulla voit automaattisesti koordinoida funktioita ja kehotteita, joihin viitataan ytimessäsi. Funktioiden ja kehotteiden manuaalisen kutsumisen sijaan tämä työkalu auttaa säästämään aikaa ja tekemään sovelluksistasi älykkäämpiä. Kokeillaanpa sitä!

Kehitysympäristön valmisteleminen

Näissä harjoituksissa on käytettävissä aloitusprojekti. Määritä aloitusprojekti seuraavien vaiheiden avulla:

Tärkeä

Sinulla on oltava Visual Studio Code ja .NET Framework 8.0 asennettuna, jotta voit suorittaa nämä vaiheet. Saatat myös joutua asentamaan Visual Studio Code C# Dev Kit -laajennuksen.

  1. Avaa Visual Studio Code.

  2. Valitse Visual Studio Code Aloita -osiossa Kloonaa Git-säilö.

  3. Kirjoita URL-palkkiin https://github.com/MicrosoftLearning/MSLearn-Develop-AI-Agents-with-Azure-OpenAI-and-Semantic-Kernel-SDK.git

  4. Luo Resurssienhallinnassa uusi kansio sellaiseen sijaintiin, joka on helppo löytää ja muistaa, kuten desktop-kansioon.

  5. Napsauta Valitse säilön kohde -painiketta.

    Sinun on oltava kirjautuneena GitHubiin, jotta voit kloonata projektin.

  6. Avaa projekti Visual Studio Codessa

  7. Napsauta Explorerissa hiiren kakkospainikkeella M05-auto-invoke-functions/M05-Project -kansiota ja valitse Avaa integroidussa päätteessä -

  8. Laajenna M05-auto-invoke-functions/M05-Project -kansiota.

    Sinun pitäisi nähdä "Program.cs"-tiedosto.

  9. Avaa Program.cs tiedosto ja päivitä seuraavat muuttujat Azure OpenAI Services -käyttöönottonimellä, ohjelmointirajapinnan avaimella ja päätepisteellä.

    string yourDeploymentName = "";
    string yourEndpoint = "";
    string yourAPIKey = "";
    

Nyt olet valmis aloittamaan harjoituksen. Lykkyä tykö!

Ehdota konsertteja käyttäjälle

  1. Luo Laajennukset-kansiossa uusi tiedosto nimeltä MusicConcertPlugin.cs

  2. Lisää MusicConcertPlugin' -tiedostoon seuraava koodi:

    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 funktio lukee tiedoston nimeltä 'concertdates.txt' ja palauttaa sisällön. Tämän funktion avulla noudetaan tulevien konserttien luettelo.

    Luo seuraavaksi kehote pyytää LLM: ä ehdottamaan konserttia, joka perustuu käyttäjän äskettäin soittamaan musiikkiin.

  3. Luo Kehotteet-kansioon uusi kansio nimeltä SuggestConcert.

  4. Luo SuggestConcert-kansioon "config.json" -tiedosto, jossa on seuraava sisältö:

    {
        "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
            }
        ]
    }
    
  5. Luo SuggestConcert-kansioon "skprompt.txt" -tiedosto, jossa on seuraava sisältö:

    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.
    

    Tämä kehote pyytää LLM:a ehdottamaan konserttia, joka perustuu käyttäjän äskettäin soittamiin kappaleisiin ja sijaintiin. Seuraavaksi otat käyttöön automaattisen funktion kutsumisen asetuksen.

  6. Avaa Program.cs tiedosto ja käytä seuraavaa lauseketta:

    using Microsoft.SemanticKernel.Connectors.OpenAI;
    

    Tämän paketin avulla voit käyttää automaattisen funktion kutsumisen asetusta.

  7. Päivitä Program.cs seuraava koodi:

    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);
    
  8. Kirjoita päätteeseen dotnet run

    Luodun ehdotuksen tulisi suositella konserttia, joka perustuu äskettäin soitettuihin kappaleisiin ja sijaintiin. Tuloste voi olla samankaltainen kuin seuraava vastaus:

    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.
    

    Semanttinen ydin tunnistaa automaattisesti asianmukaisen laajennusfunktion käytettäväksi ja välittää oikeat parametrit. Voit yrittää muokata sijaintia, jotta näet, miten suositus muuttuu. Voit myös yrittää muuttaa kehotetta kertoaksesi LLM: lle ehdottaaksesi laulua kirjastosta.

AutoInvokeKernelFunctions-asetuksen avulla semanttinen ydin voi kutsua automaattisesti funktioita ja kehotteita, jotka lisätään ytimeesi. Tällä työkalulla voit luoda dynaamisia ja tehokkaita sovelluksia vähemmällä koodilla.