연습 - 프롬프트에서 가상 사용자 사용

완료됨

프롬프트에 가상 사용자를 할당하면 LLM(대규모 언어 모델)에서 생성된 응답의 품질이 향상될 수 있습니다. 가상 사용자는 LLM에 컨텍스트를 제공하여 사용자의 의도에 더 잘 맞는 응답을 지속적으로 생성할 수 있습니다. 시도해 보기:

  1. 이전 연습에서 만든 Visual Studio Code 프로젝트를 엽니다.

  2. 이전 연습의 프롬프트를 다음 텍스트로 업데이트합니다.

    using Microsoft.SemanticKernel;
    using Microsoft.SemanticKernel.Plugins.Core;
    
    var builder = Kernel.CreateBuilder();
    builder.AddAzureOpenAIChatCompletion(
        "your-deployment-name",
        "your-endpoint",
        "your-api-key",
        "deployment-model");
    
    var kernel = builder.Build();
    
    string language = "French";
    string history = @"I'm traveling with my kids and one of them has a peanut allergy.";
    
    // Assign a persona to the prompt
    string prompt = @$"
        You are a travel assistant. You are helpful, creative, and very friendly. 
        Consider the traveler's background:
        ${history}
    
        Create a list of helpful phrases and words in ${language} a traveler would find useful.
    
        Group phrases by category. Include common direction words. 
        Display the phrases in the following format: 
        Hello - Ciao [chow]
    
        Begin with: 'Here are some phrases in ${language} you may find helpful:' 
        and end with: 'I hope this helps you on your trip!'";
    
    var result = await kernel.InvokePromptAsync(prompt);
    Console.WriteLine(result);
    
  3. 터미널에 dotnet run을 입력하여 코드를 실행합니다.

    코드를 실행하는 경우 응답이 이전 결과보다 더 일관적일 수 있습니다. LLM은 할당한 가상 사용자 및 작업의 컨텍스트와 일치하는 응답을 생성할 가능성이 높습니다.

    응답은 다음 출력과 유사하게 나타날 수 있습니다.

    Here are some phrases in French you may find helpful:
    
    Greetings:
    - Hello - Bonjour [bon-zhur]
    - Goodbye - Au revoir [oh ruh-vwar]
    - Thank you - Merci [mehr-see]
    
    Directions:
    - Go straight ahead - Allez tout droit [ah-lay too dwa]
    - Turn left/right - Tournez à gauche/droite [toor-nay ah gohsh/dwaht]
    - It's on the left/right - C'est à gauche/droite [say ah gohsh/dwaht]
    
    Food:
    - Does this contain peanuts? - Est-ce que cela contient des cacahuètes? [ess-kuh suh suh-la kohn-tee-eh day kah-kah-weht?]
    - My child has a peanut allergy - Mon enfant est allergique aux cacahuètes [mohn ahn-fahn ay ah-lair-gee-k oh kah-kah-weht]
    
    ...
    
    I hope this helps you on your trip!
    

