Olá! Bem-vindes ao nosso curso de Engenharia de prompts (instruções). Sou Carlos Stefano e estarei com vocês ao longo do curso.
Neste primeiro momento, vamos explicar como será nosso plano e como este curso de Engenharia de prompts (instruções) está estruturado.
Qual é nosso objetivo aqui? Entender, considerando todas as possibilidades de interação que temos com nossos grandes modelos de linguagem, como as LLMs (Large Language Models, Modelos de Linguagem de Grande Escala), no contexto da engenharia de prompts (instruções), o que podemos fazer para interagir com esses modelos de maneira mais eficiente.
Vamos compreender todas as questões relacionadas ao consumo de tokens (unidades de texto), como administrá-lo melhor, quais estratégias e truques podemos aplicar, além de explorar instruções mais claras, como estruturamos bons prompts (instruções) e diversos aspectos correlatos.
A partir desse entendimento, seremos capazes, ao final do curso, de elaborar bons prompts (instruções), que expressem com clareza o que deve ser feito, compreender como avaliamos se estão adequados e torná-los mais eficientes, idealmente também do ponto de vista de custo.
Neste curso, veremos cinco aulas.
Na Aula 1, veremos fundamentos sobre LLMs (Modelos de Linguagem de Grande Porte), sobre prompts (instruções), sobre como os componentes se comunicam, o que é contexto, o que é tarefa e onde tudo isso se encaixa no prompt (instrução).
Na Aula 2, nosso foco será dissecar a anatomia de um bom prompt (instrução). Falaremos sobre a estrutura geral, alguns frameworks (estruturas de apoio) e possibilidades de controle e restrição da saída para o LLM (Modelo de Linguagem de Grande Porte). Por se tratar de um modelo probabilístico, é importante que tenhamos metodologias para realizar esse controle.
Na segunda parte do curso, na Aula 3, lidaremos com técnicas intermediárias, aprofundando a engenharia de prompts (instruções). Abordaremos, por exemplo, zero-shot (sem exemplos), one-shot (um exemplo) e few-shot (poucos exemplos). Entenderemos o que é cada técnica, quando utilizar e quando não utilizar.
As Aulas 4 e 5 serão dedicadas a entender como avaliamos a saída do prompt (instrução) que fornecemos, verificando se está adequada, como podemos testá-la e integrá-la em ferramentas de automação comuns atualmente.
A proposta é unir os fundamentos e a base teórica com a implementação prática no nosso curso de engenharia de prompts (instruções). Vamos começar?
Para continuarmos nossa discussão sobre engenharia de prompts (instruções), vamos apresentar alguns pontos sobre a engenharia de contexto, entendendo o que exatamente é e como o contexto integra nosso prompt (instrução), em última análise.
Hoje, não há dúvidas de que nossos grandes modelos de linguagem, os LLMs (Modelos de Linguagem de Grande Porte), revolucionaram o mercado e diversas maneiras de automatizar e otimizar tarefas, principalmente as que lidam com processamento de linguagem.
Para fazermos tudo isso, compreender o que é o prompt (instrução), o contexto e como ambos se relacionam é essencial. Além disso, precisamos estruturar bons prompts (instruções) para extrair o máximo proveito de nossos LLMs (Modelos de Linguagem de Grande Porte).
Afinal, o que é o prompt (instrução)? Nada mais do que as instruções que fornecemos ao nosso LLM (Modelo de Linguagem de Grande Porte) em linguagem natural. Essas instruções podem ter diferentes níveis de complexidade. Podemos dizer, por exemplo, “fale sobre inteligência artificial”, o que é um prompt (instrução) válido, porém bastante genérico e amplo; ou podemos fornecer mais contexto, adicionar informações e orientar melhor o formato de resposta desejado. Por exemplo: “enumere cinco estratégias para uso prático de IA no dia a dia de uma pessoa analista de dados”. Isso já fornece outra orientação, uma base para que o modelo produza a resposta.
Quais são as limitações quando trabalhamos com um prompt (instrução) puro? Aqui, entendemos prompt (instrução) puro como aquele sem contexto, não enriquecido com informações adicionais. Em primeiro lugar, há as alucinações, que podem ser críticas em vários cenários: situações em que o LLM (Modelo de Linguagem de Grande Porte) inventa alguma informação simplesmente para manter o fluxo da conversa, sem que, necessariamente, essa informação seja verdadeira. Um prompt (instrução) puro tende a gerar respostas mais genéricas, amplas e superficiais, justamente por faltar a orientação de um contexto adicional. Esse contexto adicional também pode vir de uma fonte de informação externa, evitando recorrermos apenas ao que está na base de treinamento do modelo.
Ao aprofundarmos o tema de contexto e da engenharia de contexto associada, o contexto aparece como forma de fundamentação do LLM (Modelo de Linguagem de Grande Porte) nas respostas que produzirá. O objetivo de fornecer informação adicional é exatamente esse, e o contexto pode vir de diferentes maneiras. Ele pode ser estático, mantendo-se sempre igual no prompt (instrução), ou pode ser dinâmico, sendo mencionado como uma variável cujo valor muda a cada iteração do LLM (Modelo de Linguagem de Grande Porte) e, portanto, altera o contexto em cada execução.
Isso ocorre com frequência, por exemplo, em Pipelines Direct (pipelines diretos), nos quais o contexto vem de forma dinâmica, como resultado de uma busca semântica em um banco de dados vetorial, realizada a partir da pergunta da pessoa usuária.
A engenharia de contexto é a área que se encarrega de otimizar esse contexto dentro do prompt (instrução). Lembremos que, ao trabalhar com LLMs (Modelos de Linguagem de Grande Porte), estamos sempre condicionados aos prompts (instruções), sejam eles de entrada ou de saída. O contexto — isto é, fornecer informação adicional ao modelo para fundamentar a resposta — naturalmente aumenta o consumo de tokens (unidades de texto). Isso pode impactar o custo, o que não é necessariamente ruim, pois o ganho em desempenho pode justificar amplamente. Portanto, precisamos avaliar.
Alguns pilares fundamentais devem ser considerados quando falamos de contexto. Primeiro, ancoragem. O que é isso? É a base das respostas do LLM (Modelo de Linguagem Grande). Esse é o objetivo de fornecer contexto: proporcionar mais fundamento e obter respostas mais precisas. Com isso, reduzimos também o risco de alucinações, porque, efetivamente, o contexto serve de base para o LLM. As respostas passam a ser mais consistentes entre si. Devemos lembrar sempre que o LLM é um modelo probabilístico e, portanto, muitas vezes direcionar informação adicional ajuda a obter maior consistência nas respostas entre diferentes interações com esse LLM. O ponto do custo deve estar sempre presente aqui; ele será o principal contraponto limitante sobre quanto contexto e de que maneira esse contexto poderá ser fornecido ao LLM nessa aplicação.
Portanto, temos três elementos que interagem entre si: o prompt (conjunto de instruções, objetivos e tarefas que o LLM terá de realizar), o contexto (informações adicionais, políticas adicionais, dados adicionais que o modelo receberá) e o LLM, que integra esses dois para produzir a resposta final.
Quando pensamos no fluxo de resposta, como isso fica? Em primeiro lugar, temos o prompt. O prompt será nosso conjunto de instruções, objetivos e tarefas para esse modelo. O contexto será injetado. Às vezes veremos a terminologia de que o contexto passa a integrar o prompt (já presente no “ponto 3” do diagrama ou explicação). Assim, o LLM receberá as instruções originais no prompt e o contexto, que pode vir de diferentes maneiras. Em seguida, o modelo processará todas essas informações e gerará a resposta final.
O contexto pode vir de diferentes maneiras. O que isso significa? Deixamos aqui uma tabela mental, resumindo os principais tipos:
Vamos explorar um pouco esses pontos?
Continuando, para que possamos explorar as questões que vimos discutindo sobre prompts pessoais, acessamos developers.openai.com, no site da OpenAI. A conta que usaremos como exemplo não precisa ser necessariamente criada por esse caminho, mas é por onde vamos nos guiar nestes exemplos. Quem quiser pode criar a conta e gerenciá-la pela API; o passo a passo é razoavelmente simples de seguir para criar a conta e fazer login, lembrando que será necessário adicionar créditos quando formos usar a API para poder utilizar os modelos da OpenAI.
Após fazer login, abrimos a opção Create chat (criar conversa) e vamos usar isso como se fosse um playground (ambiente de testes) para experimentarmos prompts (instruções). Para quem nunca usou, podemos salvar os prompts em rascunho; podemos escolher um modelo da OpenAI, por exemplo o GPT-4.1-mini. A interface informa que é um modelo que aceita texto, mostra limites de tokens de entrada e permite configurar parâmetros como top_p e temperature, entre outros. Podemos alterar esses parâmetros. Também há seções de variáveis e ferramentas; se quisermos, podemos criar um agente, habilitar intérprete de código, geração de imagens e busca na web. A parte de variáveis veremos adiante.
Como exemplo, vamos enviar uma mensagem genérica, sem especificar nada no sistema. O campo system é o system prompt (instrução do sistema): dependendo da ferramenta, ele pode aparecer como “system” ou “prompt”. É um texto que sempre é enviado junto com o nosso modelo de linguagem para dar contexto sobre o que ele deve fazer. Se não colocarmos nada ali, continuaremos usando o GPT-4.1-mini com as instruções padrão.
Para iniciar esse teste no playground, enviamos uma primeira mensagem genérica ao modelo:
Olá! Como você pode me ajudar?
Podemos perguntar, por exemplo: “Como você pode nos ajudar?”. Como não especificamos nada, esperamos uma resposta bastante genérica. Se demorar para carregar, podemos trocar o modelo e reenviar a mesma mensagem. A resposta típica é algo como: “Olá, posso ajudar com uma variedade de tarefas, como responder perguntas, fornecer informações, ajudar com redações, explicar conceitos e criar histórias”, ou seja, algo amplo, pois não fomos específicos.
A própria interface sugere: “Descreva o comportamento desejado do modelo: tom, ferramentas, estilo das respostas”. Podemos então definir uma instrução simples no campo System para começar a especializar o comportamento:
Você é um assistente de planejamento de viagens.
Em seguida, refinamos o objetivo desse assistente adicionando uma segunda linha, deixando o papel do modelo mais claro:
Você é um assistente de planejamento de viagens.
Seu objetivo é preparar um roteiro de viagem para o usuário.
Isso já altera o comportamento do nosso Language Model (modelo de linguagem).
Em seguida, iniciamos um novo chat (conversa) e perguntamos novamente. Repetimos a mesma mensagem do usuário para observar a mudança de comportamento após a configuração do System:
Olá! Como você pode me ajudar?
A resposta passa a ser: “Posso ajudar a planejar sua viagem, sugerir destinos, criar itinerários etc. Para começar, diga para onde deseja ir e por quanto tempo pretende viajar”. Essas são informações que o modelo precisa receber e que não especificamos no prompt; caberá à pessoa usuária fornecê-las ao modelo.
Ao especificarmos instruções, mesmo que simples, já personalizamos o LM (modelo de linguagem) para o caso de uso que desejamos resolver. No nosso exemplo, trata-se de um assistente de viagens. Podemos, por exemplo, declarar: "Iremos a Ilhéus e ficaremos cinco dias. É uma cidade preciosa. Há alguma preferência ou interesse específico, como praias em particular?". Para representar essa entrada de contexto pelo usuário, podemos enviar algo como:
Vou para Ilhéus e ficarei 5 dias
E, se quisermos sinalizar um interesse específico, adicionamos uma mensagem curta:
praias
Ao fazermos isso, o modelo já gera um itinerário: chegada e Praia do Sul, Praia da Avenida, Praia dos Milionários, passeio de barco. O itinerário é montado com base nos dados disponíveis no conjunto de dados de treinamento.
Também podemos utilizar variáveis para compor esse contexto. Podemos inserir a cidade sugerida e o número de dias para o itinerário. Precisamos introduzir esses valores; por exemplo, colocar Ilhéus e 14 dias. Ao enviar o itinerário para verificar se o modelo entende o que queremos dizer, ainda podem aparecer cinco dias e Ilhéus, pois essas informações podem não estar sendo recuperadas no prompt (instrução) abaixo. Podemos então definir variáveis para a cidade e para o número de dias. Começamos nomeando as variáveis:
city
days
Na sequência, atribuirmos valores a elas, por exemplo:
city : Ilhéus
days: 14 dias
Vamos usar a sintaxe com duas chaves {{ }} para a cidade que foi completada e para o número de dias que foi preenchido. Primeiro, construímos o prompt com a cidade:
Seu objetivo é preparar um roteiro de viagem para o usuário para a cidade {{city}}
Depois, incrementamos esse prompt incluindo também a duração:
Seu objetivo é preparar um roteiro de viagem para o usuário para a cidade {{city}} por {{days}} dias.
Em seguida, vamos iniciar um chat (conversa) novo, alterar a cidade para São Paulo e definir que ficaremos 14 dias. Para simular a troca da variável city, atualizamos seu valor:
São Paulo
O itinerário retorna com a indicação: "Itinerário sugerido para sua viagem de 14 dias em São Paulo".
O que acabamos de fazer é um exemplo de contexto dinâmico, como comentamos no vídeo anterior. A partir de variáveis que estão sendo preenchidas na nossa aplicação — aqui, no playground (ambiente de testes) da OpenAI —, no nosso prompt já informamos ao modelo: "Seu objetivo é preparar um itinerário para a cidade X por Y dias." O modelo, então, devolve itens como chegada e aclimatação, chegada ao aeroporto, Praça da Serra, Catedral da Serra, centro cultural, Parque Caimbu, cobrindo os 14 dias em que vamos permanecer na cidade de São Paulo.
A engenharia de prompts consiste em experimentar e testar, verificar o que funcionou bem e o que não funcionou tão bem, e ir aprimorando ao longo da aplicação. Mantemos um prompt mais extenso do que apenas "o objetivo é preparar um itinerário de viagem", pois indicamos a cidade e a quantidade de dias, enriquecendo o prompt com esse contexto, que neste caso vem diretamente daqui. No playground usado para o chat da OpenAI, isso já está disponibilizado de forma simples de completar; porém, na prática, ao desenvolvermos nossos próprios sistemas, muitas vezes precisaremos integrar essas informações manualmente, o que dependerá do framework (estrutura de desenvolvimento) que estivermos utilizando.
Chamamos a atenção para o seguinte: isso que fizemos é um tipo de contexto dinâmico, e não precisaríamos deixá-lo fixo. Também poderíamos instruir o modelo a fazer algumas perguntas. Podemos simplesmente apagar e deixar algo como: "Se formos preparar um itinerário de viagem para a pessoa usuária e, caso a pessoa usuária não especifique, pergunte o destino e a duração da viagem; pode iniciar uma nova sessão." Vamos construir essa alternativa passo a passo. Primeiro, deixamos o objetivo do assistente:
Seu objetivo é preparar um roteiro de viagem para o usuário.
Em seguida, adicionamos a instrução condicional para quando o usuário não fornece os dados:
Se o usuário não especificar, pergunte destino e duração da viagem.
Nesse caso, mesmo com as variáveis, como já não fazem parte do prompt e não entram como contexto, o modelo não sabe para onde queremos ir. Portanto, é importante que elas estejam vinculadas; caso contrário, não funcionará. Para verificar o comportamento quando nada é especificado, iniciamos a conversa com uma saudação mínima:
oi
A resposta do modelo seria: "Poderia informar qual é o seu destino e a duração da sua viagem?".
Isso evidencia como conseguimos moldar o comportamento com pequenos detalhes nas instruções que fornecemos no prompt. Vamos continuar explorando várias dessas ferramentas ao longo do curso. Por ora, fica este exemplo de contexto sendo fornecido como variáveis para o nosso modelo.
O curso Prompt Engineering: projetando e automatizando interações com LLMs possui 128 minutos de vídeos, em um total de 52 atividades. Gostou? Conheça nossos outros cursos de IA para Negócios em Inteligência Artificial, ou leia nossos artigos de Inteligência Artificial.
Matricule-se e comece a estudar com a gente hoje! Conheça outros tópicos abordados durante o curso:
O Plano Plus evoluiu: agora com Luri para impulsionar sua carreira com os melhores cursos e acesso à maior comunidade tech.
2 anos de Alura
Matricule-se no plano PLUS 24 e garanta:
Jornada de estudos progressiva que te guia desde os fundamentos até a atuação prática. Você acompanha sua evolução, entende os próximos passos e se aprofunda nos conteúdos com quem é referência no mercado.
Programação, Data Science, Front-end, DevOps, Mobile, Inovação & Gestão, UX & Design, Inteligência Artificial
Formações com mais de 1500 cursos atualizados e novos lançamentos semanais, em Programação, Inteligência Artificial, Front-end, UX & Design, Data Science, Mobile, DevOps e Inovação & Gestão.
A cada curso ou formação concluído, um novo certificado para turbinar seu currículo e LinkedIn.
Acesso à inteligência artificial da Alura.
No Discord, você participa de eventos exclusivos, pode tirar dúvidas em estudos colaborativos e ainda conta com mentorias em grupo com especialistas de diversas áreas.
Catálogo de tecnologia para quem é da área de Marketing
Faça parte da maior comunidade Dev do país e crie conexões com mais de 120 mil pessoas no Discord.
Acesso ilimitado ao catálogo de Imersões da Alura para praticar conhecimentos em diferentes áreas.
Explore um universo de possibilidades na palma da sua mão. Baixe as aulas para assistir offline, onde e quando quiser.
Luri Vision chegou no Plano Pro: a IA da Alura que enxerga suas dúvidas, acelera seu aprendizado e conta também com o Alura Língua que prepara você para competir no mercado internacional.
2 anos de Alura
Todos os benefícios do PLUS 24 e mais vantagens exclusivas:
Acesso ao catálogo da Casa do Código e leitura dentro da plataforma
Chat, busca, exercícios abertos, revisão de aula, geração de legenda para certificado.
Envie imagens para a Luri e ela te ajuda a solucionar problemas, identificar erros, esclarecer gráficos, analisar design e muito mais.
Aprenda um novo idioma e expanda seus horizontes profissionais. Cursos de Inglês, Espanhol e Inglês para Devs, 100% focado em tecnologia.
Escolha os ebooks da Casa do Código, a editora da Alura, que apoiarão a sua jornada de aprendizado para sempre.
Para quem quer atingir seus objetivos mais rápido: Luri Vision ilimitado, vagas de emprego exclusivas e mentorias para acelerar cada etapa da jornada.
2 anos de Alura
Todos os benefícios do PRO 24 e mais vantagens exclusivas:
Catálogo de tecnologia para quem é da área de Marketing
Envie imagens para a Luri e ela te ajuda a solucionar problemas, identificar erros, esclarecer gráficos, analisar design e muito mais de forma ilimitada.
Escolha os ebooks da Casa do Código, a editora da Alura, que apoiarão a sua jornada de aprendizado para sempre.
Conecte-se ao mercado com mentoria individual personalizada, vagas exclusivas e networking estratégico que impulsionam sua carreira tech para o próximo nível.