연습 - 노래 제안에 중첩 함수 사용

완료됨

이 연습에서는 사용자가 최근에 재생한 노래를 기반으로 권장하는 노래를 생성하도록 LLM에게 요청하는 프롬프트와 네이티브 함수를 결합합니다. 그럼 시작하겠습니다.

개발 환경 준비

이러한 연습을 위해 시작 프로젝트를 사용할 수 있습니다. 시작 프로젝트를 설정하려면 다음 단계를 따릅니다.

Important

이 단계를 완료하려면 Visual Studio Code 및 .NET Framework 8.0이 설치되어 있어야 합니다. Visual Studio Code C# 개발 키트 확장을 설치해야 할 수도 있습니다.

  1. Visual Studio Code를 엽니다.

  2. Visual Studio Code 시작 섹션에서 Git 리포지토리 복제를 선택합니다.

  3. URL 표시줄에 https://github.com/MicrosoftLearning/MSLearn-Develop-AI-Agents-with-Azure-OpenAI-and-Semantic-Kernel-SDK.git를 입력합니다.

  4. 파일 탐색기에서 바탕 화면의 폴더와 같이 쉽게 찾고 기억할 수 있는 위치에 새 폴더를 만듭니다.

  5. 리포지토리 대상으로 선택 단추를 클릭합니다.

    프로젝트를 성공적으로 복제하려면 GitHub에 로그인해야 합니다.

  6. Visual Studio Code에서 프로젝트를 엽니다.

  7. 탐색기에서 M04-combine-prompts-and-functions/M04-Project 폴더를 마우스 오른쪽 단추로 클릭하고 통합 터미널에서 열기를 클릭합니다.

  8. M04-combine-prompts-and-functions/M04-Project 폴더를 확장합니다.

    "Program.cs" 파일이 표시됩니다.

  9. Program.cs 파일을 열고 Azure OpenAI Services 배포 이름, API 키, 엔드포인트로 다음 변수를 업데이트합니다.

    string yourDeploymentName = "";
    string yourEndpoint = "";
    string yourKey = "";
    

이제 연습을 시작할 준비가 되었습니다. 행운을 빕니다!

개인 맞춤 노래 추천 제공

  1. MusicLibraryPlugin.cs 파일에 다음 함수를 추가합니다.

    [KernelFunction, Description("Get a list of music available to the user")]
    public static string GetMusicLibrary()
    {
        string dir = Directory.GetCurrentDirectory();
        string content = File.ReadAllText($"{dir}/data/musiclibrary.txt");
        return content;
    }
    
  2. Program.cs 파일을 다음 코드로 업데이트합니다.

    var kernel = builder.Build();
    kernel.ImportPluginFromType<MusicLibraryPlugin>();
    
    string prompt = @"This is a list of music available to the user:
        {{MusicLibraryPlugin.GetMusicLibrary}} 
    
        This is a list of music the user has recently played:
        {{MusicLibraryPlugin.GetRecentPlays}}
    
        Based on their recently played music, suggest a song from
        the list to play next";
    
    var result = await kernel.InvokePromptAsync(prompt);
    Console.WriteLine(result);
    

    이 코드에서는 네이티브 함수를 의미 체계 프롬프트와 결합합니다. 네이티브 함수는 LLM(대규모 언어 모델)이 자체적으로 액세스할 수 없는 사용자 데이터를 검색할 수 있으며, LLM은 텍스트 입력을 기반으로 권장하는 노래를 생성할 수 있습니다.

  3. 코드를 테스트하려면 터미널에 dotnet run을 입력합니다.

    다음 출력과 유사한 응답이 표시됩니다.

    Based on the user's recently played music, a suggested song to play next could be "Sabry Aalil" since the user seems to enjoy pop and Egyptian pop music.
    

    참고 항목

    생성된 노래 권장 사항은 여기에 표시된 것과 다를 수 있습니다.

네이티브 함수를 의미 체계 프롬프트와 성공적으로 결합했습니다. 음악 권장 에이전트를 시작합니다. 프롬프트를 사용하여 입력 파일을 재생하여 보면서 생성할 수 있는 다른 권장 사항을 확인해 보세요.