Informações gerais das estratégias de comandos

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. Testes e avaliações rigorosos continuam sendo crucial para otimizar o desempenho do modelo.

Os modelos de linguagem grandes (LLM) são treinados com grandes quantidades de dados de texto para aprender os padrões e as relações entre unidades de linguagem. 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.

Fluxo de trabalho da engenharia de comando

A engenharia de comando é um processo iterativo e conduzido por testes que pode melhorar o desempenho do modelo. Ao criar comandos, é importante definir com clareza os objetivos e os resultados esperados de cada um deles e testá-los sistematicamente para identificar áreas de melhoria.

O diagrama a seguir mostra o fluxo de trabalho da engenharia de comando:

Diagrama do fluxo de trabalho da engenharia de comando

Como criar um comando eficaz

Há dois aspectos de um comando que afetam a eficácia dele: conteúdo e estrutura.

  • Conteúdo:

    Para concluir uma tarefa, o modelo precisa de todas as informações relevantes associadas a ela. Essas informações podem incluir instruções, exemplos, informações contextuais e assim por diante. Para detalhes, consulte Componentes de um comando.

  • Estrutura:

    Mesmo quando todas as informações necessárias são fornecidas no comando, transmitir a estrutura das informações ajuda o modelo a analisá-las. Coisas como a ordenação, a rotulagem e o uso de delimitadores podem afetar a qualidade das respostas. Para ver um exemplo da estrutura de comandos, consulte Exemplo de modelo de comando.

Componentes de um comando

A tabela a seguir mostra os componentes essenciais e opcionais de um comando:

Componente Descrição Exemplo
Objetivo O que você quer que o modelo alcance. Seja específico e inclua todos os objetivos centrais. Também chamados de "missão" ou "meta". Seu objetivo é ajudar os estudantes com problemas de matemática sem dar diretamente a resposta.
Instruções Instruções detalhadas sobre como realizar a tarefa em questão. Também chamada de "tarefas", "etapas" ou "direções".
  1. Entenda o que o problema está perguntando.
  2. Entenda onde o estudante estagnou.
  3. Dê uma dica na próxima etapa do problema.
Componentes opcionais
Instruções do sistema

Diretivas técnicas ou ambientais que podem envolver o controle ou a alteração do comportamento do modelo em um conjunto de tarefas. Para muitas APIs de modelo, as instruções do sistema são especificadas em um parâmetro dedicado.

As instruções do sistema estão disponíveis no Gemini 2.0 Flash e em modelos mais recentes.

Você é especialista em programação com especialização em código de renderização para interfaces front-end. Ao descrever um componente de um site que quero criar, retorne o HTML e o CSS necessários para isso. Não forneça uma explicação para esse código. Ofereça também algumas sugestões de design de interface.
Perfil Quem ou o que o modelo está representando. Também chamado de "papel" ou "visão". Aqui, você dá aulas de matemática para ajudar os estudantes com o dever de casa dessa matéria.
Restrições Restrições sobre o que o modelo precisa aderir ao gerar uma resposta, incluindo o que o modelo pode e não pode fazer. Também chamadas de "proteções", "limites" ou "controles". Não dê a resposta diretamente para o estudante. Em vez disso, dê dicas na próxima etapa para resolver o problema. Se o estudante estiver completamente perdido, apresente as etapas detalhadas para resolver o problema.
Tom O tom da resposta. Também é possível especificar um perfil para influenciar o estilo e o tom. Também chamado de "estilo", "voz" ou "clima". Responda de maneira casual e técnica.
Contexto Qualquer informação que o modelo precisa consultar para realizar a tarefa em questão. Também chamado de "contexto", "documentos" ou "dados de entrada". Uma cópia dos planos de aula de matemática do estudante.
Exemplos few-shot Exemplos de como será a resposta a um determinado comando. Também chamados de "exemplares" ou "amostras". input: Estou tentando calcular quantas bolas de golfe cabem em uma caixa com volume de um metro cúbico. Converti um metro cúbico em centímetros cúbicos e o dividi pelo volume de uma bola de golfe em centímetros cúbicos, mas o sistema diz que minha resposta está errada.
output: As bolas de golfe são esferas e não podem ser acomodadas em um espaço com eficiência perfeita. Seus cálculos consideram a eficiência máxima de acomodação das esferas.
Etapas de raciocínio Peça ao modelo para explicar o raciocínio dele. Às vezes, isso pode melhorar a capacidade de raciocínio do modelo. Também chamadas de "etapas de pensamento". Explique seu raciocínio passo a passo.
Formato da resposta O formato em que você quer que a resposta esteja. Por exemplo, é possível solicitar que o modelo gere a resposta em JSON, tabela, Markdown, parágrafo, lista com marcadores, palavras-chave, pitch rápido de venda e assim por diante. Também chamado de "estrutura", "apresentação" ou "layout". Formate sua resposta em Markdown.
Recapitulação Repetir de maneira concisa os pontos principais do comando no final dele, especialmente as restrições e o formato da resposta. Não forneça a resposta. Em vez disso, dê dicas. Sempre formate sua resposta no formato Markdown.
Salvaguardas Baseia as perguntas na missão do bot. Também chamadas de "regras de segurança". N/A

