Ícone do site FelipeCFerreira IANews

Engenharia de Prompt: Como Obter os Melhores Resultados

Engenharia de Prompt-Prompt Engineering-News.FelipeCFerreira.com.br

A Engenharia de Prompt (expressão original em inglês – Prompt Engineering) é uma área de estudos e práticas que tem como objetivo formular instruções claras e precisas para modelos de Inteligência Artificial (IA), com foco em resultados mais exatos e úteis.

Ainda não sabe o que é Inteligência Artificial? Clique Aqui.

O termo “engenharia” demonstra que é uma área do conhecimento que aplica técnica, análise de resultados, iteração, etc.

O termo “prompt” vem do aspecto de solicitação em comando para uma máquina, assim como também realizamos prompts de comandos em interfaces de sistemas operacionais, como Windows, por exemplo.

Logo, é esta a ideia, Engenharia de Prompt é um conjunto de orientações voltadas a forma como podemos formular perguntas e estruturar diálogos com uma inteligência artificial, com o foco na resolução de uma tarefa (traduzir textos, gerar código, analisar dados, gerar imagens, etc.).

As Configurações do Modelo vão Influenciar as Respostas

Antes de qualquer coisa, tenha em mente que a complexidade do modelo e as suas configurações de ajuste irão influenciar nas respostas obtidas e poderão demandar um prompt mais estruturado (ou não).

Na prática, um modelo avançado (como GPT-4o, Claude 3.5 Sonnet, Gemini, etc.) será capaz de prover melhores respostas mesmo com um prompt zero-shot (solicitação simples e direta sem contexto adicional), se comparado a um modelo mais simples (treinado em uma menor quantidade de parâmetros).

Além disto, modelos avançados possuem processos sofisticados de finetunning, transformadores com arquitetura de última geração, capacidade de inferência de texto, entre outros.

Se você estiver interagindo com uma IA (como estes acima) direto pelo chat, você não terá muito com o que se preocupar sobre configurações.

Google Gemini acesso via Chat. Print retirado pelo autor ago2024.

Tudo está pronto, é só interagir.

Agora, se você estiver operando com estes modelos em ambientes de desenvolvimento (como o playground da OpenAI, ou o Google AI Studio), é importante estar atento aos ajustes de: Temperatura, Top-p, Penalização de Frequência, Penalização de Presença.

Google Gemini acesso via AI Studio. Print retirado pelo autor ago2024.

Cada tópico deste tem um conteúdo disponível explicando as interferências detalhadamente, sinta-se a vontade para clicar e acessar.

Elementos na Engenharia de Prompt

A criação de prompts eficazes vai além de simplesmente dar uma instrução ao modelo.

Há elementos específicos que, quando bem articulados, podem transformar um prompt comum em um comando altamente eficiente.

Vamos explorar os principais componentes que compõem a engenharia de um prompt bem-sucedido:

1. A Tarefa (elemento obrigatório)

A tarefa é o núcleo do prompt.

Define o objetivo principal do que você espera que o modelo realize.

Um prompt bem-sucedido sempre começa com uma tarefa clara, descrevendo exatamente o que você quer que o modelo faça e qual resultado espera obter.

Exemplo: “Gerar um resumo de 100 palavras sobre as vantagens da energia solar.”

2. O Formato (elemento importante)

O formato especifica como você deseja que a resposta seja apresentada.

Isso pode variar entre texto corrido, listas, bullet points, ou até mesmo formatos específicos como JSON ou HTML, dependendo da aplicação.

Exemplo: “Desenvolva um cronograma de atividades para a organização de um armário de escritório (Tarefa com objetivo). Faça em formato de planilha e disponibilize o arquivo para o download (formato).”

3. O Contexto (elemento importante)

O contexto oferece ao modelo as informações necessárias para entender e responder de forma mais precisa.

Isso pode incluir exemplos, referências (nomes, localizações, bibliografia, normas, etc.), ou até mesmo anexos de arquivos.

Quanto mais relevante for o contexto fornecido, maior a chance de o modelo identificar padrões e fornecer uma resposta adequada.

Exemplo: “Considerando o relatório de sustentabilidade anexo (PDF), descreva (tarefa) as 5 principais iniciativas de energia renovável adotadas pela empresa no último ano e qual dentre elas gerou mais resultado. Eu irei montar uma apresentação ppt para uma reunião (contexto). Desenvolva os itens em formato de lista (formato).”

