연습 - 노래 제안에 중첩 함수 사용
이 연습에서는 사용자가 최근에 재생한 노래를 기반으로 권장하는 노래를 생성하도록 LLM에게 요청하는 프롬프트와 네이티브 함수를 결합합니다. 그럼 시작하겠습니다.
개발 환경 준비
이러한 연습을 위해 시작 프로젝트를 사용할 수 있습니다. 시작 프로젝트를 설정하려면 다음 단계를 따릅니다.
Important
이 단계를 완료하려면 Visual Studio Code 및 .NET Framework 8.0이 설치되어 있어야 합니다. Visual Studio Code C# 개발 키트 확장을 설치해야 할 수도 있습니다.
Visual Studio Code를 엽니다.
Visual Studio Code 시작 섹션에서 Git 리포지토리 복제를 선택합니다.
URL 표시줄에
https://github.com/MicrosoftLearning/MSLearn-Develop-AI-Agents-with-Azure-OpenAI-and-Semantic-Kernel-SDK.git
를 입력합니다.파일 탐색기에서 바탕 화면의 폴더와 같이 쉽게 찾고 기억할 수 있는 위치에 새 폴더를 만듭니다.
리포지토리 대상으로 선택 단추를 클릭합니다.
프로젝트를 성공적으로 복제하려면 GitHub에 로그인해야 합니다.
Visual Studio Code에서 프로젝트를 엽니다.
탐색기에서 M04-combine-prompts-and-functions/M04-Project 폴더를 마우스 오른쪽 단추로 클릭하고 통합 터미널에서 열기를 클릭합니다.
M04-combine-prompts-and-functions/M04-Project 폴더를 확장합니다.
"Program.cs" 파일이 표시됩니다.
Program.cs 파일을 열고 Azure OpenAI Services 배포 이름, API 키, 엔드포인트로 다음 변수를 업데이트합니다.
string yourDeploymentName = ""; string yourEndpoint = ""; string yourKey = "";
이제 연습을 시작할 준비가 되었습니다. 행운을 빕니다!
개인 맞춤 노래 추천 제공
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; }
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은 텍스트 입력을 기반으로 권장하는 노래를 생성할 수 있습니다.
코드를 테스트하려면 터미널에
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.
참고 항목
생성된 노래 권장 사항은 여기에 표시된 것과 다를 수 있습니다.
네이티브 함수를 의미 체계 프롬프트와 성공적으로 결합했습니다. 음악 권장 에이전트를 시작합니다. 프롬프트를 사용하여 입력 파일을 재생하여 보면서 생성할 수 있는 다른 권장 사항을 확인해 보세요.