Оптимизация запросов языковой модели

Завершено

Запросы — это подсказки для больших языковых моделей (LLM), формирования ответов на основе запросов или инструкций. Например, можно предложить LLM преобразовать предложение из английского на французский или создать сводку текста.

В предыдущем уроке вы создали запрос в качестве входной строки:

    string input = @"I'm a vegan in search of new recipes. I love spicy food! 
    Can you give me a list of breakfast recipes that are vegan friendly?";

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

Советы по созданию запросов

  • Определенные входные данные дают определенные выходные данные: LLM реагируют на входные данные, которые они получают. Создание четких и конкретных запросов имеет решающее значение для получения требуемых выходных данных.

  • Экспериментирование — это ключ. Возможно, потребуется выполнить итерацию и экспериментировать с различными запросами, чтобы понять, как модель интерпретирует и создает ответы. Небольшие настройки могут привести к значительным изменениям в результатах.

  • Контекстные вопросы: LLM рассматривают контекст, предоставленный в запросе. Необходимо убедиться, что контекст хорошо определен и имеет отношение к получению точных и согласованных ответов.

  • Обработка неоднозначности. Помните, что LLM может бороться с неоднозначными запросами. Укажите контекст или структуру, чтобы избежать расплывчатых или непредвиденных результатов.

  • Длина запросов: хотя LLM может обрабатывать как короткие, так и длинные запросы, следует учитывать компромисс между краткостью и ясностью. Экспериментирование с длиной запроса поможет найти оптимальный баланс.

Создание шаблонов запросов

Пакет SDK для семантического ядра поддерживает язык шаблонов, который позволяет использовать выражения и переменные в запросах естественного языка. Это означает, что можно создавать запросы, которые многократно используются с разными входными параметрами. Для внедрения выражений в запросы язык шаблонов использует фигурные скобки {{...}}.

using Microsoft.SemanticKernel;
using Microsoft.SemanticKernel.Plugins.Core;

var builder = Kernel.CreateBuilder();
builder.AddAzureOpenAIChatCompletion(
    "your-deployment-name",
    "your-endpoint",
    "your-api-key",
    "deployment-model");

builder.Plugins.AddFromType<ConversationSummaryPlugin>();
var kernel = builder.Build();

string history = @"In the heart of my bustling kitchen, I have embraced 
    the challenge of satisfying my family's diverse taste buds and 
    navigating their unique tastes. With a mix of picky eaters and 
    allergies, my culinary journey revolves around exploring a plethora 
    of vegetarian recipes.

    One of my kids is a picky eater with an aversion to anything green, 
    while another has a peanut allergy that adds an extra layer of complexity 
    to meal planning. Armed with creativity and a passion for wholesome 
    cooking, I've embarked on a flavorful adventure, discovering plant-based 
    dishes that not only please the picky palates but are also heathy and 
    delicious.";

string prompt = @"This is some information about the user's background: 
    {{$history}}

    Given this user's background, provide a list of relevant recipes.";

var result = await kernel.InvokePromptAsync(prompt, 
    new KernelArguments() {{ "history", history }});

Console.WriteLine(result);

В этом примере history переменная ссылается в запросе, обозначаемая символом $ . При вызове history запроса переменная заменяется фактическим значением, предоставленным KernelArguments в словаре. Это позволяет создавать запросы, которые можно динамически заполнять различными входными данными.

Ниже приведен пример выходных данных:

1. Lentil and vegetable soup - a hearty, filling soup that is perfect for a cold day. This recipe is vegetarian and can easily be adapted to accommodate allergies.

2. Cauliflower "steaks" - a delicious and healthy main course that is sure to satisfy even the pickiest of eaters. This recipe is vegetarian and can easily be made vegan.

3. Quinoa salad with roasted vegetables - a healthy and filling salad that is perfect for any occasion. This recipe is vegetarian and can easily be adapted to accommodate allergies.

4. Peanut-free pad Thai - a classic dish made without peanut sauce, perfect for those with peanut allergies. This recipe is vegetarian and can easily be made vegan.

5. Black bean and sweet potato enchiladas - a delicious and healthy twist on traditional enchiladas. This recipe is vegetarian and can easily be made vegan.

Создание повторно используемых запросов особенно полезно, если необходимо выполнить одну и ту же задачу с различными входными данными. В следующем упражнении вы научитесь создавать собственные запросы, которые можно использовать повторно, с помощью пакета SDK для семантического ядра.