Introdução à engenharia de pedidos

Os modelos GPT-3, GPT-3.5 e GPT-4 do OpenAI são baseados em pedidos. Com os modelos baseados em pedidos, o utilizador interage com o modelo ao introduzir um pedido de texto, ao qual o modelo responde com uma conclusão de texto. Esta conclusão é o prolongamento do modelo do texto de entrada.

Embora estes modelos sejam extremamente eficientes, o respetivo comportamento é também muito sensível ao pedido. Isto faz da construção do pedido uma competência essencial a desenvolver.

A construção rápida pode ser difícil. Na prática, o prompt age para configurar os pesos do modelo para concluir a tarefa desejada, mas é 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 é ajudá-lo a começar este processo de aprendizagem. Ele tenta capturar 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, então os aprendizados podem não se aplicar igualmente a todos os modelos.

Noções Básicas

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

Os prompts de texto são como os usuários interagem com os modelos GPT. Tal como acontece com todos os modelos de linguagem generativa, os modelos GPT tentam produzir a próxima série de palavras que são mais prováveis de seguir o texto anterior. É como se estivéssemos dizendo Qual é a primeira coisa que vem à sua mente quando eu digo <prompt>?. Os exemplos abaixo demonstram esse comportamento. Dadas as primeiras palavras de conteúdo famoso, o modelo é capaz de continuar com precisão o texto.

Pedido Conclusão
Quatro pontos e sete anos atrás o nosso os pais criaram neste continente, uma nova nação, concebida na Liberdade, e dedicada à proposição de que todos os homens são criados iguais. [...]
"Chame-me Ismael." "Há alguns anos, não importa quanto tempo precisamente, com pouco ou nenhum dinheiro na bolsa, e nada de particular que me interessasse em terra, pensei que navegaria um pouco e veria a parte aquática do mundo." [...]

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

Componentes de prompt

Ao usar a API de conclusão, embora não haja diferenciação entre as diferentes partes do prompt, ela ainda pode ser útil para aprendizado e discussão para identificar componentes subjacentes do prompt. Com a API de conclusão de bate-papo, 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. Esta orientação se concentra mais geralmente em como pensar na construção rápida, em vez de fornecer orientação prescritiva específica para uma API em detrimento de outra.

Também é importante entender que, embora possa haver outras maneiras válidas de dissecar prompts, o objetivo dessa análise é fornecer uma maneira relativamente simples de pensar sobre a construção imediata. Com a API de conclusão, 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 alguma área cinzenta entre os componentes. A ordem apresentada abaixo corresponde aproximadamente à frequência com que cada componente é usado, do mais para o menos.

Instruções

As instruções são provavelmente o componente de prompt mais comumente usado. As instruções são simplesmente isso: 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 mostrando instruções simples e mais complexas, em duas formas diferentes.

Tipo de Instrução Pedido Conclusão
Instruções simples Escreva uma introdução para um boletim informativo semanal. Bem-vindo à nossa newsletter semanal. Esta semana temos um foco especial na produtividade. Vamos partilhar dicas e truques sobre como ser produtivo em todas as áreas da sua vida. Esperamos que goste e por favor partilhe com os seus amigos!
Instruções complexas Escreva uma introdução para um boletim informativo semanal para minha empresa chamada Contoso. Deve mencionar a grande reunião de todas as mãos que tivemos na semana passada e agradecer à equipe por todo o seu trabalho árduo ao longo dos últimos meses difíceis. Bem-vindo ao boletim informativo semanal da Contoso! Tivemos uma grande reunião a todas as mãos na semana passada e quero agradecer à equipa por todo o seu trabalho árduo ao longo dos últimos meses difíceis. Estamos ansiosos por um futuro brilhante e estou confiante de que, com a dedicação e o compromisso da nossa equipa, conseguiremos grandes coisas. Obrigado por fazer parte da nossa equipa e estou ansioso por trabalhar com todos vó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 exuberante
- Agradecer à equipa pelo seu trabalho árduo ao longo de alguns meses difíceis
- Perspetivas positivas para o próximo trimestre
- Assinado pelo SLT
Olá equipe Contoso! Queria reservar um momento para vos agradecer todo o vosso trabalho árduo ao longo dos últimos meses. Foram alguns meses difíceis, mas todos vocês se uniram e fizeram um trabalho incrível. Estou muito orgulhoso de todos vocês. Olhando para o próximo trimestre, estou me sentindo muito positivo. Acho que vamos conseguir grandes coisas. Obrigado novamente, A Equipe de Liderança Sênior.

