Estratégias de design de comandos

O design de prompt permite que usuários iniciantes no machine learning (ML) controlem a saída do modelo com o mínimo de sobrecarga. Ao elaborar os comandos com cuidado, é possível deslocar o modelo para gerar um resultado desejado. O design de prompt é uma maneira eficiente de testar a adaptação de um modelo de linguagem para um caso de uso específico.

Modelos de linguagem, especialmente modelos de linguagem grandes (LLM, na sigla em inglês), são treinados com grandes quantidades de dados de texto para aprender os padrões e as relações entre as palavras. Quando recebem algum texto (o prompt), os modelos de idioma podem prever o que provavelmente virá em seguida, como uma sofisticada ferramenta de preenchimento automático. Portanto, ao projetar solicitações, considere os diferentes fatores que podem influenciar o que um modelo prevê em seguida.

Não há uma maneira certa ou errada de projetar um prompt, mas há estratégias comuns que podem ser usadas para afetar as respostas do modelo. Nesta seção, apresentamos algumas estratégias de design de prompts comuns.

Dê instruções claras

Dar instruções ao modelo significa dizer ao modelo o que fazer. Essa estratégia pode ser uma maneira eficaz de personalizar o comportamento do modelo. As instruções fornecidas precisam ser claras e concisas.

O prompt a seguir fornece um bloco de texto e informa ao modelo para resumi-lo:

O modelo forneceu um resumo conciso, mas talvez você queira que o resumo seja escrito de uma maneira mais fácil de entender. Por exemplo, o prompt a seguir inclui uma instrução para escrever um resumo simples o suficiente para que um quinto aluno entenda:

A instrução de escrever o resumo para que um aluno do quinto ano possa entendê-lo resultou em uma resposta mais fácil de entender.

Resumo:

  • Dê aos modelos instruções para personalizar o comportamento.
  • Faça com que cada instrução seja clara e concisa.

Incluir exemplos

Você pode incluir exemplos no prompt que mostram ao modelo como fazer isso da forma certa. O modelo tenta identificar padrões e relacionamentos dos exemplos e aplicá-los para formar uma resposta. As solicitações que contêm alguns exemplos são chamadas de solicitações curtas, enquanto as que não fornecem exemplos são chamadas de solicitações de zero disparo. Muitas vezes, as solicitações de imagem são usadas para regular a formatação, a frase, o escopo ou o padrão geral das respostas do modelo.

Tomada zero ou poucas fotos

O prompt de imagem zero pede ao modelo para escolher a melhor explicação.

Se o caso de uso exigir que o modelo produza respostas concisas, inclua exemplos no prompt para dar preferência a respostas concisas.

O prompt a seguir fornece dois exemplos que mostram preferência pelas explicações mais curtas. Na resposta, é possível ver que os exemplos guiaram o modelo para escolher a explicação mais curta (Explicação2), em vez da explicação mais longa (Explicação1) como fazia anteriormente.

Encontrar o número ideal de exemplos

Teste o número de exemplos a serem fornecidos no prompt para ter os resultados mais desejados. Modelos como o PaLM geralmente podem identificar padrões usando alguns exemplos. No entanto, talvez seja necessário testar quantos exemplos levam aos resultados desejados. Para modelos mais simples, como o BERT, talvez você precise de mais exemplos. Ao mesmo tempo, se você incluir muitos exemplos, o modelo poderá começar a sobrepor a resposta aos exemplos.

Use exemplos para mostrar padrões em vez de antipadrões

Usar exemplos para mostrar ao modelo um padrão a ser seguido é mais eficaz do que usar exemplos para mostrar ao modelo um antipadrão a ser evitado.

Padrão negativo:

Padrão positivo:

Resumo:

  • Incluir exemplos de resposta no prompt ajuda o modelo a aprender como responder.
  • Dê ao modelo exemplos dos padrões a serem seguidos em vez de exemplos de padrões a serem evitados.
  • Faça experiências com o número de solicitações para incluir. Dependendo do modelo, poucos exemplos são ineficazes na alteração do comportamento do modelo. Muitos exemplos fazem com que o modelo apresente overfitting.

Permitir que o modelo conclua a entrada parcial

