A engenharia de prompt é a disciplina que se dedica à criação e refinamento de instruções, chamadas prompts, fornecidas a modelos de linguagem de grande escala (LLMs). Através de uma cuidadosa formulação textual, os prompts buscam direcionar esses modelos para gerar respostas precisas, coerentes e alinhadas com as necessidades específicas de cada aplicação.
A engenharia de prompts é fundamental para desbloquear todo o potencial dos modelos de linguagem de grande escala. Ao dominar essa técnica, podemos moldar a forma como interagimos com os LLMs, desde a criação de conteúdos criativos até a resolução de problemas complexos com Agentes.
Quando Usar (Prompt, RAG, Fine-Tuning)?
Para extrair o máximo potencial desses modelos, é crucial escolher a ferramenta adequada para cada tarefa. Engenharia de prompt, RAG (Retrieval Augmented Generation) e fine-tuning são três técnicas que podem ser utilizadas para moldar o comportamento dos LLMs.
Cada uma delas possui suas próprias características e é mais adequada para cenários específicos.
- Prompt: Ideal para tarefas rápidas, onde uma simples reestruturação da pergunta pode resolver o problema.
- RAG (Retrieval-Augmented Generation): Útil quando há necessidade de integrar informações externas não contidas no modelo.
- Fine-Tuning: Necessário para tarefas muito específicas onde é vital adaptar o modelo às particularidades do domínio de aplicação.
Introdução a Engenharia de Prompt
Personalizando as configurações da temperatura e top_p
Ao ajustar as configurações de Temperatura e Top_p, você pode refinar o estilo e a criatividade das respostas geradas por modelos de linguagem.
Temperatura
Imagine a temperatura como um termômetro que controla a ‘criatividade’ do modelo, ela controla a aleatoriedade das respostas geradas pelo modelo. Uma temperatura mais baixa (próxima de 0) resulta em saídas mais determinísticas e previsíveis, enquanto uma temperatura mais alta (próxima de 1) produz respostas mais diversas e criativas.
- Baixa temperatura: Respostas mais previsíveis e direcionadas, ideais para tarefas que exigem precisão, como responder a perguntas de forma concisa.
- Alta temperatura: Respostas mais diversas e inesperadas, perfeitas para gerar ideias criativas ou textos mais artísticos.
Exemplos:
Temperatura = 0.2:
Prompt: "Era uma noite escura e tempestuosa..."
Resposta: "O vento uivava nas árvores e a chuva caía torrencialmente. Todos estavam abrigados em suas casas, esperando o amanhecer."
Descrição: Com uma temperatura baixa, a resposta é bastante conservadora e previsível, mantendo uma continuidade lógica e coerente.
Temperatura = 1.0:
Prompt: "Era uma noite escura e tempestuosa..."
Resposta: "O vento uivava nas árvores, enquanto dragões de fogo dançavam no horizonte e portais para outras dimensões se abriam em meio ao trovão."
Descrição: Com uma temperatura alta, a resposta é altamente criativa e menos previsível, adicionando elementos fantásticos e inesperados.
Top_p
Essa configuração determina a variedade de palavras que o modelo pode escolher. A configuração top_p (ou nucleus sampling) controla a diversidade da resposta selecionando palavras a partir de uma probabilidade cumulativa até que a soma das probabilidades atinja um valor p. Um valor mais baixo de top_p restringe o modelo a escolher entre as palavras mais prováveis, enquanto um valor mais alto permite uma maior diversidade.
No contexto da engenharia de prompt, ajustar a configuração top_p é determinante para obter respostas que variam desde as mais precisas até as mais criativas.
- Baixo Top_p: O modelo se concentra em um conjunto menor de palavras mais prováveis, resultando em respostas mais focadas e coerentes.
- Alto Top_p: O modelo considera um conjunto maior de palavras, permitindo respostas mais diversas e exploratórias.
Exemplos:
Top_p = 0.9:
Prompt: "Era uma noite escura e tempestuosa..."
Resposta: "O vento uivava nas árvores e a chuva caía em torrentes, batendo contra as janelas. Relâmpagos iluminavam o céu e trovões retumbavam ao longe."
Descrição: Com top_p = 0.9, o modelo escolhe palavras a partir de um núcleo de opções mais prováveis, resultando em uma resposta coerente e bem estruturada.
Top_p = 0.5:
Prompt: "Era uma noite escura e tempestuosa..."
Resposta: "O vento uivava nas árvores, e a chuva caía pesada, criando poças na estrada. Gatos pretos corriam pelos telhados, assustados com os trovões incessantes."
Descrição: Com top_p = 0.5, a diversidade da resposta é aumentada, permitindo a inclusão de detalhes mais variados e específicos.
A configuração de temperatura e top_p oferece controle sobre a criatividade e coerência das respostas geradas por LLMs. Experimente diferentes valores para essas configurações para encontrar o equilíbrio ideal entre precisão e inovação para suas necessidades específicas.
Zero-shot Prompting
Zero-shot prompting envolve pedir ao modelo para realizar uma tarefa sem fornecer exemplos explícitos. Essa técnica se baseia na capacidade do modelo de generalizar a partir das instruções fornecidas. Ao utilizar prompts claros e bem estruturados, é possível obter respostas precisas e relevantes do modelo, aproveitando ao máximo seu conhecimento pré-treinado.
Benefícios:
- Versatilidade: Pode ser usado para uma ampla variedade de tarefas sem necessidade de exemplos específicos.
- Eficiência: Reduz a necessidade de preparação de dados e curadoria de exemplos.
- Simplicidade: Simplifica a interação com o modelo, pois basta formular a pergunta de forma clara e direta.
Exemplo:
Prompt: "Explique o conceito de entropia em física."
Resposta: "Entropia é uma medida da desordem ou aleatoriedade em um sistema. Em termos termodinâmicos, ela quantifica a quantidade de energia em um sistema que não está disponível para realizar trabalho.
Descrição: Neste exemplo, o modelo usa seu conhecimento pré-treinado para fornecer uma definição clara e precisa de entropia sem qualquer exemplo prévio.
O ajuste fino por meio de instruções, conforme demonstrado por Wei et al. (2022), revelou-se uma estratégia eficaz para aprimorar o aprendizado zero-shot.
Ao encontrar dificuldades em obter respostas satisfatórias, a inclusão de exemplos ou demonstrações no prompt inicial pode ser uma estratégia eficaz. Ao direcionar o modelo com exemplos de respostas desejadas, aumentamos a probabilidade de obtermos respostas mais curtas e objetivas. Na próxima seção, apresentaremos exemplos práticos dessa técnica.
Few-shot Prompting
Few-shot prompting envolve fornecer ao modelo alguns exemplos de como realizar uma tarefa, ajudando-o a entender melhor o que é esperado. Esta técnica é útil para tarefas que requerem um pouco mais de orientação do que o zero-shot prompting.
No few-shot prompting, você fornece um prompt que inclui alguns exemplos de entrada e saída, seguido de uma nova entrada para a qual você deseja que o modelo gere uma saída. Isso ajuda o modelo a captar o padrão desejado com base nos exemplos fornecidos.
Benefícios:
- Flexibilidade: Pode ser usado para uma ampla variedade de tarefas, oferecendo mais contexto ao modelo do que zero-shot prompting.
- Precisão Melhorada: Fornecer exemplos ajuda o modelo a entender melhor a tarefa, resultando em saídas mais precisas.
- Redução de Treinamento: Menos necessidade de treinamento adicional do modelo, aproveitando o conhecimento pré-treinado.
Exemplo:
Prompt:
Classifique os sentimentos das seguintes frases:
1. Frase: "Eu amo este filme!"
Sentimento: Positivo
2. Frase: "Este restaurante é horrível."
Sentimento: Negativo
3. Frase: "O livro é bastante interessante."
Sentimento: Positivo
Classifique o sentimento da seguinte frase:
4. Frase: "Estou muito decepcionado com o serviço."
Resposta:
Sentimento: Negativo
Descrição: O modelo aprende a classificar sentimentos com base nos exemplos fornecidos e aplica o mesmo padrão à nova frase.
Esse tipo de técnica pode ser aplicada para resumo de texto, geração de código e muito mais.
Cadeia-de-Pensamento Prompting (Chain-of-Thought Prompting)
A técnica de Cadeia-de-Pensamento (Chain-of-Thought) Prompting foi entroduzida por Wei et al. (2022) e envolve guiar o modelo passo a passo através de um processo de raciocínio para resolver problemas complexos. Este método ajuda a decompor a tarefa em partes menores e mais manejáveis, melhorando a precisão das respostas do modelo, considerado uma das mais eficientes técnicas de engenharia de prompt.
Nesta abordagem, você fornece ao modelo um prompt que inclui um processo de raciocínio passo a passo para resolver um problema, seguido de um novo problema para o qual você deseja que o modelo gere uma resposta detalhada.
Benefícios:
- Clareza: Ajuda a estruturar a resposta do modelo, tornando-a mais clara e lógica.
- Precisão Melhorada: Reduz a probabilidade de erros ao dividir a tarefa em etapas menores.
- Versatilidade: Pode ser aplicada a uma ampla variedade de tarefas, desde problemas matemáticos até análises de texto complexas.
Exemplo:
Resolvendo o problema passo a passo:
Problema: Um trem viaja a 60 km/h e percorre uma distância de 180 km. Quanto tempo o trem leva para completar a viagem?
Passo 1: Identifique a fórmula apropriada. A fórmula para o tempo é distância dividida pela velocidade.
Passo 2: Aplique os valores na fórmula. Tempo = 180 km / 60 km/h.
Passo 3: Calcule o resultado. Tempo = 3 horas.
Agora, resolva o seguinte problema passo a passo:
Problema: Um carro viaja a 80 km/h e percorre uma distância de 240 km. Quanto tempo o carro leva para completar a viagem?
Resposta:
Passo 1: Identifique a fórmula apropriada. A fórmula para o tempo é distância dividida pela velocidade.
Passo 2: Aplique os valores na fórmula. Tempo = 240 km / 80 km/h.
Passo 3: Calcule o resultado. Tempo = 3 horas.
Descrição: O modelo segue o processo de raciocínio passo a passo para resolver o problema matemático de forma clara e estruturada.
Árvore de Pensamento (Tree of Thoughts)
A técnica de Árvores de Pensamento (Tree of Thoughts) foram propostas por Yao et el. (2023) e Long (2023), é uma abordagem avançada que guia o modelo por meio de um processo de raciocínio em árvore, permitindo explorar várias linhas de pensamento e escolher a melhor solução. Esta técnica é particularmente útil para problemas complexos que podem ter múltiplas soluções possíveis.
Nesta abordagem, você estrutura o prompt de forma que o modelo explore diferentes caminhos de raciocínio, como uma árvore, e escolha o caminho mais promissor com base em critérios específicos. Isso ajuda o modelo a considerar várias possibilidades antes de chegar a uma conclusão.
Benefícios:
- Exploração Abrangente: Permite explorar múltiplas soluções potenciais antes de tomar uma decisão.
- Raciocínio Estruturado: Ajuda a estruturar o raciocínio do modelo de forma lógica e organizada.
- Versatilidade: Pode ser aplicada a uma ampla gama de problemas, desde decisões complexas até soluções de problemas matemáticos.
Exemplo:
Vamos resolver um problema matemático complexo explorando diferentes caminhos:
Problema: Resolver a equação quadrática x^2 - 5x + 6 = 0.
Passo 1: Tente fatorar a equação.
- x^2 - 5x + 6 = (x - 2)(x - 3) = 0.
- Soluções: x = 2 ou x = 3.
Passo 2: Se a fatoração não funcionar, use a fórmula quadrática.
- x = [-b ± sqrt(b^2 - 4ac)] / 2a.
- Para x^2 - 5x + 6 = 0, a = 1, b = -5, c = 6.
- x = [5 ± sqrt(25 - 24)] / 2.
- Soluções: x = 2 ou x = 3.
Agora, resolva a equação quadrática x^2 + 2x - 8 = 0 usando uma abordagem semelhante.
Resposta:
Passo 1: Tente fatorar a equação.
- x^2 + 2x - 8 = (x + 4)(x - 2) = 0.
- Soluções: x = -4 ou x = 2.
Passo 2: Se a fatoração não funcionar, use a fórmula quadrática.
- x = [-b ± sqrt(b^2 - 4ac)] / 2a.
- Para x^2 + 2x - 8 = 0, a = 1, b = 2, c = -8.
- x = [-2 ± sqrt(4 + 32)] / 2.
- Soluções: x = -4 ou x = 2.
Conclusão: As soluções da equação são x = -4 e x = 2.
Conclusão
O domínio da engenharia de prompt é fundamental para tirar o máximo proveito dos modelos de linguagem de grande escala. Ao aplicar as técnicas certas e seguir as melhores práticas, podemos melhorar significativamente a precisão e a relevância dos resultados obtidos. Investir tempo e esforço para aprender e aperfeiçoar essa habilidade é um passo fundamento para quem deseja se destacar na área de inteligência artificial e ciência de dados.
Leituras Adicionais:
OpenAI documentation
How Temperature, Top_p, and Top_k Shape Large Language Models
Prompt Engineering Guide
Livros Recomendados: Recomendações