Conteúdo primário

O conteúdo primário refere-se a algum tipo de texto que está sendo processado ou transformado pelo modelo. O conteúdo principal é normalmente usado em conjunto com instruções. Um exemplo simples seria a tradução linguística. No exemplo abaixo, o texto em inglês seria considerado o conteúdo principal, enquanto "Traduzir para francês:" é uma instrução.

Pedido Conclusão
Você pode por favor me dizer como chegar ao museu?
Traduzir para Francês:
Pouvez-vous s'il vous plaît me dire comment aller au musée?

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

Pedido Conclusão
Em ciência da computação, a complexidade de tempo é a complexidade computacional que descreve a quantidade de tempo de computador que leva para executar um algoritmo. A complexidade do tempo é comumente 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 é expresso em função do tamanho da entrada. A medida mais comum é a complexidade de tempo do pior caso, que é a quantidade máxima de tempo necessária para entradas de um determinado tamanho.
Em ciência da computação, a complexidade de tempo é a complexidade computacional que descreve a quantidade de tempo de computador que leva para executar um algoritmo. A complexidade do tempo é comumente estimada por [...]
TL;DR (Muito tempo não lido)
A complexidade de tempo de um algoritmo é a quantidade de tempo que leva para executar um algoritmo. A complexidade do tempo é comumente estimada pela contagem do número de operações elementares realizadas pelo algoritmo, supondo que cada operação elementar leva uma quantidade fixa de tempo para ser executada. A complexidade do tempo é geralmente expressa em função do tamanho da entrada.

Os modelos GPT também podem lidar com conteúdo primário estruturado. No exemplo abaixo, um TSV sobre cervejas na Bélgica (abreviado para exibição neste artigo) é passado para o modelo como parte do prompt. É capaz de interpretar adequadamente o conteúdo e responder a perguntas sobre os dados.

Pedido Conclusão
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 menos de 6% ABV?
Há 10 cervejas na tabela que são menos de 6% ABV.

Exemplos

Prompts bem-sucedidos geralmente dependem da prática de aprendizagem "one-shot" ou "few-shot". 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 condicionam melhor o modelo a responder como desejado apenas para a inferência atual. O uso de prompts sem exemplos é por vezes referido como aprendizagem "zero-shot". Observe que, com a API de conclusão do bate-papo, alguns exemplos de aprendizado são normalmente adicionados à matriz de mensagens na forma de exemplos de interações do usuário/assistente após a mensagem inicial do sistema.

Tipo de Aprendizagem Pedido Conclusão
Tiro zero Manchete: Treinador confiante de que lesão não vai atrapalhar Warriors
Tópico:
O treinador está confiante de que a lesão não vai atrapalhar a temporada dos Warriors. A equipa continua focada nos seus objetivos e que vai continuar a trabalhar arduamente para os alcançar.
Poucos tiros Manchete: Correa, dos gêmeos, vai usar opt-out, testar agência livre
Tópico: Beisebol
Manchete: Copa do Mundo do Catar terá zonas para ficar sóbrio
Tema: Futebol
Manchete: Yates: Informações sobre futebol fantástico para a Semana 6
Tema: Futebol
Manchete: Treinador confiante de que lesão não vai atrapalhar Warriors
Tópico:
Basquetebol

