Engenharia de Prompts na prática
- #Engenharia de Prompt
Para extrair o máximo de valor das inteligências artificiais é fundamental dominar técnicas de Engenharia de Prompt.
A Engenharia de Prompt é a técnica utilizada para projetar e refinar prompts para modelos de linguagem artificial como o ChatGPT, Gemini, entre outras. Com estas técnicas, podemos obter respostas úteis para resolver nossos problemas.
Este é uma tema relativamente novo, que foi ganhando força nos últimos anos. Com a chegada de modelos de linguagem como o GPT-1 e o BERT a partir de 2017, os usuários foram percebendo que a forma como as perguntas eram elaboradas tinha impacto na resposta. Mas a partir de 2022, com a popularização do ChatGPT, surgiu a necessidade de desenvolver técnicas para instruir a inteligência artificial para obter resultados de maior qualidade. A partir desse período, o termo "engenharia de prompt" se torna popular.
O QUE É UM PROMPT?
Chamamos de prompt um texto em linguagem natural que solicita que a uma IA generativa execute uma tarefa específica. Ele deve conter as informações necessárias para que o modelo de IA generativa saiba o que você deseja como resultado.
QUAIS AS CARACTERÍSTICAS DE UM BOM PROMPT?
Algumas características importantes de um bom prompt são as seguintes:
- Clareza e Concisão: As instruções devem ser fáceis de entender. Use uma linguagem simples para construir as suas perguntas e evite ambiguidades.
- Especificidade: Devemos informar os detalhes necessários para resolver o problema. Evite dar instruções muito extensas.
- Contexto: Contexto é muito importante na hora de gerar uma resposta, inclua informações adicionais que julgue relevante para o entendimento do problema. Evite fazer perguntas abertas, pois elas podem levar a respostas imprecisas.
- Indicador de Saída: Defina claramente como deseja receber a resposta. Especifique o formato ou o tipo de resposta que espera, como uma lista, um resumo ou uma explicação detalhada.
- Objetivo Claro: Certifique-se de que o objetivo do prompt está bem definido. Um prompt com um objetivo claro ajuda a gerar respostas que são mais alinhadas com suas expectativas.
- Teste e Ajuste: Criar um bom prompt é um processo iterativo. Pode ser necessário testar diferentes variações do prompt e ajustar conforme necessário para obter o melhor resultado possível.
TÉCNICAS DE PROMPT ENGINEERING
Existem várias técnicas utilizadas para a construção de prompts. Vou comentar três que eu considero como as mais utilizadas, que são as seguintes:
ZERO SHOT PROMPTING
Nesta técnica tentamos resolver o problema sem fornecer exemplos ao modelo de linguagem.
FEW-SHOT PROMPTING
Nesta técnica tentamos resolver o problema enviando alguns exemplos ou instruções extras ao modelo de linguagem.
CHAIN-OF-THOUGHT PROMPTING
Utilizando esta técnica nós informamos ao modelo de linguagem o passo a passo necessário para resolver o problema.
Nós vamos ver a seguir como podemos usar estas técnicas para resolver um problema real.
COMO ISSO FUNCIONA NA PRÁTICA?
Para ver como a forma de construir o prompt impacta o resultado eu utilizei a IA para construir uma página HTML para listar imagens.
Eu utilizei nestes testes o Gemini, mas você pode utilizar a inteligência artificial de sua preferência. Eu vou compartilhar o prompt e links contendo a resposta enviada pela IA e a página criada com base em nossa solicitação, para que você tirar suas próprias conclusões.
A primeira tentativa foi feita utilizando a técnica do ZERO SHOT PROMPTING. O prompt utilizado foi o seguinte:
Crie uma página HTML que possa listar 12 imagens.
E o resultado recebido foi este:
Clique aqui para ver a página gerada pela IA
Clique aqui para ver a resposta completa enviada pela IA
Como você pode ver no resultado, ele criou a pagina com a lista de imagens, mas o problema foi que ele não mandou nenhuma imagem de exemplo. Um ponto positivo é que ao abrir num dispositivo móvel as imagens seriam ordenadas uma abaixo da outra. Mas o resultado não faz o olho de ninguém brilhar.
Se faz necessário melhorar o prompt, dando alguns exemplos de como quero que a página seja construída. Vamos tentar outra técnica, a FEW-SHOT PROMPTING. Criei um novo prompt e utilizei o seguinte conteúdo:
Crie uma página HTML que possa listar 12 imagens divididas em 3 imagens por linha. Insira imagens de exemplo para eu ver como vai ficar
E o resultado recebido foi este:
Clique aqui para ver a página gerada pela IA
Clique aqui para ver a resposta completa enviada pela IA
Nesta resposta eu tenho uma página melhor que a anterior, com imagens que me permitem ver de forma mais adequada o resultado. Mas existem pontos a melhorar, em dispositivos móveis não ficou bom e a lista ficou muito grande.
Vamos precisar de um prompt mais robusto para obter um resultado de melhor qualidade. Desta vez vou explicar o processo de como eu quero que a página seja construída. Entra em campo a técnica do CHAIN-OF-THOUGHT PROMPTING. Fiz um novo prompt e escrevi um longo texto detalhando as minhas expectativas.
Preciso criar uma página HTML para exibir 12 imagens, sendo que devem ser exibidas 3 por linha. Você deve incluir neste código imagens de exemplo para que eu possa ver como vai ficar.
Para construir esta página, você deve seguir as seguintes instruções:
1 - Quando a página for acessada num computador, devem aparecer 3 imagens por linha. Se o acesso for através de um dispositivo móvel, as imagens devem estar uma abaixo da outra.
2 - Quando a página for acessada num computador, a listagem das imagens deve ocupar 70% da largura útil da tela, então devem existir espaços em brancos nas laterais.
3 - As imagens devem ter cantos arredondados.
4 - Quando eu clicar em alguma imagem, ela deve aparecer em tamanho maior, sobrepondo a tela.
Perceba que desta vez seguimos uma sequência lógica, detalhando os requisitos que a página deve atender. Será que todo este trabalho vai dar certo? O retorno que o prompt gerou foi este:
Clique aqui para ver a página gerada pela IA
Clique aqui para ver a resposta completa enviada pela IA
Desta vez tivemos um resultado muito superior as tentativas anteriores. Houve um problema pontual em relação ao modal, ao clicar na imagem o modal mostrou a imagem pequena e essa não era a minha expectativa, se você olhar o final do prompt vai ver que eu pedi para a imagem ampliada ocupar toda a tela. Mas isso pode ser resolvido facilmente iterando este prompt. Continuando com a conversa, enviei o seguinte prompt:
Por favor ajuste o modal que você criou para que ele exiba a imagem ocupando 70% da largura da tela
E a correção foi feita.
Você poderia continuar iterando com este prompt e solicitar outros ajustes. Por exemplo, em todas as respostas o JavaScript e o CSS foram inseridos dentro do arquivo HTML, você poderia iterar para pedir para que ele gere os arquivos em separado. Ou então solicitar a conversão deste HTML para inserir em algum framework como o React por exemplo. Existem muitas possibilidades de melhoria que podem ser aplicadas na resposta original.
REFERÊNCIAS
Links para você aprofundar o seu conhecimento sobre este assunto.
https://humanloop.com/blog/prompt-engineering-101