Texto de: Letícia Garcez
Introdução
Engenharia de prompt é um dos assuntos que vem se popularizando conforme modelos de linguagem como o ChatGPT se tornam mais comuns no nosso dia a dia, e neste artigo, falaremos um pouco sobre esse assunto.
O que é engenharia de prompt?
Engenharia de prompt, é um termo "chique" para fazer perguntas da maneira certa para modelos de linguagem como o ChatGPT. Se você já tentou usar um desses modelos, não conseguiu o que queria e ficou reescrevendo o comando várias vezes, sabe que existem formas de perguntar que trarão respostas melhores que outras e a engenharia de prompt é justamente uma "busca" pela melhor forma de fazer as perguntas para esses modelos.
Quanto melhor o seu comando, melhores as chances da resposta do modelo atender a sua necessidade, mas para fazer bons prompts, existem diversos aspectos que precisam ser levados em consideração, como a formulação da pergunta, o contexto fornecido e as restrições impostas ao resultado. Um prompt bem elaborado pode direcionar o modelo para gerar respostas mais precisas e relevantes, enquanto um prompt mal formulado pode resultar em saídas confusas ou incorretas.
Prompts bons e ruins
Para entender melhor a construção de prompts, vamos pensar em um exemplo: eu estou estudando para uma prova e resolvi usar o ChatGPT para me ajudar nos estudos. Nesse momento, eu preciso entender conceito de servless.
Um prompt que eu poderia usar é simplesmente usar a palavra: servless
. Se você tem muita experiência em pesquisar no Google, isso pode até ser natural, mas esses modelos de linguagem não funcionam da mesma forma que o Google. Na verdade, eles são quase opostos nesse sentido, já que o Google precisa apenas de palavras-chave e os modelos precisam do máximo de contexto possível. Mas vamos ao resultado do meu prompt:
O resultado que obtive com o prompt servless
foram 3 parágrafos de informações sobre o conceito, mas em inglês. Supondo que eu não fale inglês, esse formato já não é o suficiente para mim. Além disso, a explicação não é detalhada o suficiente para que eu possa aprender sobre o conceito, então, vamos tentar de novo.
Com o prompt Me explique o conceito de serveless
já damos um pouco mais de contexto para o modelo que agora sabe que deve trazer a resposta em português e também traz uma explicação mais detalhada sobre o conceito do que a versão em inglês, justamente porque eu pedi para o modelo explicar.
Nessa resposta, obtive diversas características mais detalhadas sobre o conceito, o que seria mais interessante para entendê-lo, principalmente em virtude da enumeração dos itens. Um prompt pequeno demais, como servless
não fornece nenhum tipo de contextualização ou direcionamento, então a ferramenta "chuta" em qual as direções deve trazer sua resposta, normalmente na direção errada. Isso é característico de um prompt ruim.
Como escrever bons prompts?
Existe uma série de guias de prompts espalhados pela internet que trazem dicas de como estruturar seus prompts, mas a mais importante delas é passar as informações de forma clara para o modelo, com o máximo de contexto possível.
É importante lembrar que modelos de linguagem são treinados utilizando textos, então quanto mais parecido com uma frase "de verdade" for o seu prompt, mais fácil será para o modelo fazer as associações necessárias. Veja um exemplo:
Algo que eu tenho enfrentado bastante com esses prompts ruins, é que muitas vezes o ChatGPT não sabe em qual língua responder, mesmo que saiba o que deve ser respondido, o que pode acabar sendo bem irritante. Felizmente isso não acontece em prompts mais completos. Vamos ver outro exemplo onde pedi exemplos de ideias para portifólio.
No primeiro, o meu comando foi genérico e sem contexto, então minhas respostas também foram genéricas. Já no prompt da direita, eu dei muito mais contexto para o ChatGPT, o que faz com que a resposta seja mais coerente com o que desejo. O output do prompt da direita traz informações sobre os projetos que seriam muito mais relevantes para uma pessoa que está iniciando e precisa de "norte" para os projetos do seu portifólio do que os do prompt da esquerda.
Neste momento, o profissional em pesquisar no Google que habita em você deve estar querendo jogar o teclado pela janela. Mas é isso mesmo, você precisa fornecer contexto, precisa fornecer detalhes, precisa especificar o que deve ser feito, e precisa fazer isso da forma certa, se quiser obter bons resultados com esse tipo de ferramenta.
Tokens
Quando falamos em contexto e inteligência artificial, não podemos deixar de falar também na quantidade de tokens do modelo. A quantidade de tokens de um modelo é como se fosse a memória dele, é a quantidade de informação que ela é capaz de lembrar.
Modelos tem um número limitado de tokens e podem ter dificuldade em lidar com tarefas mais complexas, e principalmente de lembrar coisas que foram pedidas "há muito texto atrás". Por exemplo, você pode no início da conversa instruir o Chat GPT a te responder como um pirata, mas após algumas perguntas ele pode parar de fazer isso, já que devido à quantidade de tokens, a ferramenta não consegue mais "lembrar" que você tinha pedido para ela responder como um pirata.
Por isso, outro aspecto relevante de engenharia de prompt é fazer algumas reafirmações, lembretes e resumos do que já foi abordado para o modelo, para garantir que ele está atuando com base em todas as informações relevantes do contexto que você passou para ela.
A quantidade de tokens do modelo também é o motivo pelo qual não é recomendado dar muitos dados para a IA manipular de uma única vez, já que é possível que a IA não consiga ler e interpretar o texto todo de uma vez caso ele exceda o número de tokens disponível para o modelo. Nestes casos, é recomendado dividir os dados iniciais e entregá-los "em partes" para a manipulação.
Considerações finais
Neste artigo, conhecemos a engenharia de prompt e vimos que um prompt bem elaborado pode direcionar o modelo para gerar respostas precisas e úteis, enquanto um prompt mal formulado pode resultar em saídas confusas ou incoerentes, por isso, ao trabalhar com modelos de IA, é essencial investir tempo e esforço para escrever um prompt que direcione a resposta em um caminho correto.