O exemplo acima ilustra a utilidade da aprendizagem de poucos tiros. Sem os exemplos, o modelo parece estar adivinhando o comportamento desejado, enquanto os exemplos mostram claramente o modelo como operar. Isso também demonstra o poder do modelo, ele pode inferir a categoria de rótulo que é desejado, mesmo sem um rótulo de "basquete" nos exemplos.

Deixa

As pistas atuam como o "jumpstart" para a saída do modelo, ajudando a direcionar o modelo para a saída desejada. Muitas vezes, é um prefixo no qual o modelo pode se basear. No exemplo abaixo, mostramos a deixa direcionando a história para incluir elementos-chave. As dicas são frequentemente usadas juntamente com instruções, mas nem sempre. Nos exemplos abaixo, o modelo está sendo usado para resumir um longo e-mail de anúncio. Uma pista é usada em um caso para ajudar a focar a saída do modelo e sugerir um formato de saída específico (bullet points) no outro.

No contexto da API de conclusão do bate-papo, as instruções assumem a forma da mensagem do sistema, e alguns exemplos são indicados fornecendo uma série de exemplos de interações usuário/assistente para ajudar a preparar o modelo.

Número de pistas Pedido Conclusão
0 As avaliações de desempenho são um componente central da nossa abordagem de Desempenho e Desenvolvimento na Contoso. [...]
Resuma a mensagem de e-mail acima:
O objetivo deste email é informar os funcionários sobre as alterações recentes na experiência de análise de desempenho, que faz parte da abordagem de Desempenho e Desenvolvimento da Contoso. As mudanças incluem uma estrutura aprimorada, experiência do usuário atualizada na ferramenta e prompts focados. Além disso, agora há uma seção opcional de Iniciadores de Conversa para que os funcionários sinalizem tópicos que gostariam de discutir com seus gerentes.
1 As avaliações de desempenho são um componente central da nossa abordagem de Desempenho e Desenvolvimento na Contoso. [...]
Resuma a mensagem de e-mail acima:
A principal conclusão da mensagem é
que a Contoso está melhorando a experiência de análise de desempenho, tornando-a mais focada nas principais prioridades, expectativas e impacto. Além disso, eles estão atualizando a experiência do usuário na ferramenta com dicas, recursos e orientações. Por último, estão a acrescentar orientações sobre como ativar as principais prioridades de toda a empresa.
2 As avaliações de desempenho são um componente central da nossa abordagem de Desempenho e Desenvolvimento na Contoso. [...]
Resuma a mensagem de e-mail acima:
Pontos Principais:
A Contoso está introduzindo alterações na experiência de análise de desempenho, com base nos comentários dos funcionários.
• As mudanças incluem um novo foco nas principais prioridades, expectativas e impacto; uma experiência de utilizador melhorada; e novas orientações sobre as principais prioridades de toda a empresa.
• As avaliações de desempenho são um momento para refletir sobre o desempenho e a aprendizagem passados, bem como para planear prioridades futuras e oportunidades de crescimento.
• Funcionários e gerentes devem escrever comentários antes da reunião de avaliação de desempenho.
• Deve haver pelo menos duas avaliações de desempenho por ano.
• O investimento de tempo para cada revisão deve permanecer praticamente o mesmo.

Conteúdo de suporte