Os modelos de linguagem generativa funcionam como uma ferramenta avançada de preenchimento automático. Quando você fornece conteúdo parcial, o modelo pode fornecer o restante do conteúdo ou o que considera ser uma continuação desse conteúdo, como uma resposta. Ao fazer isso, se você incluir exemplos ou contexto, o modelo poderá levar esses exemplos ou contexto em consideração.

O exemplo a seguir fornece um prompt com uma instrução e uma entrada de entidade:

Embora o modelo tenha feito o que foi solicitado, escrever as instruções em linguagem natural pode ser um desafio. Nesse caso, é possível fornecer um exemplo e um prefixo de resposta e deixar o modelo concluí-lo:

Observe como "waffles" foi excluído da saída porque não estava listado no contexto como um campo válido.

Solicitar que o modelo formate a resposta

A estratégia de conclusão também pode ajudar a formatar a resposta. O exemplo a seguir solicita que o modelo crie um esboço de redação:

O prompt não especificou o formato da estrutura de tópicos, e o modelo escolheu um formato para você. Para que o modelo retorne um contorno em um formato específico, adicione texto que represente o início dele e deixe que o modelo o conclua com base no padrão iniciado.

Resumo:

  • Se você fornecer uma entrada parcial ao modelo, ele a preencherá com base em qualquer exemplo ou contexto disponível no prompt.
  • Às vezes, pode ser mais fácil fazer com que o modelo conclua uma entrada do que descrever a tarefa em linguagem natural.
  • Adicionar uma resposta parcial a uma solicitação pode orientar o modelo para seguir um padrão ou formato desejado.

Adicionar informações contextuais

É possível incluir nas instruções e informações do prompt que o modelo precisa para resolver um problema, em vez de presumir que o modelo tem todas as informações necessárias.

O exemplo a seguir pede ao modelo que forneça orientação para solução de problemas de um roteador:

:

A resposta se parece com informações genéricas de solução de problemas que não são específicas do roteador ou do status das luzes indicadoras de LED.

Para personalizar a resposta do roteador específico, é possível adicionar ao prompt o guia de solução de problemas dele como contexto para consulta ao fornecer uma resposta.

Resumo:

  • Inclua informações (contexto) no prompt que você quer que o modelo use ao gerar uma resposta.
  • Dê ao modelo instruções sobre o que fazer.

Adicionar prefixos

Um prefixo é uma palavra ou frase que você adiciona ao conteúdo do prompt e pode ser usada para várias finalidades, dependendo de onde você o colocou:

  • Prefixo de entrada: a adição de um prefixo aos sinais de entrada indica partes semanticamente significativas da entrada para o modelo. Por exemplo, os prefixos "Inglês:" e "Francês:" demarcam dois idiomas diferentes.
  • Prefixo da saída: mesmo que a saída seja gerada pelo modelo, é possível adicionar um prefixo à saída na solicitação. O prefixo de saída fornece ao modelo informações sobre o que é esperado como resposta. Por exemplo, o prefixo de saída "JSON:" sinaliza para o modelo que a saída precisa estar no formato JSON.
  • Prefixo de exemplo: em prompts curtos, adicionar prefixos aos exemplos fornece rótulos que o modelo pode usar ao gerar a saída, o que facilita a análise do conteúdo de saída.

No exemplo a seguir, "Texto:" é o prefixo de entrada e "A resposta é:" é o prefixo de saída.

Teste diferentes valores de parâmetros

Cada chamada que você envia a um modelo inclui valores de parâmetros que controlam como o modelo gera uma resposta. O modelo pode gerar diferentes resultados para diferentes valores de parâmetros. Teste diferentes valores de parâmetros para conseguir os melhores valores para a tarefa. Os parâmetros disponíveis para modelos diferentes podem ser diferentes. Os parâmetros mais comuns são:

  • Máximo de tokens de saída
  • Temperatura
  • Top-K
  • Top-P

Máximo de tokens de saída

Número máximo de tokens que podem ser gerados na resposta. Um token tem cerca de quatro caracteres. 100 tokens correspondem a cerca de 60 a 80 palavras.

