O que determina a qualidade de um prompt, mas com evidências
- #Machine Learning
- #Python
- #Inteligência Artificial (IA)
Quando eu percebi, em toda parte havia prompts para tudo que é situação. Desde aprender inglês até escrever a sua tese de doutorado (por favor, não faça isto). O que fazia me contorcer de agonia era a maneira leviana como o tema era e é tratado. Na minha experiência, 90% do que leio parece ter sido criado pelo próprio GPT.
A Engenharia e design de prompt é um campo emergente, ano após ano novos testes são feitos ao ponto de haver trabalhos com mais de setenta páginas contendo revisões sobre a importância deste campo. Com tantos avanços e produção de conteúdo não seria surpresa se estivéssemos perdendo alguma coisa, mas o que?
Para fugir do senso comum e da ultra-simplificação que é feita em relação a engenharia e design de prompt, este ensaio é um guia com referência das estratégias que funcionam, o objetivo é levar o leitor além do mundano e banal.
Ninguém explica o que é prompt, não corretamente
Um prompt é um texto de entrada que você fornece a qualquer modelo generativo (LLM). Como afirma Amatrian (2024), isto pode flutuar desde uma simples questão, como a solução para um pergunta de matemática, até a descrição detalhada de uma tarefa específica.
Como você pode ver, não há grandes surpresas sobre, talvez você até tenha ouvido algo familiar, eu acredito que a grande parte para neste ponto, mas não acaba aqui. O impacto em relação ao prompt surge do que pode ser feito sobre ele. No contexto dos LLMs, mais dados de treino produzem melhores resultados, chamados essa tarefa de Fine-Tuning. Acontece que, nem sempre é fácil ou possível fornecer dados, inclusive porque talvez nem existam, nesse sentido o prompt é um método de fornecer mais contexto ao modelo generativo sem que seja necessário milhões de exemplos de treino para isto (Brown et al., 2020). Agora que você sabe o impacto que tem o prompt, e como definir corretamente. Vamos a anatomia dele.
Amanhã esse ensaio estará desatualizado (uma possível solução para isto)
Eu acredito que 90% dos trabalhos na web quando ensinam prompt, pecam em um aspecto fundamental, a ausência de generalização. Veja, A Inteligência Artificial avança rápido, faz dois minutos desde que eu li notícias sobre o tema, mas tenho certeza que até o final deste artigo haverá um novo modelo generativo. Essa falta de generalização ocorre quando o autor apresenta a técnica e muda apenas o conteúdo da pergunta. Para solucionar isto, em seu livro “Prompt Engineering for Generative AI: Future-Proof Inputs for Reliable AI Outputs”, James Taylor e Mike Taylor apresentam cinco princípios fundamentais para a engenharia de prompt. A saber: Direção, Formato, Exemplo, Divisão, Avaliação.
Direção
Kong et at. (2024), demonstra que atribuir uma personalidade para um modelo generativo aumentou em mais de 50% as capacidades do mesmo em algumas tarefas. É justamente sobre isto a direção, quando solicitamos um receita de bolo mas que foi escrita por Shakespeare, apesar de engraçado, é um evidência forte de que obtemos respostas mais sofisticadas, claro você pode estender isto as suas necessidades:
- Atue como um Engenheiro de Software…
- Atue como um especialista em ML…
- Atue como um diretor de Marketing…
Da próxima vez que for desenvolver um prompt, pense em qual personalidade melhor se encaixa na tarefa que está tentando obter resposta.
Exemplo
Quando vejo trabalhos mais elaborados é porque o responsável de alguma forma teve contato com trabalhos que comprovam que o uso de exemplos, tem a capacidade de expandir as capacidade dos modelos generativos (Zhao et at. 2021; Liu et al 2021; Wei et al. 2021). Há centenas de outros trabalhos que tratam sobre o mesmo tema. Em sua, outro ingrediente fundamental para a anatomia do seu prompt é fornecer exemplos:
- [...] desenvolva uma lista com dez nomes no estilo do Steve Jobs para a minha nova marca de sapatos com wi-fi (e.x ifootfy; wifoot-i, etc..)
Divisão
A divisão tem relação direta com com o formato do seu prompt, isto é delicado em uma medida que é a real pela qual escrevo este ensaio. A divisão torna o prompt humanamente compreensível, é um recurso visual inclusive para quem o escreveu, uma boa formação te ajudará a fazer ajustes ou inclusive observar quais elementos o modelo generativo considerou. Além disso, há evidência que modelos menos capazes, se beneficiam de formações específicas (Hei et at. 2024). Como podemos ver na Img.1, o formato com maior impacto nas tarefas mencionadas no trabalho é o formato JSON.
Img1. Prompt Formatting (image source: https://arxiv.org/pdf/2411.10541)
Avaliação
Há todo um campo de estudos ao redor do prompt, não seria surpresa esperar que alguma ciência seja aplicada ao mesmo, esse passo é sequer mencionado. Mas é fundamental. Principalmente se o seu prompt for para produção. Há diversas formas de avaliar o prompt, desde verificar a consistência dele testando inúmeras vezes até aplicando A/B Testing. O formato do teste depende do contexto no qual está inserido, se for para uso pessoal, não há necessidade, mas é importante saber que existe essa necessidade.
Tudo em um único prompt
Na figura.2 podemos ver um exemplos com todos os elementos mencionados, não se atenha a este exemplo, mantenha em mente a quantidade de elementos que irá possibilitar que escreva prompts mais eficientes.
Fig2. Adaptação de prompt no qual foi aplicados os cinco princípios da engenharia de prompt (image source: adaptado pelo autor de https://www.oreilly.com/library/view/prompt- engineering-for/9781098153427/ch01.html)
Conclusão
Prompt não é algo trivial, se alguém disser que é, entende pouco ou nada, há trabalhos sérios publicados com o objetivo de tornar disto uma ciência. Um bom prompt é generalista, tem direção, divisão, exemplos e claro, foi validado. Ainda mais importante, um bom prompt deveria ter a abordagem validada por trabalhos acadêmicos, menos que isto é achismo.
Referências
Amatriain, X. (2024). Prompt design and engineering: Introduction and advanced methods. arXiv preprint arXiv:2401.14423.
Brown, T., Mann, B., Ryder, N., Subbiah, M., Kaplan, J. D., Dhariwal, P., ... & Amodei, D. (2020). Language models are few-shot learners. Advances in neural information processing systems, 33, 1877-1901.
Phoenix, J., & Taylor, M. (2024). Prompt engineering for generative AI: future-proof inputs for reliable AI outputs at scale. O'Reilly Media, Inc..
Zhao, Z., Wallace, E., Feng, S., Klein, D., & Singh, S. (2021, July). Calibrate before use: Improving few-shot performance of language models. In International conference on machine learning (pp. 12697-12706). PMLR.
Liu, J., Shen, D., Zhang, Y., Dolan, B., Carin, L., & Chen, W. (2021). What Makes Good In-Context Examples for GPT-$3 $?. arXiv preprint arXiv:2101.06804.
Wei, J., Wang, X., Schuurmans, D., Bosma, M., Xia, F., Chi, E., ... & Zhou, D. (2022). Chain-of-thought prompting elicits reasoning in large language models. Advances in neural information processing systems, 35, 24824-24837.
He, J., Rungta, M., Koleczek, D., Sekhon, A., Wang, F. X., & Hasan, S. (2024). Does Prompt Formatting Have Any Impact on LLM Performance?. arXiv preprint arXiv:2411.10541.
Nota do autor
- Seja paciente sobre possíveis erros gramaticais, a julgar pela recorrência deles você sabe o quanto eu usei o ChatGPT ou qualquer outra ferramenta para escrever o mesmo.
- Este trabalho levou tempo para ser pesquisado e filtrado, escrever é uma tarefa nobre e árdua. Se sentir confortável, deixe seu feedback (construtivo).
- Em caso de dúvidas, deixe nos comentários abaixo (farei o possível para responder a tempo).
Recursos adicionais para aprender sobre prompt:
- OpenAI Cookbook has many in-depth examples for how to utilize LLM efficiently.
- LangChain, a library for combining language models with other components to build applications.
- Prompt Engineering Guide repo contains a pretty comprehensive collection of education materials on prompt engineering.
- learnprompting.org
- PromptPerfect
- Semantic Kernel
- lil's log: prompt engineering
Você também pode me encontrar aqui, ou me seguir na DIO para conteúdo dessa natureza: