Otimizar prompts de modelo de idioma
Os prompts são pistas de conversação que você dá a modelos de linguagem grandes (LLMs), moldando respostas com base em suas consultas ou instruções. Por exemplo, você pode solicitar que LLMs convertam uma frase do inglês para o francês ou gerem um resumo de um texto.
Na unidade anterior, você criou o prompt 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 elaboração de instruções claras e ricas em contexto para orientar o modelo a gerar uma resposta desejada. Para criar um prompt eficaz, precisão e clareza são fundamentais. Pode ser necessário experimentar e ajustar seus prompts para obter resultados precisos.
Dicas para criar prompts
Entradas Específicas Produzem Saídas Específicas: Os LLMs respondem com base na entrada que recebem. Criar prompts claros e específicos é crucial para obter a saída desejada.
A experimentação é fundamental: talvez seja necessário iterar e experimentar diferentes prompts para entender como o modelo interpreta e gera respostas. Pequenos ajustes podem levar a mudanças significativas nos resultados.
Questões de contexto: os LLMs consideram o contexto fornecido no prompt. Deve assegurar-se de que o contexto está bem definido e é relevante para obter respostas precisas e coerentes.
Lidar com a ambiguidade: Tenha em mente que os LLMs podem ter dificuldades com consultas ambíguas. Forneça contexto ou estrutura para evitar resultados vagos ou inesperados.
Duração dos prompts: Embora os LLMs possam processar prompts curtos e longos, você deve considerar o compromisso entre brevidade e clareza. Experimentar o comprimento do prompt pode ajudá-lo a encontrar o equilíbrio ideal.
Criar modelos de prompt
O SDK do kernel semântico suporta uma linguagem de modelagem que permite que você use expressões e variáveis em seus prompts de linguagem natural. Isso significa que você pode criar prompts que são reutilizáveis com diferentes parâmetros de entrada. Para incorporar expressões em seus prompts, a linguagem de modelos usa colchetes encaracolados {{...}}
.
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 history
variável é referenciada no prompt, indicado pelo $
símbolo. Quando o prompt é invocado, a history
variável é substituída pelo valor real fornecido no KernelArguments
dicionário. Isso permite que você crie prompts que podem ser preenchidos dinamicamente com entradas diferentes.
Aqui está o exemplo de saída:
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 prompts 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 seus próprios prompts reutilizáveis usando o SDK do Kernel Semântico.