Harjoitus – Funktioiden automaattinen kutsuminen

Valmis

Tässä harjoituksessa harjoittelet kehotteiden käyttämistä kutsumaan automaattisesti funktioita, jotka voivat suositella kappaleita käyttäjälle, tai lisätä kappaleen äskettäin toistetun musiikin luetteloon. Aloitetaanpa!

  1. Avaa Visual Studio Code -projekti, jota käytit edellisessä harjoituksessa.

  2. Päivitä Program.cs -tiedostoon seuraava koodi:

    OpenAIPromptExecutionSettings settings = new()
    {
        ToolCallBehavior = ToolCallBehavior.AutoInvokeKernelFunctions
    };
    
    var songSuggesterFunction = kernel.CreateFunctionFromPrompt(
        promptTemplate: @"Based on the user's recently played music:
            {{$recentlyPlayedSongs}}
            recommend a song to the user from the music library:
            {{$musicLibrary}}",
        functionName: "SuggestSong",
        description: "Recommend a song from the library"
    );
    
    kernel.Plugins.AddFromFunctions("SuggestSong", [songSuggesterFunction]);
    
    string prompt = @"Can you recommend a song from the music library?";
    
    var result = await kernel.InvokePromptAsync(prompt, new(settings));
    
    Console.WriteLine(result);
    

    Tässä koodissa luot funktion kehotteesta, joka kertoo LLM: lle, miten kappale ehdotetaan. Tämän jälkeen kutsut kehotteen, jossa automaattisen funktion kutsumisen asetus on käytössä. Ydin pystyy suorittamaan funktion ja antamaan oikeat parametrit kehotteen suorittamiseksi.

  3. Suorita koodi kirjoittamalla päätteeseen dotnet run.

    Luodun tuloksen pitäisi suositella käyttäjälle kappaletta heidän äskettäin soitetun musiikkinsa perusteella. Vastauksesi voi näyttää samalta kuin seuraava tuloste:

    Based on your recently played music, I recommend you listen to the song "Luv(sic)". It falls under the genres of hiphop and rap, which aligns with some of your recently played songs. Enjoy!  
    

    Seuraavaksi kokeillaan kehotetta viimeksi toistetaan kappaleiden luettelo.

  4. Päivitä Program.cs -tiedostoon seuraava koodi:

    string prompt = @"Add this song to the recently played songs list:  title: 'Touch', artist: 'Cat's Eye', genre: 'Pop'";
    
    var result = await kernel.InvokePromptAsync(prompt, new(settings));
    
    Console.WriteLine(result);
    
  5. Kirjoita päätteeseen dotnet run

    Tulosteen on oltava seuraavanlainen:

    I have added the song 'Touch' by Cat's Eye to the recently played songs list.
    

    Kun avaat recentlyplayed.txt-tiedoston, uuden kappaleen pitäisi näkyä luettelossa ylimpänä.

AutoInvokeKernelFunctions asetuksen avulla voit keskittyä kehittämään laajennuksia, jotka sopivat käyttäjäsi tarpeisiin.