Otimizar os pedidos de um modelo linguístico
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?";
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?"""
Neste prompt, você fornece conteúdo para o modelo de idioma junto com as instruções. O conteúdo ajuda o modelo a gerar resultados mais relevantes para o usuário.
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. Talvez seja necessário experimentar e ajustar seus prompts para obter resultados precisos.
Use exemplos para orientar o modelo
Você pode incluir exemplos em seus prompts para ajudar a orientar a resposta. Os exemplos podem vir antes ou depois das instruções. Os exemplos imediatos são classificados como aprendizagem zero-shot ou aprendizagem few-shot com base no facto de conterem ou não conclusões literais. Uma conclusão literal é um exemplo específico e predefinido de uma resposta incluída no prompt. Demonstra exatamente que tipo de resposta se espera da IA, palavra por palavra. Esses exemplos tornam mais fácil para a IA imitar a estrutura, o estilo ou o tom das conclusões fornecidas.
Aprendizagem zero-shot (ou aprendizagem sem exemplos prévios)
Com a aprendizagem zero-shot, você inclui as instruções, mas exclui as finalizações literais. Os prompts de tiro zero dependem do conhecimento existente do modelo para gerar uma resposta. Os prompts de tiro zero são úteis quando você quer uma resposta geral ou quando a tarefa é simples e não requer muita orientação. Zero-shot prompting também consome menos recursos, uma vez que depende do conhecimento existente.
Aqui está um exemplo de um prompt zero-shot que diz ao modelo para avaliar a entrada do usuário, determinar a intenção do usuário e prefaciar a saída com "Intent: ".
string prompt = $"""
Instructions: What is the intent of this request?
If you don't know the intent, don't guess; instead respond with "Unknown".
Choices: SendEmail, SendMessage, CompleteTask, CreateDocument, Unknown.
User Input: {request}
Intent:
""";
prompt = f"""
Instructions: What is the intent of this request?
If you don't know the intent, don't guess; instead respond with "Unknown".
Choices: SendEmail, SendMessage, CompleteTask, CreateDocument, Unknown.
User Input: {request}
Intent:
"""
Aprendizagem com poucos exemplos
Com o aprendizado por poucos exemplos, você inclui completamentos palavra por palavra em seu prompt para orientar a resposta do modelo. Normalmente, um a cinco exemplos são incluídos. Os exemplos demonstram a estrutura, o estilo ou o tipo de resposta que você deseja. A aprendizagem com poucos exemplos produz mais tokens e também leva o modelo a atualizar o seu conhecimento. A solicitação de poucos tiros é especialmente valiosa para reduzir a ambiguidade e alinhar os resultados com o resultado desejado.
Aqui está um exemplo de um prompt de poucas fotos que diz ao modelo para avaliar a entrada do usuário, determinar a intenção do usuário e prefaciar a saída com "Intent: ".
string prompt = $"""
Instructions: What is the intent of this request?
If you don't know the intent, don't guess; instead respond with "Unknown".
Choices: SendEmail, SendMessage, CompleteTask, CreateDocument, Unknown.
User Input: Can you send a very quick approval to the marketing team?
Intent: SendMessage
User Input: Can you send the full update to the marketing team?
Intent: SendEmail
User Input: {request}
Intent:
""";
prompt = f"""
Instructions: What is the intent of this request?
If you don't know the intent, don't guess; instead respond with "Unknown".
Choices: SendEmail, SendMessage, CompleteTask, CreateDocument, Unknown.
User Input: Can you send a very quick approval to the marketing team?
Intent: SendMessage
User Input: Can you send the full update to the marketing team?
Intent: SendEmail
User Input: {request}
Intent:
"""
Use personas em prompts
A atribuição de personas em prompts é uma técnica usada para orientar o modelo a adotar um ponto de vista, tom ou experiência específicos ao gerar respostas. As personas permitem que você adapte a saída para melhor se adequar ao contexto ou público da tarefa. A persona é útil quando você precisa da resposta para simular uma profissão ou refletir um tom de voz. Para atribuir uma persona, você deve descrever claramente a definição de função em seu prompt.
Aqui está um exemplo de um prompt que atribui uma persona:
string prompt = $"""
You are a highly experienced software engineer. Explain the concept of asynchronous programming to a beginner.
""";
prompt = """
You are a highly experienced software engineer. Explain the concept of asynchronous programming to a beginner.
"""
Incitamento da cadeia de pensamento
Com a solicitação de cadeia de pensamento, você solicita que o modelo execute uma tarefa passo a passo e apresente cada etapa e seu resultado em ordem na saída. O prompt em cadeia pode simplificar a engenharia de prompts, transferindo algum planejamento de execução para o modelo. Os prompts em cadeia facilitam o isolamento de quaisquer problemas em uma etapa específica para que você saiba onde concentrar mais esforços. Você pode instruir o modelo a incluir sua cadeia de pensamento ou pode usar exemplos para mostrar ao modelo como dividir tarefas.
Aqui está um exemplo que instrui o modelo a descrever o raciocínio passo a passo:
string prompt = $"""
A farmer has 150 apples and wants to sell them in baskets. Each basket can hold 12 apples. If any apples remain after filling as many baskets as possible, the farmer will eat them. How many apples will the farmer eat?
Instructions: Explain your reasoning step by step before providing the answer.
""";
prompt = """
A farmer has 150 apples and wants to sell them in baskets. Each basket can hold 12 apples. If any apples remain after filling as many baskets as possible, the farmer will eat them. How many apples will the farmer eat?
Instructions: Explain your reasoning step by step before providing the answer.
"""
Aqui está um exemplo que descreve as etapas para concluir o modelo:
prompt = $"""
Instructions: A farmer has 150 apples and wants to sell them in baskets. Each basket can hold 12 apples. If any apples remain after filling as many baskets as possible, the farmer will eat them. How many apples will the farmer eat?
First, calculate how many full baskets the farmer can make by dividing the total apples by the apples per basket:
1.
Next, subtract the number of apples used in the baskets from the total number of apples to find the remainder:
1.
"Finally, the farmer will eat the remaining apples:
1.
""";
prompt = """
Instructions: A farmer has 150 apples and wants to sell them in baskets. Each basket can hold 12 apples. If any apples remain after filling as many baskets as possible, the farmer will eat them. How many apples will the farmer eat?
First, calculate how many full baskets the farmer can make by dividing the total apples by the apples per basket:
1.
Next, subtract the number of apples used in the baskets from the total number of apples to find the remainder:
1.
Finally, the farmer will eat the remaining apples:
1.
"""
A saída desse prompt deve ser semelhante à seguinte saída:
Divide 150 by 12 to find the number of full baskets the farmer can make: 150 / 12 = 12.5 full baskets
The farmer can make 12 full baskets with 12 apples each.
Multiply 12 full baskets by 12 apples per basket to find the number of apples used in the baskets: 12 * 12 = 144 apples
Subtract the number of apples used in the baskets from the total number of apples: 150 - 144 = 6 apples
The farmer will eat 6 remaining apples.
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.
A criação de prompts eficazes requer clareza, precisão e design cuidadoso. Técnicas como "zero-shot" e "few-shot" learning, atribuições de persona e encadeamento de raciocínio podem melhorar a qualidade e a relevância das respostas. Ao fornecer instruções claras, contexto bem definido e exemplos quando necessário, você pode orientar o modelo para gerar respostas relevantes ajustadas. Para obter os melhores resultados, lembre-se de experimentar e refinar os seus prompts.