4. A Persona (elemento complementar)

Definir uma persona pode ser útil para moldar a forma como o modelo processa a informação e gera respostas.

A persona orienta o modelo a considerar a perspectiva de um profissional específico ou a adaptar o conteúdo para um público-alvo determinado.

Exemplo: “Explique as novas regulamentações fiscais (disponíveis em URL de um site – contexto de referência) e seus impactos, considerando que faremos um novo treinamento interno para nossos contadores do escritório (persona ou público alvo da mensagem). O nosso objetivo é (tarefa) desenvolver a partir disto um e-mail (formato) que será enviado a equipe, comunicando sobre a data e horário.”

5. O Tom (elemento complementar)

O tom define a “voz” com que o modelo deve comunicar a resposta.

Dependendo do público ou do propósito do conteúdo, você pode querer que o modelo adote um tom mais humorado, técnico, ou criativo.

Exemplo: “Escreva um post de blog (tarefa) sobre segurança cibernética (texto corrido com 500 palavras – formato) em um tom informal e acessível (tom). Nosso público-alvo são pessoas que tem interesse na área de tecnologia, possuem ensino médio completo, estão buscando recolocação profissional e possuem entre 20 e 40 anos de idade (contexto envolvendo a persona).”

Vamos no momento abordar somente estes elementos que, para mim, como profissional da área, são suficientes para trabalhos que envolvem complexidades baixas ou médias.

Iteração na Engenharia de Prompt

A engenharia de prompt é um processo contínuo e iterativo.

Raramente um prompt é perfeito na primeira tentativa, então fique tranquilo(a).

A iteração envolve testar diferentes versões de prompts, observar como o modelo responde, e ajustar conforme necessário para alcançar os melhores resultados.

Durante essa fase, é importante analisar as respostas do modelo, identificar possíveis falhas ou ambiguidades no prompt original, e refinar a formulação.

Esse ciclo de feedback permite que você desenvolva prompts cada vez mais eficientes, ajustando detalhes como a clareza da tarefa, o contexto fornecido, ou até mesmo o tom e formato da resposta.

A iteração também possibilita a adaptação dos prompts a diferentes contextos e aplicações, garantindo que o modelo seja capaz de oferecer respostas precisas e alinhadas às suas necessidades específicas.

Se você chegou em um formato (estrutura) ótimo para um prompt, considere salvá-lo em um documento ou organizá-lo em uma pasta contendo documentos relacionados.

Um prompt ótimo é eficiente, isto é, ele entrega um resultado de qualidade sem exagerar ou utilizar recursos desnecessariamente.

Estes recursos aos quais me refiro aqui, são principalmente tokens, que são a unidade de trabalho e de mensuração de requisições (uso) de um modelo, como o GPT-4o, e vão envolver custos.

Este caso é aplicável principalmente se você possui uma equipe de trabalho, se quer compartilhar estas informações, se pretende documentar processos na sua empresa, etc.

Algumas Técnicas Práticas para Engenharia de Prompt

Existem diversas técnicas que foram desenvolvidas para a execução de tarefas com IAs, nesta matéria eu vou te dar um exemplo prático de apenas 3.

Temos observado que os modelos de linguagem estão ficando cada vez mais sofisticados, e o uso de Engenharia de Prompt vai sendo direcionado a contextos de fato, profissionais.

Logo, lembre-se que uma boa clareza em comunicação já é suficiente para obter respostas simples na ampla maioria dos casos, afinal de contas, estes modelos são baseados em Linguagem Natural – Natural Language Processing (NLP).

Se você começou a utilizar o GPT-3 em dezembro de 2022, e continua usando até os dias de hoje (assim como eu), sabe bem do que estou falando. ;D

Zero-shot Prompting

Zero-shot Prompting é a técnica mais direta e simples.

É provavelmente a que mais utilizamos na ampla parte do tempo.

Nessa abordagem, você fornece um prompt ao modelo de IA sem dar qualquer exemplo anterior de como a tarefa deve ser realizada.

O termo “shot” se refere a “exemplo”, então “zero-shot” significa “sem exemplos”.

Em outras palavras, o modelo é solicitado a executar uma tarefa pela primeira vez, sem qualquer orientação específica além do próprio comando.

Exemplo prático zero-shot. Print retirado pelo autor ago2024.

Apesar de ser um uso simples e direto, poderá te fornecer respostas limitadas e restritas (pouco eficientes).