Dependendo das tarefas específicas em questão, você pode optar por incluir ou excluir alguns componentes opcionais. Também é possível ajustar a ordenação dos componentes e verificar como isso pode afetar a resposta.

Exemplo de modelo de comando

O modelo de comando a seguir mostra um exemplo de como é um comando bem estruturado:

      <OBJECTIVE_AND_PERSONA>
      You are a [insert a persona, such as a "math teacher" or "automotive expert"]. Your task is to...
      </OBJECTIVE_AND_PERSONA>

      <INSTRUCTIONS>
      To complete the task, you need to follow these steps:
      1.
      2.
      ...
      </INSTRUCTIONS>

      ------------- Optional Components ------------

      <CONSTRAINTS>
      Dos and don'ts for the following aspects
      1. Dos
      2. Don'ts
      </CONSTRAINTS>

      <CONTEXT>
      The provided context
      </CONTEXT>

      <OUTPUT_FORMAT>
      The output format must be
      1.
      2.
      ...
      </OUTPUT_FORMAT>

      <FEW_SHOT_EXAMPLES>
      Here we provide some examples:
      1. Example #1
          Input:
          Thoughts:
          Output:
      ...
      </FEW_SHOT_EXAMPLES>

      <RECAP>
      Re-emphasize the key aspects of the prompt, especially the constraints, output format, etc.
      </RECAP>
    

Práticas recomendadas

Confira algumas práticas recomendadas para o design de comandos:

Lista de verificação de integridade do comando

Se um comando não estiver funcionando como esperado, use a lista de verificação a seguir para identificar possíveis problemas e melhorar a performance dele.

Problemas de escrita

  • Erros de digitação:verifique as palavras-chave que definem a tarefa (por exemplo, resumir em vez de resumir), termos técnicos ou nomes de entidades, já que erros de ortografia podem prejudicar o desempenho.
  • Gramática:se uma frase for difícil de analisar, tiver fragmentos contínuos, sujeitos e verbos incompatíveis ou parecer estruturalmente estranha, o modelo pode não entender corretamente o comando.
  • Pontuação:verifique o uso de vírgulas, pontos, aspas e outros separadores. A pontuação incorreta pode fazer com que o modelo interprete mal o comando.
  • Uso de jargão indefinido:evite usar termos, acrônimos ou siglas específicos do domínio como se tivessem um significado universal, a menos que estejam explicitamente definidos no comando.
  • Clareza:se você tiver dúvidas sobre o escopo, as etapas específicas a serem seguidas ou as suposições implícitas, o comando provavelmente não está claro.
  • Ambiguidade:evite usar qualificadores subjetivos ou relativos que não tenham uma definição concreta e mensurável. Em vez disso, forneça restrições objetivas (por exemplo, "escreva um resumo de três frases ou menos" em vez de "escreva um breve resumo").
  • Falta de informações importantes:se a tarefa exigir conhecimento de um documento, uma política da empresa, um histórico do usuário ou um conjunto de dados específico, inclua essas informações explicitamente no comando.
  • Escolha inadequada de palavras:verifique se o comando tem frases desnecessariamente complexas, vagas ou prolixas, porque isso pode confundir o modelo.
  • Revisão secundária:se o modelo continuar com desempenho ruim, peça para outra pessoa revisar seu comando.