또한 응답을 생성할 때 역할을 가정하고 예제 요청 및 응답을 제공하는 지침을 LLM에 제공할 수 있습니다. 의미 체계 커널에서 특수 구문은 메시지 역할을 정의하는 데 사용됩니다. 메시지 역할을 정의하려면 역할 이름을 특성으로 사용하여 <message> 태그로 메시지를 래핑할 수 있습니다. 지원되는 역할은 ‘사용자’, ‘시스템’, ‘도우미’, ‘봇’입니다. 시도해 보기:

  1. 다음 텍스트로 프롬프트를 업데이트합니다.

    string prompt = @$"
        The following is a conversation with an AI travel assistant. 
        The assistant is helpful, creative, and very friendly.
    
        <message role=""user"">Can you give me some travel destination suggestions?</message>
    
        <message role=""assistant"">Of course! Do you have a budget or any specific 
        activities in mind?</message>
    
        <message role=""user"">${input}</message>";
    

    다음으로, 입력을 업데이트하여 AI에 여정에 대한 몇 가지 세부 정보를 제공해 보겠습니다.

  2. input 문자열을 다음 텍스트로 업데이트합니다.

    string input = @"I'm planning an anniversary trip with my spouse. We like hiking, mountains, 
        and beaches. Our travel budget is $15000";
    

    다음으로, 코드를 실행하고 LLM이 어떻게 응답하는지 관찰합니다.

  3. 터미널에 dotnet run을 입력합니다.

    That sounds like a great trip ahead! Here are a few suggestions:
    
    1. New Zealand - With stunning mountain ranges, iconic hiking trails, and beautiful beaches, New Zealand is a popular destination for outdoor enthusiasts. Some must-visit spots include the Milford Track, Fox Glacier, and Abel Tasman National Park.
    
    2. Hawaii - Known for its picturesque beaches, Hawaii is also home to several stunning hiking trails. The Kalalau Trail on Kauai is a popular trail that offers breathtaking views of the Na Pali Coast.
    
    3. Costa Rica - Costa Rica boasts beautiful beaches and breathtaking mountains. Hike through the Monteverde Cloud Forest Reserve and catch a glimpse of exotic wildlife like the resplendent quetzal, or take a dip in the turquoise waters of Playa Manuel Antonio.
    
    4. Banff National Park, Canada - Located in the Canadian Rockies, Banff National Park offers some of the most stunning mountain scenery in the world. Explore the park's many hiking trails, relax in hot springs, and take in the beauty of the Canadian wilderness.
    
    5. Amalfi Coast, Italy - The Amalfi Coast is a picturesque stretch of coastline in Southern Italy that offers stunning views of the Mediterranean Sea. Take a hike along the famous Path of the Gods or enjoy a romantic stroll through one of the Amalfi Coast's charming towns like Positano or Ravello.
    
    These are just a few of many options, but with a budget of $15000, you should be able to have a fantastic trip to any of these destinations!
    

    LLM에 가상 사용자를 할당하여 좀 더 자연스럽고 개인화된 대화를 만드는 방법을 확인합니다.

자세한 정보를 줄이고 특정 정보만 출력하도록 프롬프트를 조정할 수도 있습니다. 예를 들어 사용자가 한 목적지에서 다른 목적지로 가는 항공편 목록을 가져오려고 하는 경우를 가정해 보겠습니다. LLM에 입력을 구문 분석하고 코드에서 사용할 수 있는 형식으로 관련 정보만 반환하도록 요청할 수 있습니다. 시도해 보기:

  1. 프롬프트를 다음 텍스트로 업데이트합니다.

    string prompt = @$"
    <message role=""system"">Instructions: Identify the from and to destinations 
    and dates from the user's request</message>
    
    <message role=""user"">Can you give me a list of flights from Seattle to Tokyo? 
    I want to travel from March 11 to March 18.</message>
    
    <message role=""assistant"">Seattle|Tokyo|03/11/2024|03/18/2024</message>
    
    <message role=""user"">${input}</message>";
    

    이 프롬프트에서는 <message>를 사용하고 LLM에 대한 예제도 제공합니다. 구문 분석할 수 있는 방식으로 출력의 형식을 지정하려고 하므로 예제에서 해당 형식을 제공합니다. 다음으로, input을 업데이트하여 AI에 여정에 대한 몇 가지 세부 정보를 제공해 보겠습니다.

  2. input을 다음 텍스트로 수정합니다.

    string input = @"I have a vacation from June 1 to July 22. I want to go to Greece. 
        I live in Chicago.";
    
  3. 터미널에 dotnet run을 입력하여 코드를 실행합니다.

    Chicago|Greece|06/01/2024|07/22/2024
    

    LLM이 입력을 구문 분석하고 관련 정보만 반환하는 방법을 확인합니다. LLM에 데이터를 구문 분석하라는 메시지를 표시하는 것은 사용자에게서 필요한 정보를 신속하게 가져오는 좋은 방법입니다.

Important

지금까지 작성한 코드를 삭제하지 마세요. 다음 연습에 필요합니다.