Few-shot Prompting

Aqui, você fornece ao modelo “alguns exemplos” (“few-shot”) de como a tarefa deve ser realizada antes de fazer o pedido real.

Esses exemplos ajudam o modelo a entender melhor o que é esperado, aumentando a precisão e a relevância das respostas.

Imagine que você possui uma base de dados de avaliações de clientes, e quer utilizá-la como um framework para uma IA avaliar uma nova.

Exemplo prático few-shot. Print retirado pelo autor ago2024.

Não vamos entrar em detalhes sobre definir se a resposta foi certa ou não.

O mais importante é você compreender que no few-shot, você acrescenta no mesmo prompt exemplos de como seria um retorno ideal.

Isto auxilia muito a direcionar a resposta do modelo de IA para o contexto da tarefa, principalmente para casos mais complexos ou que envolvem uma estrutura de execução particular (sua ou de sua empresa).

No caso do exemplo acima, eu fiz de propósito, eu inseri uma palavra de sentimento bom “maravilhoso”, e outras duas de sentimento ruim “pena” e “atrasou”.

Esta técnica é também amplamente utilizada para casos onde o modelo precisa interpretar raciocínio lógico.

Prompt Chaining: Criando Sequências de Prompts para Tarefas um pouco mais Complexas

Em vez de depender de um único prompt para obter uma resposta completa, o Prompt Chaining (ou “cadeia de prompts”) divide a tarefa em etapas menores, cada uma com seu próprio prompt (tarefa).

Esse encadeamento de prompts permite que o modelo de IA processe informações de forma mais organizada e produza resultados mais precisos e detalhados.

Nesta técnica, a resposta (saída ou output) de uma requisição “prompt” é utilizada como “entrada” para o próximo.

Um exemplo simples e prático, seria solicitar a IA ajuda para estruturação de um roteiro de viagem:

Prompt 1: Solicitar ao modelo que liste os principais pontos turísticos do destino.

Prompt 2: Com base na lista de pontos turísticos, pedir ao modelo que sugira uma ordem lógica para visitá-los, considerando a distância e o tempo disponível.

Prompt 3: Para cada ponto turístico, solicitar informações adicionais, como horários de funcionamento, preços e dicas para aproveitar ao máximo a visita.

Prompt 4: Solicitar ao modelo que organize todas as informações em um roteiro completo, incluindo mapas, tempo de viagem estimado entre os locais e sugestões de restaurantes próximos.

E por aí vai, de acordo com a sua necessidade e criatividade.

Atualmente, muitos modelos de linguagem (IAs) avançados disponíveis no mercado se lembram dos assuntos anteriormente discutidos por meio da sua janela de contexto (context window).

Esta “memória” pode variar significativamente entre os modelos, e seu tamanho pode ser consultado na sua documentação específica.

Por exemplo, alguns modelos avançados têm uma janela de contexto de até 128 mil tokens (unidades de texto que podem ser palavras ou partes de palavras), o que equivale aproximadamente a 90.000 palavras ou 320 páginas de texto padrão.

OBSERVAÇÃO: A janela de contexto (ou context window) é a soma dos tokens de perguntas (inputs – prompts) e respostas (outputs do modelo), afinal de contas o contexto é a interação dentro do conteúdo do chat como um todo.

Esta capacidade permite que a IA mantenha coerência em conversas longas e compreenda referências a informações mencionadas anteriormente (nesta cadeia de prompts).

Portanto, considere não excluir um chat com uma IA se você estiver lidando com informações importantes e frequentemente utilizadas, como em assuntos de trabalho ou estudo.

Lembre-se de que, apesar dessa grande capacidade de contexto, os modelos ainda têm limitações em termos de memória de longo prazo e podem não reter informações indefinidamente ou entre sessões diferentes.

Instruções Personalizadas

Alguns modelos disponíveis no mercado, como o GTP-4o da OpenAI, permite a elaboração de instruções personalizadas (ou Custom Instructions).

Estas instruções são extremamente úteis quando você quer que o modelo sempre se lembre de informações específicas, como dados do seu público-alvo, procedimentos operacionais da empresa (workflow), links internos úteis ou quaisquer outras informações.

Isto, com certeza irá melhorar os resultados dos seus prompts e permitir que você obtenha respostas ainda melhores com o seu modelo.

