Introdução à engenharia de prompt

Os modelos GPT-3, GPT-3.5 e GPT-4 do OpenAI são baseados em prompt. Com modelos baseados em prompt, o usuário interage com o modelo inserindo um prompt de texto, ao qual o modelo responde com um preenchimento de texto. Esse preenchimento é a continuação do texto de entrada do modelo.

Embora esses modelos sejam extremamente poderosos, seu comportamento também é muito sensível ao prompt. Isso torna a construção de prompt uma habilidade importante para desenvolver.

A criação de prompt pode ser complexa. Na prática, o prompt atua para configurar os pesos do modelo para concluir a tarefa desejada. É mais uma arte do que uma ciência, muitas vezes exigindo experiência e intuição para criar um prompt bem-sucedido. O objetivo deste artigo é ajudar você a começar esse processo de aprendizagem. Ele tenta captar conceitos e padrões gerais que se aplicam a todos os modelos GPT. No entanto, é importante entender que cada modelo se comporta de forma diferente. Portanto, os aprendizados podem não se aplicar da mesma forma a todos os modelos.

Noções básicas

Essa seção aborda os conceitos e os elementos básicos dos prompts GPT.

Os prompts de texto são como os usuários interagem com modelos GPT. Assim como acontece com todos os modelos de linguagem generativa, os modelos GPT tentam produzir a série seguinte de palavras que provavelmente seguirá do texto anterior. É como se tivéssemos perguntado Qual é a primeira coisa que vem à sua mente quando eu digo <prompt>?. Os exemplos abaixo demonstram esse comportamento. Com base nas primeiras palavras de conteúdo conhecido, o modelo é capaz de continuar o texto com precisão.

Prompt Completion
Há 87 anos, nossos antepassados criaram, neste continente, uma nova nação, concebida em Liberdade e dedicada à proposta de que todos os homens são iguais. […]
“Pode me chamar de Ismael.” "Há alguns anos, não importa exatamente quanto tempo, tendo pouco ou nenhum dinheiro na minha bolsa e nenhum interesse específico em terra, pensei em navegar um pouco e ver a parte líquida do mundo." [...]

À medida que você desenvolve prompts mais complexos, é útil ter em mente esse comportamento essencial. Independentemente do prompt fornecido, o modelo está simplesmente respondendo com o que ele determina que é mais provável (considerando seus dados e objetivos de treinamento). Se você fizer uma pergunta em seu prompt, o modelo não está seguindo um caminho de código "Q&A" separado, mas parece responder à pergunta porque uma resposta é o tipo mais provável de resposta para a pergunta fornecida como entrada.

Componentes do prompt

Ao usar a API de Preenchimento, embora não haja nenhuma distinção entre diferentes partes do prompt, ainda pode ser útil para o aprendizado e a discussão identificar componentes subjacentes do prompt. Com a API de Preenchimento do Chat, há seções distintas do prompt que são enviadas para a API na forma de uma matriz de dicionários com funções associadas: sistema, usuário e assistente. Essas diretrizes se concentram de forma mais geral em como pensar na criação de prompts em vez de fornecer diretrizes prescritivas específicas para uma API em vez de outra.

Também é importante entender que, embora possa haver outras maneiras válidas de analisar os prompts, o objetivo desse detalhamento é oferecer uma forma relativamente simples de pensar sobre a criação de prompts. Com a API de Preenchimento, todos os componentes são opcionais, mas pelo menos um deve estar presente e a maioria dos prompts inclui mais de um componente. Também pode haver uma área indefinida entre os componentes. A ordem apresentada abaixo corresponde aproximadamente à frequência com que cada componente é usado, de mais para menos.

Instruções

As instruções provavelmente são o componente de prompt mais usado. As instruções são simplesmente: instruções para o modelo sobre o que fazer. Embora simples no conceito, eles podem ser complexos na prática. A tabela a seguir ilustra isso com instruções simples e mais complexas, em duas formas diferentes.