Problemas com instruções e exemplos

  • Manipulação explícita:remova do comando a linguagem que não faz parte da tarefa principal e que tenta influenciar o desempenho usando apelos emocionais, adulação ou pressão artificial. Embora os modelos de fundação de primeira geração tenham mostrado melhorias em algumas circunstâncias com instruções como "coisas muito ruins vão acontecer se você não acertar", o desempenho dos modelos de fundação não vai mais melhorar e, em muitos casos, vai piorar.
  • Instruções e exemplos conflitantes:verifique isso auditando o comando para encontrar contradições lógicas ou incompatibilidades entre instruções ou entre uma instrução e um exemplo.
  • Instruções e exemplos redundantes:analise o comando e os exemplos para ver se a mesma instrução ou o mesmo conceito é declarado várias vezes de maneiras ligeiramente diferentes, sem adicionar novas informações ou nuances.
  • Instruções e exemplos irrelevantes:verifique se todas as instruções e exemplos são essenciais para a tarefa principal. Se alguma instrução ou exemplo puder ser removido sem diminuir a capacidade do modelo de realizar a tarefa principal, eles podem ser irrelevantes.
  • Uso de exemplos "few-shot":se a tarefa for complexa, exigir um formato específico ou tiver um tom sutil, inclua exemplos concretos e ilustrativos que mostrem uma entrada de amostra e a saída correspondente.
  • Especificação de formato de saída ausente:evite deixar o modelo adivinhar a estrutura da saída. Em vez disso, use uma instrução clara e explícita para especificar o formato e mostrar a estrutura da saída nos exemplos de poucas tentativas.
  • Definição de função ausente:se você pedir ao modelo para agir em uma função específica, verifique se ela está definida nas instruções do sistema.

Problemas de design de comandos e sistemas

  • Tarefa mal especificada:verifique se as instruções do comando fornecem um caminho claro para lidar com casos extremos e entradas inesperadas, e fornecem instruções para lidar com dados ausentes em vez de presumir que os dados inseridos estarão sempre presentes e bem formados.
  • Tarefa fora das capacidades do modelo:evite usar comandos que peçam ao modelo para realizar uma tarefa em que ele tenha uma limitação fundamental conhecida.
  • Muitas tarefas:se o comando pedir que o modelo execute várias ações cognitivas distintas em uma única passagem (por exemplo, 1. Resumir; 2. Extrair entidades, 3. Translate e 4. Escreva um e-mail), é provável que ele esteja tentando fazer demais. Divida os pedidos em comandos separados.
  • Formato de dados não padrão:quando as saídas do modelo precisam ser legíveis por máquina ou seguir um formato específico, use um padrão amplamente reconhecido, como JSON, XML, Markdown ou YAML, que pode ser analisado por bibliotecas comuns. Se o caso de uso exigir um formato não padrão, peça ao modelo para gerar um formato comum e use código para converter a saída.
  • Ordem incorreta da cadeia de pensamento (CoT):evite fornecer exemplos que mostrem o modelo gerando a resposta final e estruturada antes de concluir o raciocínio detalhado.
  • Referências internas conflitantes:evite escrever um comando com lógica não linear ou condicionais que exijam que o modelo junte instruções fragmentadas de vários lugares diferentes no comando.
  • Risco de injeção de comandos:verifique se há proteções explícitas em torno de entradas de usuários não confiáveis inseridas no comando, já que isso pode ser um grande risco de segurança.

A seguir