Instruções Personalizadas no ChatGPT. Print retirado pelo autor ago2024.

O foco aqui é, novamente, evitar repetitividade e ganhar em eficiência.

Assim como as instruções personalizadas (custom instructions), o sistema da OpenaAI ainda oferece um recurso complementar de memória, um complemento da lógica destas instruções, que promete otimizar ainda mais os resultados com base no volume de utilização.

Faça um Prompt Como se Estivesse Solicitando seu Assistente Pessoal

Um aspecto simples mas fantástico, é sempre raciocinar: se eu entregasse isso a um funcionário, ele saberia como executar da forma correta?

Se você desenvolve um prompt pensando na qualidade que ele teria para repassar uma tarefa a ser executada a outro humano, você eleva exponencialmente suas chances de sucesso, pois você estará agindo com um dos princípios de funcionamento da IA (linguagem natural – NLP).

Peça Para a Própria IA Melhorar o seu Prompt

Isto pode parecer óbvio, mas o óbvio só é óbvio para a mente preparada.

Você pode solicitar ajuda a sua própria IA, para que juntos, vocês possam desenvolver e testar o melhor prompt.

Lembre-se de utilizar tudo que vimos até aqui, se você quiser que ela te ajude da maneira correta (Tarefa, Formato, Contexto, Persona e Tom).

Vou fornecer um exemplo:

Me ajude a desenvolver um prompt (Tarefa) para resumir PDFs com qualidade. Eu trabalho na produção de conteúdo de uma empresa do setor bioquímico e sou responsável por alimentar o Blog, utilizo PDFs de artigos científicos com frequência e quero otimizar este processo (Contexto). Este prompt deve fornecer o Resumo em uma lista com os 5 principais resultados do artigo (Formato 1), para que eu consiga facilmente copiar e colar no relatório de aprovação para meu supervisor. Neste prompt o modelo deverá reportar caso tenha tido erro na leitura do arquivo, e jamais inventar respostas (evitando alucinações – condição). Forneça o prompt utilizando Markdown (Formato 2), para que ele seja otimizado para a leitura do LLM.

Não sabe o que é Markdown? Falamos desta técnica avançada logo abaixo!

Existem também soluções pagas no mercado, onde você pode utilizar IAs especializadas em Engenharia de Prompt para te fornecer soluções.

A melhor que eu já vi até hoje, é a ferramenta da Anthropic de geração de prompts no ambiente da sua API.

Você pode utilizá-la com o teste gratuito, tendo 5 USD como créditos (disponível até a data desta matéria, 11 de agosto de 2024).

Engenharia de Prompt Avançado: Markdown e JSON

Vamos cortar diversos assuntos chatos e complexos e vamos direto no que dá resultado, falando de Engenharia de Prompt avançada.

Basicamente temos dois fatores de alto impacto: trabalhar o conteúdo dos prompts usando Markdown e transformar arquivos para anexo em JSON.

Vamos ver cada um destes juntos.

Uso de Markdown para Melhorar a Compreensão do Prompt

Markdowns são uma linguagem de marcação leve que permite formatar texto de forma simples e legível tanto para humanos quanto para IAs.

Ele utiliza símbolos comuns como #, *, > para criar títulos, listas, negrito, itálico, links, etc.

Os principais benefícios são:

Clareza e Estrutura: Markdown permite organizar o prompt de maneira clara e estruturada, usando elementos como listas, cabeçalhos, negrito, itálico, e blocos de código.

Ênfase: Ao usar markdown, você pode destacar partes importantes do prompt, como instruções específicas ou exemplos, utilizando negrito ou itálico, o que pode melhorar a precisão das respostas do modelo, pois ele pode “perceber” o que é mais relevante no comando.

Legibilidade: Estruturar um prompt com markdown torna o texto mais legível, facilitando a visualização de diferentes seções ou etapas do prompt, especialmente em prompts mais complexos que envolvem múltiplas instruções.

Vamos ver o mesmo exemplo anterior (prompt para o Blog), mas agora utilizando a técnica do Markdown:

# Resumo de Artigo para Produção de Conteúdo

## Instruções:
1. Leia atentamente o PDF do artigo científico fornecido.
2. Identifique e resuma os 5 principais resultados do estudo.
3. Apresente os resultados em formato de lista numerada.
4. Mantenha cada ponto conciso, mas inclua detalhes relevantes.
5. Use linguagem técnica apropriada para o setor bioquímico.