Tipo de instrução Prompt Completion
Instruções simples Escreva uma introdução para um boletim informativo semanal. Bem-vindos ao nosso boletim semanal. Nesta semana, vamos focar em produtividade. Compartilharemos dicas e truques de produtividade para todas as áreas da sua vida. Esperamos que você goste e compartilhe com seus amigos!
Instruções complexas Escrever uma introdução para um boletim informativo semanal para minha empresa chamado Contoso. Deve mencionar a reunião ótima que tivemos com todos na semana passada e agradecer à equipe por todo o seu trabalho árduo nos últimos meses que foram difíceis. Bem-vindos ao boletim semanal da Contoso! Tivemos uma ótima reunião com todos na semana passada e quero agradecer à equipe por todo o seu trabalho árduo nos últimos meses que foram difíceis. Estamos ansiosos por um futuro brilhante e estou confiante de que, com a dedicação e o compromisso da nossa equipe, alcançaremos grandes feitos. Agradeço por fazer parte da nossa equipe e espero trabalhar com todos vocês nas próximas semanas e meses. Atenciosamente, [Seu nome]
Instruções Complexas Escreva uma introdução para um boletim informativo semanal, incluindo o seguinte:
- Minha empresa se chama Contoso
- Uma saudação enérgica
- Agradecimento à equipe pelo trabalho árduo durante meses difíceis
- Perspectiva positiva para o próximo trimestre
- Assinado pelo SLT
Olá, equipe da Contoso! Eu quero agradecer vocês pelo ótimo trabalho nos últimos meses. Foram dois meses difíceis, mas todos vocês uniram esforços e fizeram um trabalho incrível. Tenho orgulho de todos vocês. Estou muito confiante quanto ao próximo trimestre. Acho que vamos realizar grandes feitos. Agradecemos novamente, a Equipe de Liderança Sênior.

Conteúdo principal

O conteúdo principal refere-se a algum tipo de texto que é processado ou transformado pelo modelo. O conteúdo principal geralmente é usado em conjunto com instruções. Um exemplo simples seria a tradução de idioma. No exemplo a seguir, o texto em inglês seria considerado o conteúdo principal, enquanto que "Traduzir para o francês:" é uma instrução.

Prompt Completion
Como chegar ao museu?
Traduzir para o francês:
Pouvez-vous s'il vous plaît me dire comment aller au musée?

O conteúdo primário também pode ser mais longo. No exemplo a seguir, o conteúdo principal é a seção de introdução da entrada da Wikipédia sobre complexidade de tempo, que tem quase 300 palavras. Este conteúdo foi abreviado em nossa tabela para facilitar a exibição.

Prompt Completion
Na ciência da computação, a complexidade de tempo é a complexidade computacional que descreve a quantidade de tempo do computador necessário para executar um algoritmo. A complexidade de tempo é normalmente estimada por [...]
Resuma o texto anterior em algumas frases:
A complexidade de tempo é uma medida de quanto tempo um algoritmo leva para ser executado. Normalmente, ela é demonstrada como uma função do tamanho da entrada. A medida mais comum é a complexidade de tempo no pior cenário, que é a quantidade máxima de tempo necessária para entradas de um determinado tamanho.
Na ciência da computação, a complexidade de tempo é a complexidade computacional que descreve a quantidade de tempo do computador necessário para executar um algoritmo. A complexidade de tempo é normalmente estimada por [...]
TL;DR (Muito longo, não lido)
A complexidade de tempo de um algoritmo é o tempo necessário para executar um algoritmo. A complexidade de tempo geralmente é estimada contando o número de operações básicas executadas pelo algoritmo, supondo que cada operação básica leve uma quantidade fixa de tempo para ser executada. A complexidade de tempo geralmente é expressa como uma função do tamanho da entrada.

Os modelos GPT também podem lidar com o conteúdo principal que é estruturado. No exemplo a seguir, um TSV sobre cervejas na Bélgica (abreviado para exibição neste artigo) é transmitido para o modelo como parte do prompt. Ele é capaz de interpretar o conteúdo e responder a perguntas sobre os dados corretamente.

Prompt Completion
Belgian Beer Brands
Beer name Beer style color ABV Brewery
"Chimay Gold: ""Doree""" trappist pale ale gold 4.80% Chimay Brewery (official trappist)
"Chimay Blue: ""Grande Reserve""" trappist dark ale dark 9.00%
[…]
Fazendo referência à tabela acima, quantas cervejas têm o ABV menor que 6%?
Há 10 cervejas na tabela com o ABV menor que 6%.

Exemplos

Os prompts bem-sucedidos geralmente dependem da prática de aprendizado de "única tentativa" ou "poucas tentativas". Isso se refere à inclusão de um ou mais exemplos do comportamento desejado do modelo, normalmente incluindo pares de entrada e saída. Isso não é aprender no sentido de que o modelo é permanentemente alterado, mas sim que os exemplos condicionem melhor o modelo para responder conforme desejado apenas para a inferência atual. Às vezes, o uso de prompts sem exemplos é chamado de aprendizado "sem tentativa". Observe que, com a API de Preenchimento de Chat, alguns exemplos de aprendizado são normalmente adicionados à matriz de mensagens na forma de interações de usuário/assistente de exemplo após a mensagem inicial do sistema.

