Упражнение. Автоматическое вызов функций

Завершено

В этом упражнении вы используете запросы на автоматическое вызов функций, которые могут рекомендовать песни пользователю, или добавить песню в список недавно воспроизведенной музыки. Приступим.

  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 Используя этот параметр, вы можете сосредоточиться на создании подключаемых модулей в соответствии с потребностями пользователя.