Domine a Engenharia de Prompt e melhore sua confiança em interagir com uma IA generativa.
- #Engenharia de Prompt
Quantas vezes você precisou de ajuda em perguntar algo para a IA e você não obteve a resposta adequada?
Pois é, bastante compreensivo. Quando estamos precisando urgentemente de uma resposta seja para fechar um negócio, ou para realizar um código de programação bem-feito, ou até mesmo precisando de recomendações de viagens em um período de baixa estação. Mas o melhor de tudo, que há técnicas para se comunicar de forma primorosa com a IA, e todas elas fazem parte da Engenharia de Prompt. O que será compartilhado tem me ajudado demais como desenvolvedor backend e garanto que irá lhe ajudar seja lá onde for.
Então grave o que irá aprender:
- Tanto a Engenharia de prompt quanto o próprio prompt;
- Pegar os principais insights;
- Abordagens técnicas, teóricas e práticas;
- 8 dicas primordiais para acelerar sua performance.
O que é engenharia de prompt?
Segundo a AWS é a técnica de instruções para interagir com inteligências artificiais (IA generativa) para gerar os resultados desejados. Embora a IA generativa tente imitar os humanos, é necessário instruções detalhadas para criar resultados relevantes e de alta qualidade. Na engenharia de prompt, se escolhe os formatos, parâmetros, modelos, frases, palavras e símbolos mais adequados para orientar a IA a interagir com seus usuários de forma mais dinâmica. Para que a IA generativa de uma aplicação funcione conforme o esperado é preciso que o engenheiro de prompt use sucessivas tentativas de erro para criar uma coleção de textos refinando continuamente os prompts até obter do sistema de IA os resultados desejados.
Agora o que é um prompt?
Um prompt é um texto em linguagem natural que solicita que a IA generativa execute uma tarefa específica. A IA generativa é uma solução de inteligência artificial que gera novos conteúdos, como histórias, conversas, vídeos, imagens e músicas.
Os modelos de linguagem de IA são muito poderosos e não exigem muito para começar a criar conteúdo. Até mesmo uma única palavra é possível para que o sistema crie uma resposta detalhada, mas com muitas brechas. Quando se cria prompts de forma sistemática, se obtém criações mais assertivas e utilizáveis.
Engenharia de prompt para devs, por trás dos bastidores
Agora partindo para uma abordagem mais técnica a IA generativa é alimentada por modelos muito grandes de machine learning (ML) que usam as redes neurais profundas que foram pré-treinadas em grandes quantidades de dados.
Os grandes modelos de linguagem (LLMs) são muito flexíveis e podem realizar várias tarefas. Por exemplo, eles podem resumir documentos, completar frases, responder perguntas e traduzir idiomas. Para informações específicas do usuário, os modelos funcionam prevendo a melhor saída que eles determinam em treinamentos de modelo de uma IA sendo elas:
- Tipo generativo
Já os modelos de linguagem são:
- Frases com pergunta e resposta;
- Textos em geral.
Toda esta quantidade de dados passa por uma limpeza para assegurar que estejam em um formato adequado para o treinamento, isso inclui:
- Eliminação de caracteres especiais;
- Tokenização;
- Conversão para formato numérico.
É necessária uma arquitetura para o modelo como uma rede neural recorrente ou um transformador no caso de modelos de linguagem. Esta arquitetura determina como o modelo processa as informações e gera respostas. Os parâmetros do modelo são inicializados com valores aleatórios ou pré-treinados. Esta é uma etapa fundamental, pois os parâmetros funcionam como pesos que se ajustam durante o treinamento. Depois tem início a ação com o treinamento em que é feito a maior parte do trabalho, o modelo é alimentado com os dados de treinamento e os parâmetros são ajustados gradualmente para minimizar uma função de perda. Essa função calcula as diferenças das respostas geradas e das respostas esperadas nos dados de treinamento. À medida que são feitos os ajustes a perda é calculada para trás por meio da rede neural, isso ajusta melhorando as previsões do modelo.
Durante o treinamento um conjunto de dados é separado para validação é utilizado para avaliar o desempenho do modelo de dados não analisados. Depois que o modelo é treinado, é avaliado em um teste independente para medir sua capacidade de generalizar dados não analisados. Então quando um modelo é treinado e avaliado consegue executar sua tarefa no mundo real.
Toda está abordagem teórica é importante para identificarmos ao longo processo que gerar textos e imagens através de uma IA generativa não é tão simples como se mostra ser, em que magicamente virão repostas do que foi solicitado. Agora veremos alguns exemplos práticos, primeiramente com uma IA geradora de textos:
Percebe-se que a IA identifica que queremos um script com linguagem de programação Python, mas carece de maiores especificações e ainda sugere alimentar ela com dados.
Vamos conferir um prompt mais elaborado:
class Usuario:
def __init__(self, nome, idade, profissao, endereco, senha):
self.nome = nome
self.idade = idade
self.profissao = profissao
self.endereco = endereco
self.senha = senha
def __repr__(self):
return f"Usuário(nome={self.nome}, idade={self.idade}, profissão={self.profissao}, endereço={self.endereco})"
class SistemaCadastro:
def __init__(self):
self.usuarios = []
def cadastrar_usuario(self):
nome = input("Digite o nome: ")
idade = int(input("Digite a idade: "))
profissao = input("Digite a profissão: ")
endereco = input("Digite o endereço: ")
senha = input("Digite a senha: ")
novo_usuario = Usuario(nome, idade, profissao, endereco, senha)
self.usuarios.append(novo_usuario)
print("Usuário cadastrado com sucesso!\n")
def listar_usuarios(self):
if not self.usuarios:
print("Nenhum usuário cadastrado ainda.\n")
else:
for i, usuario in enumerate(self.usuarios, start=1):
print(f"Usuário {i}: {usuario}")
def rodar(self):
while True:
print("1. Cadastrar novo usuário")
print("2. Listar usuários cadastrados")
print("3. Sair")
opcao = input("Escolha uma opção: ")
if opcao == '1':
self.cadastrar_usuario()
elif opcao == '2':
self.listar_usuarios()
elif opcao == '3':
print("Saindo do sistema...")
break
else:
print("Opção inválida! Tente novamente.\n")
# Executa o sistema de cadastro
sistema = SistemaCadastro()
sistema.rodar()
Agora veremos um exemplo através de imagem gerada por uma IA com o seguinte prompt: “Dog image”
Perceba que a própria IA inseriu elementos sem nenhum comando adicionado ao que foi solicitado, a própria IA gerou um ambiente leve com um cachorro de aparência feliz, muito provavelmente o modelo quando foi alimentado por outros usuários com os dados de treinamento os parâmetros foram ajustados minimizando a perda.
Continuemos com os testes de criação de imagem detalhando mais a descrição do prompt: “Crie uma imagem realista de um cachorro que vive no planeta marte, surpreso por descobrir sobre a teoria da relatividade!”
Nossa arte ficou interessante, porém deve-se notar alguns pontos de estranheza nesta imagem. O cachorro segura o livro com duas patas adicionais, logo percebemos o quanto ficou vago a descrição do prompt e o poder de criação de uma IA possibilitando em criar algo inexistente e que não foi descrito.
Agora a última tentativa refinando-a e sendo mais assertiva: “Crie uma imagem realista de um cachorro surpreso, sentado segurando com as duas patas dianteiras um livro da teoria da relatividade, este cachorro vive sozinho no planeta Marte!”
Agora saiu perfeito conforme descrito no prompt. Quanto mais detalhes e critérios for utilizado em seu prompt para gerar imagens ou textos, mais assertivo será o seu resultado.
Engenharia de prompt de IA
Saber como o modelo organiza as informações ajuda a entender como devemos formular a solicitação. Instrução ou estímulo deve ser apresentado a um modelo de linguagem ou outro tipo de sistema de processamento para gerar uma resposta coerente e pertinente, aqui possuem alguns direcionamentos:
- O contexto proporciona ao modelo informações sobre o tema em que deve responder;
- Instrução ou pergunta => O que se espera do modelo responder com orientações sobre o que deve gerar;
- Marcadores especiais => indica-se ao modelo onde deve começar a gerar a resposta;
- Quando se usa a marcação "[RESPOSTA]:", indicamos que o texto a seguir deve ser a resposta gerada;
- Tamanho esperado => o prompt pode incluir o tamanho esperado da resposta, para controlar a extensão do texto gerado;
- Exemplos e formato => o prompt pode incluir exemplos de resposta, para informar ao modelo a estrutura e o estilo adequados;
- Limitações específicas => se quisermos termos ou detalhes precisos, podemos incluí-los no prompt.
Converse com uma IA como uma pessoa tonta que sabe muito
É importante saber que quanto menos contexto, maior a dificuldade para apresentar uma resposta adequada e quanto mais contexto, maior dificuldade com a coerência. As IAs de texto geram conteúdo de forma probabilística, com um processo passo a passo, a IA dará uma resposta correta.
As IAs de texto são especializadas em:
- Análise de conceitos;
- Assimilação de conceitos;
- Compreensão de relações.
Esses conceitos também são usados na nossa comunicação. As IAs de texto compreendem as informações de entrada. Aproveite a capacidade da IA ao formular a solicitação. Agora, o que acontece quando fazemos uma pergunta referente a uma informação não disponível no conjunto de dados usados para treinar a IA?
- Seu conhecimento fica restrito devido a data limite no qual não tem acesso aos dados em tempo real ou dependente de atualização da IA.
- Ela pode inventar o resultado com grande convicção.
Estratégias de Engenharia de Prompt
Dividir o processo em várias entradas que proporcionam as informações necessárias é o ideal para orientar de forma adequada e detalhada, assim a IA retornará respostas brilhantes. Agora por outro lado um direcionamento impreciso trará resultados ruins, repetitivos e incorretos, então para aproveitar o máximo seu potencial é importante o método de interação com IA.
Quando não obtemos bons resultados, isso sempre se deve às instruções que apresentamos. Um prompt específico faz com que a IA responda com o melhor resultado possível. O problema sempre será a receita então aprimore-a. Para criar prompts eficazes, é preciso saber estruturar as solicitações de modo que a IA apresente resultados úteis. Os prompts podem ficar desatualizados com o tempo além disso podem não estar aliadas para a situação colocada.
As 8 dicas primorosas da Engenharia de prompt
Concluindo este artigo, dado toda a informação pertinente sobre a Engenharia de prompt agora é possível confiar em sua habilidade criativa, testar estratégias diferentes para cada entrada de IA e com isso trazer maiores índices de resultado positivo em seu trabalho. Agora vamos conferir a dica:
- Saiba que a qualidade da resposta é referente a pergunta feita.
- Separe o contexto das instruções.
- Seja claro e específico.
- Concatene gerações.
- Defina funções.
- Use marcações de linguagem de programação.
- Coloque os parâmetros no final.
- Aperfeiçoe o prompt.
Palavras-chave muito utilizadas: Engenharia de prompt, IA generativa, modelos de prompt, machine learning, redes neurais profundas.
Aprofundando mais no assunto
Se o tema te interessou não perca a oportunidade de ganhar habilidades práticas para aplicar engenharia de prompts e tornar a IA Generativa sua aliada no dia a dia. Entenda como esses sistemas são desenvolvidos a partir dos princípios e conceitos básicos da área e potencialize suas possibilidades com produtividade conforme a expansão da Engenharia de Prompt no mercado atual.
Aprimore seus conhecimentos e sua produtividade se inscreva só clicar neste link:
Bootcamp Nexa - Engenharia de Prompts na AWS com Claude 3 (dio.me)
Referências:
AWS, O que é engenharia de prompts?. https://aws.amazon.com/pt/what-is/prompt-engineering/
Microsoft, (2024). Introdução à engenharia de prompt. https://learn.microsoft.com/pt-br/azure/ai-services/openai/concepts/prompt-engineering
ChatGPT, (2024). Scripts gerados no chatGPT. https://openai.com/chatgpt/
Dall-e, (2024). Imagens geradas através do Dall-e. https://openai.com/index/dall-e-2/