Tipo de aprendizado Prompt Completion
Zero-shot Título: o técnico está confiante de que lesão não vai atrapalhar o Warriors
Tópico:
O técnico está confiante de que a lesão não vai atrapalhar a temporada do Warriors. O time ainda está focado em seus objetivos e continuará trabalhando duro para alcançá-los.
Few-shot Título: Correa, do Twins, usará a cláusula de autoexclusão e testará agência independente
Tópico: beisebol
Título: Copa do Mundo do Catar terá áreas para torcedores ficarem sóbrios
Tópico: futebol
Título: Yates: informação para a 6ª semana de Fantasy Football
Tópico: futebol americano
Título: o técnico está confiante de que lesão não vai atrapalhar o Warriors
Tópico:
Basquete

O exemplo acima ilustra a utilidade do aprendizado com poucas tentativas. Sem os exemplos, o modelo parece estar adivinhando o comportamento desejado, enquanto os exemplos demonstram ao modelo como funcionar corretamente. Isso também demonstra o poder do modelo. Ele pode inferir a categoria de etiqueta desejada, mesmo sem uma etiqueta de "basquete" nos exemplos.

Indicação

As sugestões atuam como o "estímulo" para a saída do modelo, ajudando a direcionar o modelo para a saída desejada. Geralmente, é um prefixo no qual o modelo pode ser criado. No exemplo abaixo, mostramos a sugestão direcionando a história para incluir elementos-chave. As sugestões geralmente são usadas junto com instruções, mas nem sempre. Nos exemplos abaixo, o modelo está sendo usado para resumir um email de declaração longa. Uma sugestão é usada em um caso para ajudar a concentrar a saída do modelo e sugerir um formato de saída específico (pontos de marcador) no outro.

No contexto das instruções da API de Preenchimento de Chat, siga a forma da mensagem do sistema e os exemplos de poucas tentativas são indicados fornecendo uma série de interações de usuário/assistente de exemplo para ajudar na preparação do modelo.

Quantidade de sugestões Prompt Completion
0 As análises de desempenho são um componente fundamental da nossa abordagem de Desenvolvimento e Desempenho na Contoso. […]
Resuma a mensagem de email acima:
A finalidade deste email é informar os funcionários sobre alterações recentes na experiência de análise de desempenho, que faz parte da abordagem de Desenvolvimento e Desempenho da Contoso. As alterações incluem uma estrutura aperfeiçoada, experiência atualizada do usuário na ferramenta e prompts centrados. Além disso, agora há uma seção opcional de Iniciadores de Conversa para os funcionários sinalizarem tópicos que gostariam de discutir com seus gerentes.
1 As análises de desempenho são um componente fundamental da nossa abordagem de Desenvolvimento e Desempenho na Contoso. […]
Resuma a mensagem de email acima:
A principal vantagem da mensagem é
que a Contoso está melhorando a experiência de análise de desempenho, tornando-a mais focada em prioridades, expectativas e nos impacto principais. Além disso, estão atualizando a experiência do usuário na ferramenta com dicas, recursos e diretrizes. Por fim, estão adicionando diretrizes sobre como ativar as principais prioridades em toda a empresa.
2 As análises de desempenho são um componente fundamental da nossa abordagem de Desenvolvimento e Desempenho na Contoso. […]
Resuma a mensagem de email acima:
Pontos principais:
A Contoso está introduzindo alterações na experiência de análise de desempenho, com base em comentários dos funcionários.
• As alterações incluem um novo foco em prioridades, expectativas e impacto principais; uma experiência de usuário atualizada; e novas diretrizes sobre as principais prioridades em toda a empresa.
• As análises de desempenho são um momento para refletir sobre o desempenho e o aprendizado passados, bem como planejar prioridades futuras e oportunidades de crescimento.
• Funcionários e gerentes devem escrever comentários antes da reunião de análise de desempenho.
• Deve haver pelo menos duas análises de desempenho por ano.
• O tempo de investimento para cada análise deve permanecer quase o mesmo.

Conteúdo de suporte

