Otimizar solicitações de modelo de linguagem

Concluído

Solicitações são indicações de conversa que você dá a LLMs (grandes modelos de linguagem), moldando respostas com base em suas consultas ou instruções. Por exemplo, você pode solicitar às LLMs que convertam uma frase de inglês para francês ou gerem um resumo de um texto.

Na unidade anterior, você criou a solicitação como a cadeia de caracteres de entrada:

    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?";

A solicitação envolve a criação de instruções claras e avançadas de contexto para orientar o modelo a gerar uma resposta desejada. Para criar uma solicitações eficaz, a precisão e a clareza são fundamentais. Talvez seja necessário experimentar e ajustar suas solicitações para obter resultados precisos.

Dicas para criar solicitações

  • Entradas Específicas Produzem Saídas Específicas: As LLMs respondem com base na entrada que recebem. Criar solicitações claras e específicas é crucial para obter a saída desejada.

  • Experimentação é a Chave: Talvez seja necessário iterar e experimentar diferentes solicitações para entender como o modelo interpreta e gera respostas. Pequenos ajustes podem levar a mudanças significativas nos resultados.

  • Contexto é Importante: As LLMs consideram o contexto fornecido na solicitação. Você deve garantir que o contexto seja bem definido e relevante para obter respostas precisas e coerentes.

  • Lidar com Ambiguidade: Tenha em mente que as LLMs podem lutar com consultas ambíguas. Forneça contexto ou estrutura para evitar resultados vagos ou inesperados.

  • Comprimento das Solicitações: Embora as LLMs possam processar solicitações curtas e longas, você deve considerar a compensação entre a brevidade e a clareza. Experimentar o comprimento da solicitação pode ajudá-lo a encontrar o equilíbrio ideal.

Criar modelos de solicitação

O SDK do Kernel Semântico dá suporte a uma linguagem de criação de modelos que permite o uso de expressões e variáveis ​​em solicitações de linguagem natural. Isso significa que você pode criar solicitações reutilizáveis ​​com diferentes parâmetros de entrada. Para inserir expressões em suas solicitações, a linguagem de modelagem usa colchetes {{...}}.

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);

Neste exemplo, a variável history ​​é referenciada na solicitação, indicada pelo símbolo $. Quando a solicitação é invocada, a variável history ​​é substituída pelo valor real fornecido no dicionário KernelArguments. Devido a isso, é possível criar solicitações que podem ser preenchidas dinamicamente com diferentes entradas.

Veja a saída de exemplo:

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.

Criar solicitações reutilizáveis ​​é especialmente útil quando você precisa executar a mesma tarefa com entradas diferentes. No próximo exercício, você praticará a criação de suas próprias solicitações reutilizáveis ​​usando o SDK do Kernel Semântico.