Especifique um valor mais baixo para respostas mais curtas e um valor mais alto para respostas mais longas.

Temperatura

A temperatura é usada para amostragem durante a geração da resposta, que ocorre quando topP e topK são aplicados. A temperatura controla o grau de aleatoriedade na seleção do token. Temperaturas mais baixas são boas para comandos que exigem uma resposta mais determinista e menos aberta ou criativa, enquanto temperaturas maiores podem levar a resultados mais diversos ou criativos. Uma temperatura de 0 é determinista, o que significa que a resposta de maior probabilidade é sempre selecionada.

Na maioria dos casos de uso, é melhor começar com a temperatura 0.2. Se o modelo retornar uma resposta muito genérica, muito curta ou se o modelo fornecer uma resposta substituta, tente aumentar a temperatura.

Top-K

O top-k muda a forma como o modelo seleciona tokens para saída. Um top-K de 1 significa que o próximo token selecionado é o mais provável entre todos os tokens no vocabulário do modelo (também chamado de decodificação gananciosa), enquanto um top-K de 3 significa que o próximo token está selecionado entre os três tokens mais prováveis usando a temperatura.

Para cada etapa da seleção de tokens, são amostrados os tokens top-K com as maiores probabilidades. Em seguida, os tokens são filtrados com base no valor de top-P com o token final selecionado por meio da amostragem de temperatura.

Especifique um valor mais baixo para respostas menos aleatórias e um valor mais alto para respostas mais aleatórias. O top-K padrão é 40.

Top-P

O top-p muda a forma como o modelo seleciona tokens para saída. Os tokens são selecionados do mais provável (veja o top-K) para o menos provável até que a soma das probabilidades seja igual ao valor do top-P. Por exemplo, se os tokens A, B e C tiverem uma probabilidade de 0,3, 0,2 e 0,1 e o valor de top-P for 0.5, o modelo selecionará A ou B como token seguinte usando temperatura e exclui C como candidato.

Especifique um valor mais baixo para respostas menos aleatórias e um valor mais alto para respostas mais aleatórias. O top-P padrão é 0.95.

Estratégias de iteração de prompt

O design de prompt é um processo iterativo que geralmente requer algumas iterações antes de receber a resposta desejada de forma consistente. Esta seção fornece orientações sobre algumas coisas que você pode tentar ao iterar nas suas solicitações.

Use formulações diferentes

O uso de palavras diferentes ou frases em suas solicitações costuma gerar respostas diferentes do modelo, mesmo que todas tenham o mesmo significado. Se você não estiver recebendo os resultados esperados, tente reformular o prompt.

Mude para uma tarefa análoga

Se você não conseguir que o modelo siga as instruções para uma tarefa, tente dar a ela instruções para uma tarefa análoga que consegue o mesmo resultado.

Esse prompt instrui o modelo a categorizar um livro usando categorias predefinidas.

A resposta está correta, mas o modelo não permaneceu dentro dos limites das opções. Você também precisa modelar para responder apenas com uma das opções, em vez de em uma frase completa. Nesse caso, é possível reformular as instruções como uma pergunta de múltipla escolha e solicitar que o modelo escolha uma opção.

(em inglês)

Mude a ordem do conteúdo do comando

Às vezes, a ordem do conteúdo no prompt pode afetar a resposta. Tente alterar a ordem do conteúdo e ver como isso afeta a resposta.

Version 1:
[examples]
[context]
[input]

Version 2:
[input]
[examples]
[context]

Version 3:
[examples]
[input]
[context]

Respostas substitutas

Uma resposta substituta é retornada pelo modelo quando a solicitação ou a resposta acionam um filtro de segurança. Um exemplo de resposta substituta é "Não posso ajudar com isso, porque sou apenas um modelo de linguagem".

Se o modelo responder com uma resposta substituta, tente aumentar a temperatura.

O que evitar

  • Evite depender de modelos para gerar informações factuais.
  • Use com cuidado em problemas matemáticos e lógicos.

Próximas etapas

  • Agora que você entende melhor o design de comandos, tente criar seus próprios comandos usando o Google AI Studio.
  • Para saber mais sobre comandos multimodais, consulte a visão geral de conceitos multimodais.