Conteúdo de apoio são informações que o modelo pode utilizar para influenciar a saída de alguma forma. Ele difere do conteúdo principal, pois não é o principal objetivo da tarefa, mas geralmente é usado junto com o conteúdo principal. Exemplos comuns incluem informações contextuais, como a data atual, o nome do usuário, as preferências do usuário e assim por diante. O exemplo a seguir usa o conteúdo de apoio para ajudar a organizar um conjunto de workshops planejados para o usuário. Sem o apoio (tópicos importantes), o modelo simplesmente lista os workshops (truncados para exibição). Quando informado dos meus tópicos importantes, o modelo é capaz de agrupar as reuniões com precisão.

Conteúdo de suporte Prompt Completion
Sem Lista do workshop:
Descrição do título
Início do planejamento do workshop – junte-se a nós para iniciar nosso workshop! Ouça nossos líderes discutirem sobre prioridades entre grupos e aprendizados para o próximo ano. O convite para esse evento já foi enviado para todos em [...]
Resuma os workshops acima, agrupados por tópico:
Lista do workshop:
Início do planejamento do workshop
- Encerramento do planejamento do workshop
- MeetUp principal
- Perspectivas do cliente
- Áreas de impacto e foco principal
- Melhores práticas
- Acelerar a adoção do aplicativo [...]
With Lista do workshop:
Descrição do título
Início do planejamento do workshop – junte-se a nós para iniciar nosso workshop! Ouça nossos líderes discutirem sobre prioridades entre grupos e aprendizados para o próximo ano. O convite para esse evento já foi enviado para todos em [...]
Meus tópicos importantes: engenharia de prompt, pesquisa e modelos GPT
Resuma os workshops acima, agrupados pelos tópicos importantes:
1. Engenharia de prompt:
- Novas dicas de engenharia de prompt
- A arte da engenharia de prompt
2. Pesquisa:
- Introdução à pesquisa de vetor com incorporação
3. Modelos GPT:
- Introdução ao GPT-4
- GPT-35-Turbo em profundidade.

Práticas recomendadas

  • Seja específico. Deixe o mínimo de espaço possível para interpretação. Restrinja o espaço operacional.
  • Seja descritivo. Use analogias.
  • Aprimore-se. Às vezes, será necessário repetir o modelo. Dê instruções antes e depois do conteúdo principal, use uma instrução e uma sugestão etc.
  • A ordem é importante. A ordem em que você apresentar as informações ao modelo poderá impactar o resultado. Se você colocar as instruções antes do conteúdo ("resuma o seguinte...") ou depois ("resuma o acima...") pode fazer a diferença na saída. Até mesmo a ordem dos exemplos de poucas tentativas é importante. Isso é conhecido como viés de recência.
  • Dê uma “saída” ao modelo. Às vezes, pode ser útil dar ao modelo um caminho alternativo se não for possível concluir a tarefa atribuída. Por exemplo, ao fazer uma pergunta sobre um texto, você poderá incluir algo como "responder com "não encontrado" se não houver resposta." Isso pode evitar que o modelo gere respostas falsas.

Eficiência do espaço

Embora o tamanho da entrada aumente a cada nova geração de modelos GPT, continuará havendo casos em que são fornecidos mais dados do que o modelo consegue lidar. Os modelos GPT dividem palavras em "tokens." Embora as palavras comuns com várias sílabas geralmente são um único token, palavras menos comuns são divididas em sílabas. Às vezes, os tokens podem ser contraditórios, conforme mostrado pelo exemplo abaixo, que demonstra limites de token para diferentes formatos de data. Nesse caso, escrever a palavra inteira do mês é mais eficiente do que uma data completamente numérica. O intervalo atual de suporte a tokens vai de 2.000 tokens com modelos GPT-3 anteriores a até 32.768 tokens com a versão 32k do modelo GPT-4 mais recente.

Captura de tela de uma cadeia de caracteres com cores realçadas definindo os limites do token.

Por conta desse espaço limitado, é importante usá-lo da forma mais eficiente possível.

  • Tabelas – conforme mostrado nos exemplos na seção anterior, os modelos GPT podem entender facilmente os dados em formato de tabela. Essa pode ser uma maneira eficiente de incluir dados, em vez de anteceder cada campo com nome (como com JSON).
  • Espaço em branco – espaços em branco consecutivos são tratados como tokens separados, sendo uma maneira fácil de ocupar espaço. Os espaços que antecedem uma palavra, por outro lado, normalmente são tratados como parte do mesmo token que a palavra. Observe cuidadosamente o uso do espaço em branco e não utilize pontuação quando somente um espaço é o suficiente.

Próximas etapas

Saiba mais sobre o Azure OpenAI.