O conteúdo de suporte é uma informação que o modelo pode utilizar para influenciar a saída de alguma forma. Ele difere do conteúdo primário porque não é o alvo principal da tarefa, mas normalmente é usado junto com o conteúdo primário. Exemplos comuns incluem informações contextuais, como a data atual, o nome do usuário, preferências do usuário e assim por diante. O exemplo abaixo usa conteúdo de suporte para ajudar a organizar um conjunto de workshops planejados para o usuário. Sem o suporte (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 com precisão as reuniões.

Conteúdo de suporte Pedido Conclusão
Sem Lista de oficinas:
Descrição do título
Workshop de Planeamento Kickoff Junte-se a nós para iniciar o nosso workshop! Ouça nossos líderes sobre as prioridades e aprendizados entre grupos para o próximo ano. O convite para este evento já foi enviado a todos em [...]
Resuma os workshops acima, agrupados por tema:
Lista de oficinas:
Início do Workshop de Planeamento
-Conclusão do Workshop de Planeamento
- Núcleo MeetUp
- Perspetivas orientadas para o cliente
-Impacto e Principais Áreas de Foco
-Melhores práticas
-Acelerando a adoção do aplicativo [...]
With Lista de oficinas:
Descrição do título
Workshop de Planeamento Kickoff Junte-se a nós para iniciar o nosso workshop! Ouça nossos líderes sobre as prioridades e aprendizados entre grupos para o próximo ano. O convite para este evento já foi enviado a todos em [...]
Meus tópicos importantes: engenharia de prompt, pesquisa, modelos GPT
Resumir os workshops acima, agrupados pelos meus tópicos importantes:
1. Engenharia Imediata:
- Novas dicas rápidas de engenharia
- A arte da engenharia rápida
2. Pesquisar:
-Introdução à pesquisa vetorial com incorporação
3. Modelos GPT:
- Introdução ao GPT-4
- GPT-35-Turbo em profundidade.

Melhores práticas

  • Seja específico. Seja o mais direto possível. Restrinja o espaço operacional.
  • Seja descritivo. Utilize analogias.
  • Duplique. Às vezes, você pode precisar se repetir para o modelo. Dê instruções antes e depois do seu conteúdo principal, utilize uma instrução e uma pista, entre outros.
  • A ordem importa. A ordem em que você apresenta informações ao modelo pode afetar a saída. Se você colocar instruções antes do seu conteúdo ("resumir o seguinte...") ou depois ("resumir o acima...") pode fazer a diferença na saída. Até a ordem de alguns exemplos pode ser importante. Isto é denominado desvio de recência.
  • Dê ao modelo um "out". Às vezes, pode ser útil dar ao modelo um caminho alternativo se ele não conseguir concluir a tarefa atribuída. Por exemplo, ao fazer uma pergunta sobre um pedaço de texto, você pode incluir algo como "responda com "não encontrado" se a resposta não estiver presente". Isso pode ajudar o modelo a evitar gerar respostas falsas.

Eficiência do espaço

Embora o tamanho da entrada aumente a cada nova geração de modelos GPT, irá continuar a haver cenários que fornecem mais dados do que o modelo consegue processar. Os modelos GPT dividem as palavras em "tokens". Enquanto palavras comuns de várias sílabas são muitas vezes um único token, palavras menos comuns são quebradas em sílabas. Às vezes, os tokens podem ser contraintuitivos, como mostra o exemplo abaixo, que demonstra os limites do token para diferentes formatos de data. Neste caso, escrever o mês inteiro é mais eficiente em termos de espaço do que uma data totalmente numérica. A gama atual de suporte a tokens vai de 2.000 tokens com modelos GPT-3 anteriores para até 32.768 tokens com a versão 32k do modelo GPT-4 mais recente.

Captura de tela de uma cadeia de caracteres de texto com cores realçadas delineando limites de token.

Dado este espaço limitado, é importante utilizá-lo da forma mais eficiente possível.

  • Tabelas – Como mostrado nos exemplos na seção anterior, os modelos GPT podem entender dados formatados tabulares com bastante facilidade. Essa pode ser uma maneira eficiente de incluir dados, em vez de preceder todos os campos com nome (como JSON).
  • Espaço em branco – Espaços em branco consecutivos são tratados como tokens separados, o que pode ser uma maneira fácil de desperdiçar espaço. Os espaços que precedem uma palavra, por outro lado, são normalmente tratados como parte do mesmo símbolo que a palavra. Observe cuidadosamente o uso do espaço em branco e não use pontuação quando um espaço sozinho o fará.

Próximos passos

Saiba mais sobre o Azure OpenAI.