## Formato de Saída:
Apresente o resumo da seguinte forma:

### Título do Artigo: [Insira o título aqui]

### Principais Resultados:
1. [Primeiro resultado principal]
2. [Segundo resultado principal]
3. [Terceiro resultado principal]
4. [Quarto resultado principal]
5. [Quinto resultado principal]

## Condições Importantes:
- Se houver qualquer erro na leitura ou interpretação do arquivo PDF, informe imediatamente com o seguinte formato:
  **ERRO DE LEITURA**: [Descreva o erro específico encontrado]
- Não invente ou alucine informações. Se não houver 5 resultados principais claros, informe apenas os que forem evidentes no artigo.
- Se o artigo não for do setor bioquímico ou não for um estudo científico, informe isso antes de prosseguir com qualquer análise.

## Confirmação:
Após fornecer o resumo, confirme:
"Este resumo foi baseado estritamente no conteúdo do artigo fornecido, sem adição de informações externas ou suposições."

Este prompt acima foi feito utilizando o modelo Claude 3.5 Sonnet.

Transformar Arquivos de Consulta em JSON

JSON (JavaScript Object Notation) é um formato de dados leve e amplamente utilizado para representar informações estruturadas de forma legível para arquivos digitais.

Os principais benefícios são:

Estrutura e Organização: JSON organiza dados de forma hierárquica e clara. Isso ajuda o modelo a entender a estrutura dos dados e a acessar informações específicas de maneira mais eficiente.

Facilidade de Processamento: Modelos de linguagem treinados (machine learning) para lidar com estruturas de dados podem processar JSON de maneira mais eficaz pois ele permite acessar diretamente chaves e valores relevantes sem a necessidade de interpretar texto adicional ou formatos complexos.

Flexibilidade: JSON é altamente flexível e pode conter diversos tipos de dados, como strings, números, arrays e objetos aninhados, tornando-o ideal para fornecer informações complexas de forma organizada.

Vou deixar um exemplo, simplesmente didático, do que seria um “corpo” de arquivo JSON, transformado a partir de uma planilha ou PDF de um relatório anual de uma empresa.

{
  "documento": {
    "titulo": "Relatório Anual",
    "ano": 2024,
    "seções": [
      {
        "nome": "Resumo Executivo",
        "conteúdo": "..."
      },
      {
        "nome": "Análise Financeira",
        "dados": {
          "receita": 1000000,
          "despesas": 750000
        }
      }
    ]
  }
}

Este exemplo acima foi feito utilizando o modelo Claude 3.5 Sonnet.

Limitações

Claro, neste sentido teremos algumas limitações, e aconselho fortemente que você busque auxílio profissional caso necessário.

Estamos falando de uma parte técnica (avançada) e isto pode gerar confusão e desconfortos se você não for desta área de trabalho.

Está tudo bem! 😀

Algumas principais limitações são:

Complexidade da conversão: A conversão de arquivos complexos ou com formatação específica para JSON pode ser desafiadora e requerer ferramentas ou scripts especializados.

Perda de formatação visual: Ao converter para JSON, a formatação visual original do documento, como negrito, itálico, tabelas e imagens, pode ser perdida.

Necessidade de pré-processamento: Dependendo do tipo de arquivo original, pode ser necessário realizar um pré-processamento para extrair as informações relevantes e estruturá-las adequadamente em JSON. Isso pode adicionar etapas extras ao fluxo de trabalho.

Se você chegou até aqui, parabéns pela iniciativa e comprometimento!

Espero que tenha encontrado informações de valor.

Conclusões

A Engenharia de Prompt é uma habilidade essencial para maximizar o desempenho de modelos de Inteligência Artificial.

Ao seguir as boas práticas de criação de prompts e entender como a qualidade dos prompts afeta os resultados, profissionais de IA podem assegurar que seus modelos funcionem com a maior eficácia possível.

Existem milhares de pessoas usando as mesmas IAs por aí, logo, quem desequilibra a balança da performance é você, que está operando a ferramenta.

Invista na sua educação, utilize múltiplos modelos, estude.

Acredito fortemente que você não irá se arrepender.

Cadastre-se na nossa lista com o seu e-mail e receba gratuitamente os novos conteúdos técnicos e as novidades mundiais sobre IA, sem anúncios e em português. 😀

Referências

PromptingGuide, LearnPrompt e Anthropic.

Sair da versão mobile