Вправа – автоматичне застосування функцій

Завершено

У цій вправі ви радите використовувати підказки, щоб автоматично викликати функції, які можуть рекомендувати пісні користувачу, або додати пісню до списку нещодавно відтвореної музики. Почнімо!

  1. Відкрийте проект Visual Studio Code, який використовувався під час попередньої вправи.

  2. Оновіть файл "Program.cs" таким кодом:

    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);
    

    У цьому коді ви створюєте функцію з підказки, яка повідомляє LLM, як запропонувати пісню. Після цього ви викликаєте запит із увімкненим параметром автоматичного виклику функції. Ядра може запускати функцію та вказати правильні параметри, щоб завершити запит.

  3. У терміналі введіть dotnet run, щоб запустити код.

    Створений результат має рекомендувати пісню користувачу на основі нещодавно відтвореної музики. Відповідь може виглядати приблизно так:

    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!  
    

    Далі давайте спробуємо оновити список нещодавно відтворених пісень.

  4. Оновіть файл "Program.cs" таким кодом:

    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. Введіть dotnet run в терміналі

    Вивід має бути схожим на такий:

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

    Коли ви відкриваєте файл recentlyplayed.txt, у верхній частині списку буде додано нову пісню.

За допомогою параметра AutoInvokeKernelFunctions можна зосередитися на створенні плагінів відповідно до потреб користувача.