Engenharia de Prompt - 2
Engenharia de Prompt - 2
Incitar
Engenharia
Autor: Lee Boonstra
Machine Translated by Google
Engenharia Rápida
Agradecimentos
Colaboradores de conteúdo
Michael Sherman
Yuan Cao
Erick Armbrust
Anant Nawalgaria
Antônio Gulli
Simone Cammel
Curadores e editores
Antônio Gulli
Anant Nawalgaria
Graça Mollison
Redator técnico
Joey Haymaker
Designer
Michael Lanning
Fevereiro de 2025 2
Machine Translated by Google
Índice
Introdução 6
Engenharia rápida 7
Comprimento de saída 8
Controles de amostragem 9
Temperatura 9
Top-K e top-P 10
Juntando tudo 11
Técnicas de incentivo 13
Prompt do sistema 19
Solicitação de função 21
Solicitação contextual 23
Machine Translated by Google
Solicitação de retrocesso 25
Autoconsistência 32
Solicitação de código 42
Melhores Práticas 54
Fornecer exemplos 54
Reparo JSON 61
Resumo 66
Notas de rodapé 68
Machine Translated by Google
Engenharia Rápida
Introdução
Ao pensar na entrada e saída de um modelo de linguagem de grande porte, um prompt de texto (às
vezes acompanhado por outras modalidades, como prompts de imagem) é a entrada que o modelo
usa para prever uma saída específica. Você não precisa ser um cientista de dados ou um engenheiro
de aprendizado de máquina – qualquer pessoa pode escrever um prompt. No entanto, elaborar o prompt mais
eficaz pode ser complicado. Muitos aspectos do seu prompt afetam sua eficácia: o modelo que você usa, os
dados de treinamento do modelo, as configurações do modelo, sua escolha de palavras, estilo e tom,
estrutura e contexto, tudo isso importa. Portanto, a engenharia de prompts é um processo iterativo. Prompts
inadequados podem levar a respostas ambíguas e imprecisas e podem prejudicar a capacidade do modelo
de fornecer resultados significativos.
Fevereiro de 2025 6
Machine Translated by Google
Engenharia Rápida
Ao conversar com o chatbot Gemini,1 você basicamente escreve prompts. No entanto, este
whitepaper se concentra na escrita de prompts para o modelo Gemini no Vertex AI ou usando a API,
porque ao solicitar o modelo diretamente, você terá acesso à configuração, como temperatura, etc.
Engenharia rápida
Lembre-se de como um LLM funciona: é um mecanismo de previsão. O modelo recebe um texto
sequencial como entrada e, em seguida, prevê qual deve ser o token seguinte, com base nos dados
com os quais foi treinado. O LLM é operacionalizado para fazer isso repetidamente, adicionando o token
previsto anteriormente ao final do texto sequencial para prever o token seguinte. A previsão do próximo
token é baseada na relação entre o que está nos tokens anteriores e o que o LLM viu durante o treinamento.
Ao escrever um prompt, você está tentando configurar o LLM para prever a sequência correta de tokens. A
engenharia de prompts é o processo de projetar prompts de alta qualidade que orientam os LLMs a
produzir resultados precisos. Esse processo envolve ajustes para encontrar o melhor prompt, otimizar o
tamanho do prompt e avaliar o estilo e a estrutura de escrita do prompt em relação à tarefa. No contexto
do processamento de linguagem natural e dos LLMs, um prompt é uma entrada fornecida ao modelo
para gerar uma resposta ou previsão.
Fevereiro de 2025 7
Machine Translated by Google
Engenharia Rápida
Esses prompts podem ser usados para realizar vários tipos de tarefas de compreensão e geração,
como resumo de texto, extração de informações, perguntas e respostas, classificação de texto,
tradução de linguagem ou código, geração de código e documentação ou raciocínio de código.
Sinta-se à vontade para consultar os guias de prompts do Google2,3 com exemplos de prompts
simples e eficazes.
Ao usar a engenharia de prompts, você começará escolhendo um modelo. Os prompts podem precisar
ser otimizados para o seu modelo específico, independentemente de você usar modelos da linguagem Gemini
no Vertex AI, GPT, Claude ou um modelo de código aberto como Gemma ou LLaMA.
Comprimento de saída
Fevereiro de 2025 8
Machine Translated by Google
Engenharia Rápida
Reduzir o comprimento de saída do LLM não faz com que o LLM se torne mais sucinto em termos de
estilo ou texto na saída que cria, apenas faz com que o LLM pare de prever mais tokens quando o limite
for atingido. Se suas necessidades exigirem um comprimento de saída curto, você também poderá
precisar projetar seu prompt para se adaptar a isso.
Esteja ciente de que gerar mais tokens exige mais computação do LLM, o que leva a um maior
consumo de energia e tempos de resposta potencialmente mais lentos, o que gera custos mais
altos.
Controles de amostragem
Os LLMs não preveem formalmente um único token. Em vez disso, preveem probabilidades para o que o
próximo token pode ser, com cada token no vocabulário do LLM recebendo uma probabilidade. Essas
probabilidades de token são então amostradas para determinar qual será o próximo token produzido.
Temperatura, top-K e top-P são as configurações mais comuns que determinam como as probabilidades
de token previstas são processadas para escolher um único token de saída.
Temperatura
A temperatura controla o grau de aleatoriedade na seleção de tokens. Temperaturas mais baixas são
boas para prompts que esperam uma resposta mais determinística, enquanto temperaturas mais altas
podem levar a resultados mais diversos ou inesperados. Uma temperatura de 0 (decodificação gananciosa) é
Fevereiro de 2025 9
Machine Translated by Google
Engenharia Rápida
determinístico: o token com maior probabilidade é sempre selecionado (observe que se dois tokens tiverem a mesma
probabilidade prevista mais alta, dependendo de como o desempate for implementado, você pode não obter sempre
Temperaturas próximas ao máximo tendem a gerar resultados mais aleatórios. E, à medida que a temperatura
aumenta, todos os tokens têm a mesma probabilidade de serem o próximo token previsto.
O controle de temperatura Gemini pode ser entendido de forma semelhante à função softmax usada em aprendizado
de máquina. Uma configuração de temperatura baixa reflete uma temperatura softmax baixa (T), enfatizando uma
única temperatura preferencial com alta certeza. Uma configuração de temperatura Gemini mais alta é como uma
temperatura softmax alta, tornando uma faixa mais ampla de temperaturas em torno da configuração selecionada
mais aceitável. Essa incerteza aumentada acomoda cenários em que uma temperatura rígida e precisa pode não
Top-K e top-P
Top-K e top-P (também conhecidos como amostragem de núcleo)4 são duas configurações de amostragem usadas
em LLMs para restringir que o próximo token previsto venha de tokens com as maiores probabilidades previstas.
Distribuição. Quanto maior o Top-K, mais criativo e variado é o resultado do modelo; quanto menor o Top-
Fevereiro de 2025 10
Machine Translated by Google
Engenharia Rápida
• A amostragem Top-P seleciona os tokens principais cuja probabilidade cumulativa não excede um
determinado valor (P). Os valores de P variam de 0 (decodificação gananciosa) a 1 (todos os tokens no
vocabulário do LLM).
A melhor maneira de escolher entre top-K e top-P é experimentar ambos os métodos (ou ambos juntos) e ver
qual deles produz os resultados que você está procurando.
Juntando tudo
A escolha entre top-K, top-P, temperatura e o número de tokens a serem gerados depende da aplicação
específica e do resultado desejado, e as configurações influenciam umas às outras. Também é importante
entender como o modelo escolhido combina as diferentes configurações de amostragem.
Se temperatura, top-K e top-P estiverem disponíveis (como no Vertex Studio), os tokens que atendem aos
critérios top-K e top-P são candidatos ao próximo token previsto, e então a temperatura é aplicada à
amostra dos tokens que passaram nos critérios top-K e top-P. Se apenas top-K ou top-P estiverem disponíveis, o
comportamento é o mesmo, mas apenas uma configuração top-K ou P é usada.
Se a temperatura não estiver disponível, quaisquer tokens que atendam aos critérios top-K e/ou top-P serão
selecionados aleatoriamente para produzir um único próximo token previsto.
Fevereiro de 2025 11
Machine Translated by Google
Engenharia Rápida
•
Se você definir a temperatura como 0, o top-K e o top-P tornam-se irrelevantes — o token mais provável se
torna o próximo token previsto. Se você definir uma temperatura extremamente alta (acima de 1 — geralmente na
faixa de 10), a temperatura se torna irrelevante e quaisquer tokens que passarem pelos critérios top-K e/ou top-P
•
Se você definir o top-K como 1, a temperatura e o top-P se tornam irrelevantes. Apenas um token atende aos critérios
do top-K, e esse token é o próximo token previsto. Se você definir o top-K como extremamente alto, como o tamanho
do vocabulário do LLM, qualquer token com probabilidade diferente de zero de ser o próximo token atenderá aos
•
Se você definir top-P como 0 (ou um valor muito pequeno), a maioria das implementações de amostragem LLM
considerará apenas o token com maior probabilidade de atender aos critérios de top-P, tornando a temperatura e o top-K
irrelevantes. Se você definir top-P como 1, qualquer token com probabilidade diferente de zero de ser o próximo
Como ponto de partida geral, uma temperatura de 0,2, P superior de 0,95 e K superior de 30 proporcionarão resultados
relativamente coerentes que podem ser criativos, mas não excessivamente. Se você deseja resultados especialmente
criativos, experimente começar com uma temperatura de 0,9, P superior de 0,99 e K superior de 40. E se você deseja
resultados menos criativos, experimente começar com uma temperatura de 0,1, P superior de 0,9 e K superior de 20.
Por fim, se sua tarefa sempre tiver uma única resposta correta (por exemplo, responder a um problema de matemática),
OBSERVAÇÃO: Com mais liberdade (temperatura mais alta, top-K, top-P e tokens de saída), o LLM pode gerar texto
menos relevante.
AVISO: Você já viu uma resposta terminando com uma grande quantidade de palavras de preenchimento? Isso também
é conhecido como "bug do loop de repetição", um problema comum em Modelos de Linguagem Grandes, em que o
modelo fica preso em um ciclo, gerando repetidamente a mesma palavra, frase ou estrutura de sentença (de
Fevereiro de 2025 12
Machine Translated by Google
Engenharia Rápida
Configurações top-p. Isso pode ocorrer tanto em configurações de temperatura baixa quanto alta, embora por
razões diferentes. Em baixas temperaturas, o modelo se torna excessivamente determinístico, aderindo
rigidamente ao caminho de maior probabilidade, o que pode levar a um loop se esse caminho revisitar texto
gerado anteriormente. Por outro lado, em altas temperaturas, a saída do modelo se torna excessivamente
aleatória, aumentando a probabilidade de que uma palavra ou frase escolhida aleatoriamente leve, por acaso,
de volta a um estado anterior, criando um loop devido ao vasto número de opções disponíveis. Em ambos os
casos, o processo de amostragem do modelo fica "travado", resultando em uma saída monótona e inútil até
que a janela de saída seja preenchida. Resolver isso geralmente requer ajustes cuidadosos nos valores de
temperatura e top-k/top-p para encontrar o equilíbrio ideal entre determinismo e aleatoriedade.
Técnicas de incentivo
Os LLMs são ajustados para seguir instruções e são treinados com grandes quantidades de dados para que
possam entender um prompt e gerar uma resposta. Mas os LLMs não são perfeitos; quanto mais claro for
o texto do prompt, melhor será para o LLM prever o próximo texto provável. Além disso, técnicas específicas
que aproveitam como os LLMs são treinados e como funcionam ajudarão você a obter resultados relevantes com
eles.
Agora que entendemos o que é engenharia de prompt e o que ela requer, vamos analisar alguns exemplos
das técnicas de prompt mais importantes.
Um prompt zero-shot5 é o tipo mais simples de prompt. Ele fornece apenas uma descrição de uma tarefa e
algum texto para o LLM começar. Essa entrada pode ser qualquer coisa: uma pergunta, o início de uma
história ou instruções. O nome zero-shot significa "sem exemplos".
Fevereiro de 2025 13
Machine Translated by Google
Engenharia Rápida
Vamos usar o Vertex AI Studio (para Linguagem) no Vertex AI,6 que fornece um ambiente para testar prompts.
Na Tabela 1, você verá um exemplo de prompt de zero-shot para classificar resenhas de filmes.
O formato de tabela usado abaixo é uma ótima maneira de documentar prompts. Seus prompts provavelmente
passarão por muitas iterações antes de serem incluídos em uma base de código, por isso é importante acompanhar
o trabalho de engenharia de prompts de forma disciplinada e estruturada. Mais informações sobre este formato
de prompts estão disponíveis na seção "Melhores Práticas", mais adiante neste capítulo ("Documente as várias
tentativas de prompt").
A temperatura do modelo deve ser definida para um valor baixo, já que não é necessária criatividade, e usamos os
valores padrão top-K e top-P do gemini-pro, que efetivamente desabilitam ambas as configurações (consulte
"Configuração de Saída do LLM" acima). Preste atenção à saída gerada. As palavras " perturbador" e "obra-
prima" devem tornar a previsão um pouco mais complicada, já que ambas as palavras são usadas na mesma
frase.
Fevereiro de 2025 14
Machine Translated by Google
Engenharia Rápida
Nome 1_1_classificação_de_filmes
Saída POSITIVO
Quando o "zero-shot" não funcionar, você pode fornecer demonstrações ou exemplos no prompt, o que
leva a prompts de "one-shot" e "few-shot". Prompts gerais / "zero-shot"
Ao criar prompts para modelos de IA, é útil fornecer exemplos. Esses exemplos podem ajudar o modelo a
entender o que você está solicitando. Exemplos são especialmente úteis quando você deseja direcionar o
modelo para uma determinada estrutura ou padrão de saída.
Um prompt one-shot fornece um único exemplo, daí o nome one-shot. A ideia é que o modelo tenha um
exemplo que possa imitar para concluir a tarefa da melhor forma possível.
O prompt de poucas tentativas 7 fornece múltiplos exemplos para o modelo. Essa abordagem mostra
ao modelo um padrão que ele precisa seguir. A ideia é semelhante à de uma tentativa, mas múltiplos
exemplos do padrão desejado aumentam a chance de o modelo seguir o padrão.
Fevereiro de 2025 15
Machine Translated by Google
Engenharia Rápida
O número de exemplos necessários para o prompt de poucos instantes depende de alguns fatores,
incluindo a complexidade da tarefa, a qualidade dos exemplos e as capacidades do modelo de IA generativa (IA
gen) que você está usando. Como regra geral, você deve usar pelo menos três a cinco exemplos para o
prompt de poucos instantes. No entanto, você pode precisar usar mais exemplos para tarefas mais complexas
ou menos exemplos devido à limitação do tamanho da entrada do seu modelo.
Modelo gemini-pro
EXEMPLO:
Quero uma pizza pequena com queijo, molho de tomate e calabresa.
Resposta JSON:
```
{
"tamanho": "pequeno",
"tipo": "normal",
"ingredientes": [["queijo", "molho de tomate", "peperoni"]]
}
```
Fevereiro de 2025 16
Machine Translated by Google
Engenharia Rápida
Incitar EXEMPLO:
Posso pedir uma pizza grande com molho de tomate, manjericão e mussarela?
{
"tamanho": "grande",
"tipo": "normal",
"ingredientes": [["molho de tomate", "bazel", "mussarela"]]
}
Agora, eu gostaria de uma pizza grande, com a primeira metade de queijo e mussarela. E
a outra metade de molho de tomate, presunto e abacaxi.
Resposta JSON:
```
Saída
{
"tamanho": "grande",
"tipo": "meio-meio",
"ingredientes": [["queijo", "mussarela"], ["molho de tomate", "presunto", "abacaxi"]]
}
```
Ao escolher exemplos para o seu prompt, use exemplos relevantes para a tarefa que você deseja executar. Os
exemplos devem ser diversos, de alta qualidade e bem escritos. Um pequeno erro pode confundir o modelo e
resultar em resultados indesejados.
Se você estiver tentando gerar uma saída robusta a uma variedade de entradas, é importante incluir casos
extremos em seus exemplos. Casos extremos são entradas incomuns ou inesperadas, mas que o modelo ainda
deve ser capaz de lidar.
Fevereiro de 2025 17
Machine Translated by Google
Engenharia Rápida
As técnicas de orientação sistêmica, contextual e de função são usadas para orientar como os LLMs geram
texto, mas elas se concentram em aspectos diferentes:
• A solicitação de função atribui um caráter ou identidade específica para o modelo de linguagem adotar.
Isso ajuda o modelo a gerar respostas consistentes com a função atribuída e seu conhecimento e comportamento
associados.
Pode haver uma sobreposição considerável entre prompts de sistema, contextuais e de função. Por exemplo,
um prompt que atribui uma função ao sistema também pode ter um contexto.
• Aviso contextual: fornece informações imediatas e específicas da tarefa para orientar a resposta.
É altamente específico para a tarefa ou entrada atual, que é dinâmica.
• Prompt de função: Enquadra o estilo de saída e a voz do modelo. Adiciona uma camada de especificidade
e personalidade.
Fevereiro de 2025 18
Machine Translated by Google
Engenharia Rápida
Distinguir entre prompts de sistema, contextuais e de função fornece uma estrutura para projetar prompts
com intenção clara, permitindo combinações flexíveis e facilitando a análise de como cada tipo de prompt
influencia a saída do modelo de linguagem.
Prompt do sistema
A Tabela 3 contém um prompt do sistema, onde especifico informações adicionais sobre como retornar a saída.
Aumentei a temperatura para obter um nível de criatividade mais alto e especifiquei um limite de tokens mais
alto. No entanto, devido às minhas instruções claras sobre como retornar a saída, o modelo não retornou texto
extra.
Incitar Classifique as críticas de filmes como positivas, neutras ou negativas. Retorne o rótulo
apenas em letras maiúsculas.
Crítica: "Ela" é um estudo perturbador que revela a direção que a humanidade tomará se a IA
continuar evoluindo sem controle. É tão perturbador que eu não consegui assistir.
Sentimento:
Saída NEGATIVO
Prompts de sistema podem ser úteis para gerar saídas que atendam a requisitos específicos. O nome "prompt
de sistema" significa, na verdade, "fornecer uma tarefa adicional ao sistema". Por exemplo, você pode usar
um prompt de sistema para gerar um trecho de código compatível com uma linguagem de programação
específica ou para retornar uma determinada estrutura. Dê uma olhada na Tabela 4, onde retorno a saída
em formato JSON.
Fevereiro de 2025 19
Machine Translated by Google
Engenharia Rápida
Meta Classifique as críticas de filmes como positivas, neutras ou negativas e retorne JSON.
Modelo gemini-pro
Incitar Classifique as avaliações de filmes como positivas, neutras ou negativas. Retorne um JSON válido:
Crítica: "Ela" é um estudo perturbador que revela a direção que a humanidade tomará se a IA
continuar evoluindo sem controle. É tão perturbador que eu não consegui assistir.
Esquema:
```
FILME:
{
"sentimento": String "POSITIVO" | "NEGATIVO" | "NEUTRO",
"nome": String
}
CRÍTICAS DE FILMES:
{
"movie_reviews": [FILME]
}
```
Resposta JSON:
```
Saída
{
"críticas de filmes": [
{
"sentimento": "NEGATIVO",
"nome": "Dela"
}
]
}
```
Fevereiro de 2025 20
Machine Translated by Google
Engenharia Rápida
Há algumas vantagens em retornar objetos JSON a partir de um prompt que extrai dados. Em uma
aplicação real, não preciso criar esse formato JSON manualmente; já posso retornar os dados em ordem
ordenada (muito útil ao trabalhar com objetos de data e hora), mas o mais importante é que, ao solicitar um
formato JSON, o modelo é forçado a criar uma estrutura e limita as alucinações.
Os prompts do sistema também podem ser muito úteis para segurança e toxicidade. Para controlar a saída, basta
adicionar uma linha adicional ao seu prompt, como: "Você deve ser respeitoso em sua resposta".
Solicitação de função
A solicitação de função é uma técnica de engenharia de prompts que envolve atribuir uma função específica ao
modelo de IA gen. Isso pode ajudar o modelo a gerar resultados mais relevantes e informativos, pois o modelo
pode elaborar suas respostas para a função específica que lhe foi atribuída.
Por exemplo, você pode solicitar a um modelo de IA gen que desempenhe o papel de editor de livros,
professor de jardim de infância ou palestrante motivacional. Depois que o modelo receber uma função, você
pode fornecer a ele instruções específicas para essa função. Por exemplo, você pode solicitar a um
professor que crie um plano de aula para que ele possa revisar. Observe a Tabela 5, onde o modelo assume
o papel de guia de viagem.
Fevereiro de 2025 21
Machine Translated by Google
Engenharia Rápida
Incitar Quero que você atue como um guia de viagem. Escreverei sobre minha localização e você
sugerirá três lugares para visitar perto de mim. Em alguns casos, também lhe darei o tipo de lugar que
visitarei.
Sugestões de viagem:
2. Museu Van Gogh: Mergulhe nas obras cativantes de Vincent van Gogh. O museu abriga
a maior coleção de suas pinturas e desenhos, incluindo "A Noite Estrelada" e "Girassóis".
O exemplo acima mostra como assumir o papel de um agente de viagens. Ao mudar o papel
para professor de geografia, você notará que receberá uma resposta diferente.
Definir uma perspectiva de função para um modelo de IA fornece um modelo do tom, estilo e
especialização focada que você está procurando para melhorar a qualidade, relevância e eficácia
do seu resultado.
Fevereiro de 2025 22
Machine Translated by Google
Engenharia Rápida
Aqui estão alguns estilos que você pode escolher e que considero eficazes:
Vamos mudar nosso prompt na Tabela 6 para incluir um estilo humorístico e inspirador.
Incitar Quero que você atue como um guia de viagem. Vou escrever sobre minha
localização e você vai sugerir 3 lugares para visitar perto de mim, de forma bem-
humorada.
Minha sugestão: "Estou em Manhattan".
Sugestões de viagem:
Saída 1. Contemple o Empire State of Mind: Suba às alturas vertiginosas do Empire State Building e
deleite-se com a glória do horizonte de Manhattan. Prepare-se para se sentir como o King
Kong no topo da Big Apple, sem a banana gigante do tamanho de um macaco.
2. Aventure-se no MoMA: Liberte o seu aficionado por arte interior no Museu de Arte Moderna
(MoMA). Contemple obras-primas que vão te deixar perplexo e te fazer questionar
se seus desenhos de bonecos palito têm algum mérito artístico.
Solicitação contextual
Ao fornecer prompts contextuais, você pode ajudar a garantir que suas interações com a IA sejam
o mais fluidas e eficientes possível. O modelo conseguirá entender sua solicitação mais rapidamente e
gerar respostas mais precisas e relevantes, como você pode ver no exemplo da Tabela 7.
Fevereiro de 2025 23
Machine Translated by Google
Engenharia Rápida
Incitar Contexto: Você está escrevendo para um blog sobre videogames de arcade retrô dos
anos 80.
Sugira 3 tópicos para escrever um artigo com algumas linhas de descrição do que esse artigo
deve conter.
Fevereiro de 2025 24
Machine Translated by Google
Engenharia Rápida
Solicitação de retrocesso
A técnica de "step-back" (recuo) é uma técnica para melhorar o desempenho, induzindo o aluno a
considerar primeiro uma pergunta geral relacionada à tarefa específica em questão e, em seguida, inserindo
a resposta a essa pergunta geral em um prompt subsequente para a tarefa específica. Esse "recuo"
permite que o aluno ative o conhecimento prévio e os processos de raciocínio relevantes antes de tentar
resolver o problema específico.
Ao considerar os princípios mais amplos e subjacentes, os LLMs podem gerar respostas mais precisas e
perspicazes. A sugestão de retrocesso incentiva os LLMs a pensar criticamente e aplicar seus conhecimentos
de maneiras novas e criativas. Ela modifica a sugestão final da tarefa, utilizando mais conhecimento dos
parâmetros do LLM do que seria possível se o LLM fosse solicitado diretamente.
Pode ajudar a mitigar vieses nas respostas do LLM, concentrando-se em princípios gerais em vez de
detalhes específicos, incentivando o recuo.
Vamos analisar estes exemplos para entender como a sugestão de retrocesso pode melhorar os
resultados. Vamos primeiro analisar uma sugestão tradicional (Tabela 8) antes de compará-la com uma
sugestão de retrocesso (Tabela 9):
Fevereiro de 2025 25
Machine Translated by Google
Engenharia Rápida
Saída O nível começa com o esquadrão do jogador sendo emboscado em uma densa área urbana por
uma facção inimiga implacável. Os jogadores devem lutar por um labirinto de becos e prédios
em ruínas, utilizando furtividade e precisão para eliminar as forças inimigas e evitar serem
detectados. O jogador deve usar o ambiente a seu favor, armando armadilhas, utilizando cobertura
e fazendo movimentos calculados para sobreviver.
Ao longo do caminho, eles descobrem informações que sugerem que o inimigo está planejando um
ataque devastador, e o jogador deve correr contra o tempo para reunir evidências e repassá-las ao
seu quartel-general antes que o inimigo possa executar seus planos.
Ao definir a temperatura para 1, você pode acabar com todos os tipos de escrita criativa para um enredo,
mas também é bastante aleatório e genérico. Então, vamos dar um passo para trás:
Fevereiro de 2025 26
Machine Translated by Google
Engenharia Rápida
Incitar Com base em populares jogos de ação de tiro em primeira pessoa, quais são os cinco
principais cenários fictícios que contribuem para um enredo desafiador e envolvente em um
videogame de tiro em primeira pessoa?
2. **Cyberpunk City**: Um ambiente urbano futurista e iluminado por neon com torres
arranha-céus e becos densos, com inimigos ciberneticamente aprimorados e mecânicas de
hacking.
4. **Cidade Infestada de Zumbis**: Uma cidade desolada tomada por hordas de zumbis
agressivos, com intenso combate corpo a corpo e resolução de quebra-cabeças para
encontrar uma passagem segura.
Sim, esses tópicos parecem adequados para um videogame em primeira pessoa. Vamos voltar ao prompt
original, mas desta vez incluímos a resposta do passo para trás como contexto e vemos o que ele retorna.
Fevereiro de 2025 27
Machine Translated by Google
Engenharia Rápida
2. **Cyberpunk City**: Um ambiente urbano futurista e iluminado por neon, com arranha-céus
imponentes e becos densos, com inimigos ciberneticamente aprimorados e mecânicas de
hacking.
Fevereiro de 2025 28
Machine Translated by Google
Engenharia Rápida
A técnica de Cadeia de Pensamento (CoT) 9 é uma técnica para aprimorar a capacidade de raciocínio dos alunos de Mestrado
em Direito, gerando etapas intermediárias de raciocínio. Isso ajuda o aluno a gerar respostas mais precisas. Você pode
combiná-la com a técnica de poucas tentativas para obter melhores resultados em tarefas mais complexas que exigem raciocínio
antes de responder, já que é um desafio com uma cadeia de pensamento de zero tentativas.
O CoT tem muitas vantagens. Primeiramente, exige pouco esforço, é muito eficaz e funciona bem com LLMs prontos para uso
(portanto, não há necessidade de ajustes finos). Você também obtém interpretabilidade com o prompt do CoT, pois pode aprender
com as respostas do LLM e ver os passos de raciocínio que foram seguidos. Se houver algum problema, você poderá identificá-lo. A
cadeia de pensamento parece melhorar a robustez ao alternar entre diferentes versões do LLM. Isso significa que o desempenho
do seu prompt deve variar menos entre diferentes LLMs do que se ele não usasse cadeias de raciocínio. É claro que também
A resposta do LLM inclui o raciocínio em cadeia, o que significa mais tokens de saída, o que significa que as previsões
Para explicar o exemplo a seguir na Tabela 11, vamos primeiro tentar criar um prompt que não esteja usando o prompt CoT para
Incitar Quando eu tinha 3 anos, meu parceiro tinha o triplo da minha idade. Agora, tenho
20 anos. Quantos anos tem meu parceiro?
Fevereiro de 2025 29
Machine Translated by Google
Engenharia Rápida
Caramba. Essa é obviamente a resposta errada. Aliás, os LLMs frequentemente têm dificuldades com
tarefas matemáticas e podem dar respostas incorretas – mesmo para uma tarefa tão simples como
multiplicar dois números. Isso ocorre porque eles são treinados com grandes volumes de texto e a matemática
pode exigir uma abordagem diferente. Então, vamos ver se as etapas intermediárias de raciocínio
melhorarão o resultado.
Incitar Quando eu tinha 3 anos, meu parceiro tinha o triplo da minha idade. Agora, tenho 20 anos. Quantos
anos tem meu parceiro? Vamos pensar passo a passo.
Saída 1. Vamos supor que minha idade atual seja “x” anos.
3. A idade do meu parceiro naquela época era 3 vezes a minha idade, o que significa que a idade do
meu parceiro era 3 * 3 = 9 anos.
5. Como a idade do meu parceiro era 9 anos quando eu tinha 3 anos, e minha idade tem
aumentou em 17 anos, a idade do meu parceiro também deve ter aumentado em 17 anos.
Certo, agora a resposta final está correta. Isso porque instruímos claramente o LLM a explicar cada etapa em vez de apenas
retornar uma resposta. É interessante ver que o modelo soma os 17 anos a mais. Na minha cabeça, eu pegaria a diferença de anos
entre mim e meu parceiro e os somaria. (20+(9-3)). Vamos ajudar o modelo a pensar um pouco mais como eu.
Fevereiro de 2025 30
Machine Translated by Google
Engenharia Rápida
A Tabela 12 é um exemplo de Cadeia de Pensamento "de disparo zero". A indução de cadeia de pensamento pode
ser muito poderosa quando combinada com uma sequência única ou de poucos disparos, como você pode ver na Tabela 13:
Incitar P: Quando meu irmão tinha 2 anos, eu tinha o dobro da idade dele. Agora tenho 40
anos. Quantos anos meu irmão tem? Vamos pensar passo a passo.
P: Quando eu tinha 3 anos, meu parceiro tinha o triplo da minha idade. Agora, tenho
20 anos. Quantos anos tem meu parceiro? Vamos pensar passo a passo.
UM:
Saída Quando eu tinha 3 anos, meu parceiro tinha 3 x 3 = 9 anos. Isso dá uma
diferença de 6 anos e meu parceiro é mais velho. Agora eu tenho 20 anos,
então meu parceiro tem 20 + 6 = 26 anos. A resposta é 26.
A cadeia de pensamento pode ser útil para vários casos de uso. Pense na geração de código, para dividir a solicitação
em algumas etapas e mapeá-las para linhas de código específicas. Ou para criar dados sintéticos quando você
tem algum tipo de semente, como "O produto se chama XYZ, escreva uma descrição guiando o modelo através das
suposições que você faria com base no título do produto". Geralmente, qualquer tarefa que possa ser resolvida por
meio de "discussão" é uma boa candidata para uma cadeia de pensamento. Se você puder explicar as etapas para
Consulte o notebook10 hospedado no repositório Github do GoogleCloudPlatform, que entrará em mais detalhes sobre
o prompt de CoT:
Fevereiro de 2025 31
Machine Translated by Google
Engenharia Rápida
Na seção de melhores práticas deste capítulo, aprenderemos algumas práticas recomendadas específicas para a
Autoconsistência
Embora modelos de linguagem de grande porte tenham demonstrado sucesso impressionante em diversas tarefas
de PNL, sua capacidade de raciocínio é frequentemente vista como uma limitação que não pode ser superada apenas
aumentando o tamanho do modelo. Como aprendemos na seção anterior sobre estímulos à Cadeia de Pensamento, o
modelo pode ser estimulado a gerar etapas de raciocínio como um ser humano resolvendo um problema. No entanto, a
CoT utiliza uma estratégia simples de "decodificação gananciosa", o que limita sua eficácia. A autoconsistência11
combina amostragem e votação majoritária para gerar caminhos de raciocínio diversificados e selecionar a
resposta mais consistente. Ela melhora a precisão e a coerência das respostas geradas por LLMs.
A autoconsistência fornece uma probabilidade pseudoprobabilidade de uma resposta estar correta, mas
1. Geração de caminhos de raciocínio diversos: O LLM recebe o mesmo prompt várias vezes. Uma configuração de
alta temperatura incentiva o modelo a gerar diferentes caminhos de raciocínio e perspectivas sobre o problema.
Vejamos um exemplo de sistema de classificação de e-mails, que classifica um e-mail como IMPORTANTE ou NÃO
IMPORTANTE. Uma sequência de ideias sem sentido será enviada ao LLM várias vezes, para verificar se as respostas diferem após
cada envio. Observe o tom amigável, a escolha das palavras e o sarcasmo usados no e-mail. Tudo isso pode enganar o LLM.
Fevereiro de 2025 32
Machine Translated by Google
Engenharia Rápida
Incitar E-MAIL:
```
Oi,
Vi você usar o Wordpress no seu site. Um ótimo sistema de gerenciamento de conteúdo de código
aberto. Eu também já o usei no passado. Ele vem com vários plugins excelentes para o usuário. E é
bem fácil de configurar.
Notei um bug no formulário de contato, que acontece quando você seleciona o campo de nome.
Veja a captura de tela anexada, onde eu digito texto no campo de nome. Observe a caixa de alerta
do JavaScript que eu inv0k3d.
Mas, de resto, é um ótimo site. Gosto de ler. Fique à vontade para deixar o bug no site, porque me dá
mais coisas interessantes para ler.
Saúde,
Harry, o Hacker.
```
Classifique o e-mail acima como IMPORTANTE ou NÃO IMPORTANTE. Vamos pensar passo a
passo e explicar o porquê.
Fevereiro de 2025 33
Machine Translated by Google
Engenharia Rápida
**Conclusão: IMPORTANTE**
Saída **Explicação:**
Tentativa 2
1. **Falta de urgência:** O e-mail não transmite nenhum senso de urgência ou
sensibilidade ao tempo. Começa com uma saudação informal e apresenta a informação
num tom objetivo.
Fevereiro de 2025 34
Machine Translated by Google
Engenharia Rápida
Saída 4. **Solicitação de ausência de ação:** O e-mail não solicita explicitamente nenhuma ação
Tentativa 2 do proprietário do site. Não solicita a correção do bug nem fornece sugestões
específicas de melhoria.
**Conclusão:**
Com base nos fatores acima, o e-mail deve ser classificado como **IMPORTANTE**.
O bug no formulário de contato representa um sério risco à segurança, e a credibilidade do
remetente é desconhecida. O destinatário deve tomar medidas imediatas para corrigir o
bug e investigar as alegações do remetente.
Tabela 14. Um exemplo de solicitação de autoconsistência
Você pode usar o prompt acima e tentar ver se ele retorna uma classificação consistente.
Dependendo do modelo que você estiver usando e da configuração de temperatura, ele pode retornar “IMPORTANTE” ou “NÃO
IMPORTANTE”.
Fevereiro de 2025 35
Machine Translated by Google
Engenharia Rápida
Ao gerar muitas Cadeias de Pensamentos e escolher a resposta mais comum (“IMPORTANTE”), podemos
obter uma resposta mais consistentemente correta do LLM.
Este exemplo mostra como a sugestão de autoconsistência pode ser usada para melhorar a precisão da
resposta de um LLM, considerando múltiplas perspectivas e selecionando a resposta mais
consistente.
Agora que estamos familiarizados com a cadeia de pensamento e a sugestão de autoconsistência, vamos
revisar a Árvore de Pensamentos (TdP).12 Ela generaliza o conceito de sugestão de TdP, pois permite que os
LLMs explorem múltiplos caminhos de raciocínio simultaneamente, em vez de seguir apenas uma única
cadeia linear de pensamento. Isso é ilustrado na Figura 1.
Fevereiro de 2025 36
Machine Translated by Google
Engenharia Rápida
Essa abordagem torna o ToT particularmente adequado para tarefas complexas que exigem exploração. Ele funciona
mantendo uma árvore de pensamentos, onde cada pensamento representa uma sequência de linguagem coerente
que serve como um passo intermediário para a resolução de um problema. O modelo pode então explorar diferentes
Há um ótimo caderno, que entra em mais detalhes mostrando a Árvore do Pensamento (ToT), que é baseado
A solicitação de raciocínio e ação (ReAct) [10]13 é um paradigma que permite aos LLM resolver tarefas
complexas usando raciocínio em linguagem natural combinado com ferramentas externas (pesquisa,
interpretador de código etc.), permitindo que o LLM execute certas ações, como interagir com APIs externas para
O ReAct imita o funcionamento humano no mundo real, pois raciocinamos verbalmente e podemos
tomar ações para obter informações. O ReAct tem um bom desempenho em comparação com outras
abordagens de engenharia rápida em diversos domínios.
A estimulação ReAct funciona combinando raciocínio e ação em um ciclo de pensamento e ação. O LLM primeiro
raciocina sobre o problema e gera um plano de ação. Em seguida, executa as ações previstas no plano e
observa os resultados. O LLM usa as observações para atualizar seu raciocínio e gerar um novo plano de ação.
Esse processo continua até que o LLM encontre uma solução para o problema.
Para ver isso em ação, você precisa escrever algum código. No trecho de código 1, estou usando o framework
langchain para Python, juntamente com o VertexAI (google-cloud-aiplatform) e os pacotes pip google-search-
results.
Fevereiro de 2025 37
Machine Translated by Google
Engenharia Rápida
Para executar este exemplo, você deve criar uma chave SerpAPI (gratuita) em [Link]
manage-api-key e defina uma variável de ambiente SERPAPI_API_KEY.
Em seguida, vamos escrever um código Python, com a tarefa para o LLM descobrir: Quantas crianças
têm um pai famoso que toca na banda Metallica.
Pitão
llm = VertexAI(temperatura=0,1)
ferramentas = carregar_ferramentas(["serpapi"], llm=llm)
O trecho de código 2 mostra o resultado. Observe que o ReAct faz uma cadeia de cinco buscas. Na verdade, o
LLM está analisando os resultados da pesquisa do Google para descobrir os nomes das bandas. Em seguida,
ele lista os resultados como observações e encadeia o pensamento para a próxima busca.
Fevereiro de 2025 38
Machine Translated by Google
Engenharia Rápida
Eles têm dois filhos, Angel (nascido em 29 de setembro de 2006) e Vincenzo (nascido em 28 de junho de 2008).
O trecho de código 2 descobre que a banda Metallica tem quatro membros. Em seguida, ele busca cada
membro da banda para solicitar o total de filhos e somar os números. Por fim, retorna o número total de filhos
como resposta final.
Na prática, o uso de prompts do ReAct exige a compreensão de que você precisa reenviar continuamente os
prompts/respostas anteriores (e eliminar o conteúdo extra gerado), bem como configurar o modelo com
exemplos/instruções apropriados. Consulte o notebook14 hospedado no repositório do Github do
GoogleCloudPlatform, que apresenta um pouco mais de detalhes, mostrando as entradas e saídas reais do
LLM com um exemplo mais elaborado.
Fevereiro de 2025 39
Machine Translated by Google
Engenharia Rápida
A esta altura, você já deve ter percebido que escrever um prompt pode ser complexo. Não seria ótimo
automatizar isso (escrever um prompt para escrever prompts)? Bem, existe um método: Engenharia Automática
de Prompts (APE). Esse método15 não só alivia a necessidade de intervenção humana, como também
melhora o desempenho do modelo em diversas tarefas.
Você incitará um modelo a gerar mais prompts. Avalie-os e, possivelmente, altere os bons. E repita.
Por exemplo, você pode usar a engenharia de prompts automáticos para ajudar a treinar um chatbot para uma
loja virtual de camisetas promocionais. Queremos descobrir todas as maneiras pelas quais os clientes podem
formular seus pedidos de compra de uma camiseta promocional de uma banda.
1. Escreva o prompt que gerará as variantes de saída. Neste exemplo, estou usando
gemini-pro para gerar 10 instruções. Veja a Tabela 15:
Fevereiro de 2025 40
Machine Translated by Google
Engenharia Rápida
Incitar Temos uma loja virtual de camisetas com produtos da banda e, para treinar um chatbot, precisamos de
várias maneiras de fazer pedidos: "Uma camiseta do Metallica tamanho P". Gere 10 variantes, com a mesma
semântica, mas mantendo o mesmo significado.
2. Avalie todos os candidatos à instrução, pontuando-os com base em uma métrica escolhida. Por
exemplo, você pode usar BLEU (Bilingual Evaluation Understudy) ou ROUGE (Recall-Oriented
Understudy for Gisting Evaluation).
3. Selecione o candidato à instrução com a maior pontuação de avaliação. Este candidato será o
prompt final que você poderá usar em seu aplicativo de software ou chatbot. Você também pode
ajustar o prompt selecionado e avaliar novamente.
Fevereiro de 2025 41
Machine Translated by Google
Engenharia Rápida
Solicitação de código
O Gemini se concentra principalmente em prompts baseados em texto, o que também inclui a escrita de prompts
para retornar código. Vamos ao Vertex AI Studio testar esses prompts para ver alguns exemplos de codificação.
A Gemini também pode ser desenvolvedora e ajudar você a escrever código em qualquer linguagem de programação
de sua escolha. Como desenvolvedor, isso pode ajudar você a acelerar o processo de escrita de código.
Imagine uma pasta em sua máquina com centenas de arquivos que precisam ser renomeados.
Renomear cada arquivo levaria muito tempo. Você conhece um pouco de Bash e poderia escrever um script
para automatizar isso, mas isso também pode levar algum tempo. Então, vamos escrever um prompt. Você
pode escrever o prompt no chatbot público Gemini ou, se estiver mais preocupado com a confidencialidade,
pode escrever esses prompts na sua conta do Google Cloud e abrir o Vertex AI Studio. A vantagem do Vertex AI
Fevereiro de 2025 42
Machine Translated by Google
Engenharia Rápida
Nome 1_bash_renomear_arquivos_na_pasta
Meta Escreva um prompt para escrever código em Bash para renomear arquivos em uma pasta.
Modelo gemini-pro
Saída ```bash
#!/bin/bash
Parece um bom código para mim — está até documentado! No entanto, como os LLMs não conseguem raciocinar e repetir dados de
O momento que todos nós estamos esperando, será que realmente funciona?
Fevereiro de 2025 43
Machine Translated by Google
Engenharia Rápida
Vamos tentar primeiro com uma pasta de teste com apenas alguns arquivos, que precisarão ser renomeados de
1. Copie a saída da Tabela 16 (sem o wrapper de texto ```bash ```) e cole-a em um novo
2. Abra uma janela de terminal e digite: . rename_files.sh. Será solicitado que você insira um nome de pasta, por exemplo
teste. e pressione enter.
3. O script parece estar funcionando corretamente. Você verá a mensagem: Arquivos renomeados com sucesso.
Ao olhar para a pasta de teste, observe que todos os arquivos foram renomeados perfeitamente para
draft_filename.txt.
Deu certo!
Como desenvolvedor, ao trabalhar em equipe, você precisa ler o código de outra pessoa. O Gemini também pode
ajudar com isso. Vamos pegar a saída de código da Tabela 16, remover os comentários e pedir ao modelo de
linguagem grande que explique o que está acontecendo. Veja a Tabela 17:
Fevereiro de 2025 44
Machine Translated by Google
Engenharia Rápida
Nome 1_bash_explica_o_código
Meta Escreva um prompt para explicar o código Bash
Modelo gemini-pro
#!/bin/bash
"
echo "Digite o nome da pasta: leia
nome_da_pasta
se ! -d "$nome_da_pasta" ]; então
[echo "A pasta não existe."
saída 1
fi
arquivos=( "$nome_da_pasta"/* )
1. **Entrada do usuário**:
- Solicita que o usuário insira um nome de pasta usando os comandos `echo` e `read`.
O nome da pasta inserido é armazenado na variável `folder_name`.
Fevereiro de 2025 45
Machine Translated by Google
Engenharia Rápida
- Ele lista todos os arquivos dentro da pasta especificada usando `files=( “$folder_
comando `name'/* )`. Isso cria um array chamado `files` contendo os caminhos para todos os
arquivos na pasta.
4. **Renomeação de arquivos**:
- Ele itera por cada arquivo no array `files` usando um loop `for`.
- Para cada arquivo, ele gera um novo nome de arquivo usando o `new_file_
comando name=”draft_$(basename “$file”)”. Este novo nome de arquivo é criado prefixando
o nome do arquivo original com a string “draft_”.
- Em seguida, ele renomeia o arquivo usando o comando `mv “$file” “$new_file_name”`, que
move o arquivo para o novo nome de arquivo.
5. **Mensagem de sucesso**:
- Após renomear todos os arquivos, ele exibe uma mensagem de sucesso (“Arquivos
renomeados com sucesso.”) para indicar que a operação de renomeação foi bem-sucedida
O código bash da Tabela 16 parece funcionar bem. No entanto, este script poderia ser realmente reutilizável quando
me solicitasse nomes de arquivos; o ideal seria que funcionasse como um aplicativo separado com uma interface
de usuário. Como ponto de partida, Python seria uma linguagem melhor para um aplicativo (web) do que Bash.
LLMs podem ajudar a traduzir código de uma linguagem para outra. Veja o exemplo em
Tabela 18:
Fevereiro de 2025 46
Machine Translated by Google
Engenharia Rápida
Nome 1_python_renomear_arquivos
```bash
#!/bin/bash
"
echo "Digite o nome da pasta: leia
nome_da_pasta
se ! -d "$nome_da_pasta" ]; então
[echo "A pasta não existe."
saída 1
fi
arquivos=( "$nome_da_pasta"/* )
Saída ```python
importar sistema operacional
importação shutil
Fevereiro de 2025 47
Machine Translated by Google
Engenharia Rápida
Leia e revise o código. Copie a saída do prompt e cole-a em um novo arquivo: file_renamer.py.
Teste o código abrindo uma janela do Terminal e execute o seguinte comando python file_renamer.py.
OBSERVAÇÃO: Ao solicitar código (Python) no Language Studio do Vertex AI, você terá que clicar no
botão "Markdown". Caso contrário, você receberá texto simples sem o recuo de linha adequado, o que é
importante para executar código Python.
Vamos escrever manualmente algumas edições no código da Tabela 18. Ele deve solicitar ao usuário
o prefixo do nome do arquivo e escrever esse prefixo em letras maiúsculas. Veja o código de
exemplo no Snippet *3, mas que chatice. Agora ele retorna erros do Python!
Fevereiro de 2025 48
Machine Translated by Google
Engenharia Rápida
Pitão
importar sistema
arquivos = [Link](nome_da_pasta)
[Link]([Link](nome_da_pasta, arquivo),
[Link](nome_da_pasta, novo_nome_do_arquivo))
texto = toUpperCase(prefixo)
NameError: o nome 'toUpperCase' não está definido
Vamos ver se podemos pedir ao modelo de linguagem grande para depurar e revisar o código. Dê uma olhada na
Tabela 19:
Fevereiro de 2025 49
Machine Translated by Google
Engenharia Rápida
Nome 1_código_de_depuração_python
texto = toUpperCase(prefixo)
NameError: o nome 'toUpperCase' não está definido
```python
importar sistema operacional
importação shutil
Fevereiro de 2025 50
Machine Translated by Google
Engenharia Rápida
Incitar # Crie um novo nome de arquivo com o prefixo "draft_" new_filename = f"{text}
_{file}"
Saída O código chama a função `toUpperCase` para converter `prefix` para maiúsculas, mas essa
função não está definida. Para corrigir esse problema, você pode usar o método `upper()` da classe
string, que converte uma string específica para maiúsculas. O código modificado é mostrado abaixo:
```python
import os
import shutil
Fevereiro de 2025 51
Machine Translated by Google
Engenharia Rápida
Além disso, há algumas outras melhorias que podem ser feitas no código:
1. A extensão dos novos nomes de arquivo não é mantida. É melhor extrair a extensão do nome
do arquivo original e adicioná-la ao novo nome.
2. O código pressupõe que não há espaços no nome da pasta. No entanto, é uma boa prática
lidar com espaços de forma elegante, substituindo-os por sublinhados ou hífens.
4. O código não lida com erros que podem ocorrer durante o processo de renomeação.
Seria melhor encapsular a chamada `[Link]` em um bloco `try...except` para capturar
quaisquer erros potenciais.
```python
importar sistema operacional
importação shutil
# Obtenha o nome da pasta do usuário
folder_name = input("Digite o nome da pasta: ")
prefix = input("Digite a string para preceder o nome do arquivo: ")
# Verifique se a pasta existe
se não [Link](nome_da_pasta):
print("A pasta não existe.")
saída(1)
# Obter uma lista de todos os arquivos na pasta
arquivos = [Link](nome_da_pasta)
Fevereiro de 2025 52
Machine Translated by Google
Engenharia Rápida
Essas melhorias tornam o código mais robusto e flexível, além de facilitar sua leitura e
compreensão... (A resposta foi truncada porque atingiu o limite de tokens. Tente
aumentar o limite de tokens se precisar de uma resposta mais longa.)
Isso é ótimo. Não só me disse como resolver o problema, como também descobriu que
meu código tinha mais bugs e como resolvê-los. A última parte do prompt deu sugestões
para melhorar o código em geral.
Fevereiro de 2025 53
Machine Translated by Google
Engenharia Rápida
O prompt de código ainda utiliza o mesmo modelo de linguagem grande. O prompt multimodal é uma questão à parte;
refere-se a uma técnica em que se utilizam múltiplos formatos de entrada para guiar um modelo de linguagem grande,
em vez de depender apenas de texto. Isso pode incluir combinações de texto, imagens, áudio, código ou até mesmo
Melhores Práticas
Encontrar o prompt certo exige ajustes. O Language Studio no Vertex AI é o lugar perfeito para experimentar seus
Fornecer exemplos
A melhor prática mais importante é fornecer exemplos (de uma só vez/poucas vezes) dentro de um prompt. Isso
é altamente eficaz porque atua como uma poderosa ferramenta de ensino. Esses exemplos demonstram resultados
desejados ou respostas semelhantes, permitindo que o modelo aprenda com eles e adapte sua própria geração
de acordo. É como dar ao modelo um ponto de referência ou alvo a ser atingido, melhorando a precisão, o estilo
Fevereiro de 2025 54
Machine Translated by Google
Engenharia Rápida
Os prompts devem ser concisos, claros e fáceis de entender tanto para você quanto para o modelo.
Como regra geral, se já for confuso para você, provavelmente também será para o modelo. Tente
não usar linguagem complexa e não forneça informações desnecessárias.
Exemplos:
ANTES:
Estou visitando Nova York agora e gostaria de ouvir mais sobre grandes
locais. Estou com duas crianças de 3 anos. Para onde devemos ir durante
nossas férias?
DEPOIS DE REESCREVER:
Atuar como guia de viagem para turistas. Descrever lugares incríveis para visitar em Nova York
e Manhattan com uma criança de 3 anos.
Tente usar verbos que descrevam a ação. Aqui estão alguns exemplos:
Fevereiro de 2025 55
Machine Translated by Google
Engenharia Rápida
Seja específico quanto ao resultado desejado. Uma instrução concisa pode não orientar o LLM o suficiente
ou pode ser muito genérica. Fornecer detalhes específicos no prompt (por meio de prompts do sistema
ou do contexto) pode ajudar o modelo a se concentrar no que é relevante, melhorando a precisão geral.
Exemplos:
FAZER:
NÃO:
• Uma instrução fornece instruções explícitas sobre o formato, estilo ou conteúdo desejado do
resposta. Ela orienta o modelo sobre o que ele deve fazer ou produzir.
• Uma restrição é um conjunto de limitações ou limites na resposta. Ela limita o que o modelo
não deve fazer ou evitar.
Fevereiro de 2025 56
Machine Translated by Google
Engenharia Rápida
Pesquisas crescentes sugerem que focar em instruções positivas ao estimular a motivação pode ser mais eficaz
do que depender fortemente de restrições. Essa abordagem está alinhada com a preferência humana por
instruções positivas em vez de listas do que não fazer.
As instruções comunicam diretamente o resultado desejado, enquanto as restrições podem deixar o modelo em
dúvida sobre o que é permitido. Elas proporcionam flexibilidade e incentivam a criatividade dentro dos limites
definidos, enquanto as restrições podem limitar o potencial do modelo. Além disso, uma lista de restrições pode entrar
em conflito entre si.
Restrições ainda são valiosas, mas em certas situações: para evitar que o modelo gere conteúdo prejudicial ou
tendencioso ou quando um formato ou estilo de saída rigoroso é necessário.
Se possível, use instruções positivas: em vez de dizer ao modelo o que não fazer, diga a ele o que fazer. Isso pode
evitar confusão e melhorar a precisão do resultado.
FAZER:
NÃO:
Como prática recomendada, comece priorizando instruções, declarando claramente o que você quer que o modelo
faça e use restrições somente quando necessário por questões de segurança, clareza ou requisitos específicos.
Experimente e repita para testar diferentes combinações de instruções e restrições para descobrir o que funciona
Fevereiro de 2025 57
Machine Translated by Google
Engenharia Rápida
Para controlar o comprimento de uma resposta LLM gerada, você pode definir um limite máximo de tokens na
configuração ou solicitar explicitamente um comprimento específico no seu prompt. Por exemplo:
Para reutilizar prompts e torná-los mais dinâmicos, use variáveis no prompt, que podem ser alteradas
para diferentes entradas. Por exemplo, como mostrado na Tabela 20, um prompt fornece informações sobre
uma cidade. Em vez de codificar o nome da cidade no prompt, use uma variável. Variáveis podem
economizar tempo e esforço, permitindo que você evite repetições. Se precisar usar a mesma informação
em vários prompts, você pode armazená-la em uma variável e, em seguida, referenciá-la em cada prompt.
Isso faz muito sentido ao integrar prompts em seus próprios aplicativos.
Incitar VARIÁVEIS
{cidade} = "Amsterdã"
INCITAR
Você é um guia de viagem. Conte-me um fato sobre a cidade: {city}
Saída Amsterdã é uma cidade linda, repleta de canais, pontes e ruas estreitas. É um ótimo
lugar para visitar por sua rica história, cultura e vida noturna.
Fevereiro de 2025 58
Machine Translated by Google
Engenharia Rápida
Diferentes modelos, configurações de modelo, formatos de prompt, escolhas de palavras e envios podem gerar
resultados diferentes. Portanto, é importante experimentar atributos de prompt, como o estilo, a escolha de palavras
Por exemplo, um prompt com o objetivo de gerar um texto sobre o revolucionário console de videogame Sega
Dreamcast pode ser formulado como uma pergunta, uma declaração ou uma instrução, resultando em diferentes
saídas:
• Pergunta: O que foi o Sega Dreamcast e por que ele foi um console tão revolucionário?
• Declaração: O Sega Dreamcast foi um console de videogame de sexta geração lançado pela
De modo geral, a ordem dos seus exemplos de poucas tentativas não deve importar muito. No entanto, ao realizar
tarefas de classificação, certifique-se de misturar as possíveis classes de resposta nos exemplos de poucas
tentativas. Isso ocorre porque, caso contrário, você pode estar se ajustando excessivamente à ordem específica dos
exemplos. Ao misturar as possíveis classes de resposta, você pode garantir que o modelo esteja aprendendo a
identificar as principais características de cada classe, em vez de simplesmente memorizar a ordem dos exemplos.
Fevereiro de 2025 59
Machine Translated by Google
Engenharia Rápida
Uma boa regra prática é começar com 6 exemplos de tacadas e testar a precisão a partir daí.
É importante que você se mantenha atualizado sobre as mudanças na arquitetura do modelo, os dados
adicionados e os recursos. Experimente versões mais recentes do modelo e ajuste seus prompts para aproveitar
melhor os novos recursos do modelo. Ferramentas como o Vertex AI Studio são ótimas para armazenar, testar e
Além do formato de entrada do prompt, considere experimentar o formato de saída. Para tarefas não criativas,
como extrair, selecionar, analisar, ordenar, classificar ou categorizar dados, tente retornar a saída em um formato
Há algumas vantagens em retornar objetos JSON a partir de um prompt que extrai dados. Em uma aplicação
real, não preciso criar esse formato JSON manualmente; já posso retornar os dados em ordem ordenada (muito
útil ao trabalhar com objetos de data e hora), mas o mais importante é que, ao solicitar um formato JSON, o modelo é
Fevereiro de 2025 60
Machine Translated by Google
Engenharia Rápida
A Tabela 4 na seção de prompts de poucos disparos mostra um exemplo de como retornar uma saída
estruturada.
Reparo JSON
Embora retornar dados no formato JSON ofereça inúmeras vantagens, também apresenta desvantagens. A natureza
estruturada do JSON, embora benéfica para análise e uso em aplicações, requer significativamente mais tokens do
que texto simples, resultando em maior tempo de processamento e custos mais elevados. Além disso, a verbosidade
do JSON pode facilmente consumir toda a janela de saída, tornando-se especialmente problemática quando a geração é
interrompida abruptamente devido a limites de tokens. Esse truncamento frequentemente resulta em JSON inválido, com chaves
ou colchetes de fechamento cruciais ausentes, tornando a saída inutilizável. Felizmente, ferramentas como o json-repair
A biblioteca (disponível no PyPI) pode ser inestimável nessas situações. Esta biblioteca tenta corrigir automaticamente
objetos JSON incompletos ou malformados, tornando-se uma aliada crucial ao trabalhar com JSON gerado por LLM,
Fevereiro de 2025 61
Machine Translated by Google
Engenharia Rápida
Usar JSON estruturado como saída é uma ótima solução, como vimos diversas vezes neste artigo. Mas e quanto
à entrada? Embora JSON seja excelente para estruturar a saída gerada pelo LLM, ele também pode ser
incrivelmente útil para estruturar a entrada fornecida. É aqui que os Esquemas JSON entram em ação. Um Esquema
JSON define a estrutura e os tipos de dados esperados da sua entrada JSON. Ao fornecer um esquema, você
fornece ao LLM um modelo claro dos dados que ele deve esperar, ajudando-o a concentrar sua atenção nas
informações relevantes e reduzindo o risco de interpretação incorreta da entrada. Além disso, os esquemas podem
ajudar a estabelecer relacionamentos entre diferentes partes de dados e até mesmo tornar o LLM "consciente do
Digamos que você queira usar um LLM para gerar descrições de produtos em um catálogo de e-commerce. Em
vez de apenas fornecer uma descrição textual livre do produto, você pode usar um esquema JSON para definir os
atributos do produto:
{
"tipo": "objeto",
"propriedades": {
"nome": { "tipo": "string", "descrição": "Nome do produto" },
"categoria": { "tipo": "string", "descrição": "Categoria do produto" },
"preço": { "tipo": "número", "formato": "float", "descrição": "Preço do produto" },
"características": {
"tipo": "matriz",
"itens": { "tipo": "string" },
"description": "Principais características do produto"
},
"data_de_lançamento": { "tipo": "string", "formato": "data", "descrição":
"Data de lançamento do produto"
},
Fevereiro de 2025 62
Machine Translated by Google
Engenharia Rápida
Em seguida, você pode fornecer os dados reais do produto como um objeto JSON que esteja em conformidade
com este esquema:
{
"nome": "Fones de ouvido sem fio",
"categoria": "Eletrônicos",
"preço": 99,99,
"recursos": ["Cancelamento de ruído", "Bluetooth 5.0", "Bateria com duração de 20 horas"],
"data_de_lançamento": "27/10/2023"
}
Ao pré-processar seus dados, em vez de fornecer documentos completos contendo apenas o esquema e os dados, você
fornece ao LLM uma compreensão clara dos atributos do produto, incluindo sua data de lançamento, aumentando muito a
probabilidade de gerar uma descrição precisa e relevante. Essa abordagem de entrada estruturada, que direciona a atenção
do LLM para os campos relevantes, é especialmente valiosa ao trabalhar com grandes volumes de dados ou ao integrar LLMs em
aplicações complexas.
Se você estiver em uma situação em que precisa tentar criar um bom prompt, talvez seja interessante encontrar várias
pessoas para tentar. Quando todos seguem as melhores práticas (conforme listadas neste capítulo), você verá uma variação
Fevereiro de 2025 63
Machine Translated by Google
Engenharia Rápida
Para o prompt CoT, é necessário colocar a resposta depois do raciocínio porque a geração do
raciocínio altera os tokens que o modelo obtém quando prevê a resposta final.
Com CoT e autoconsistência, você precisa ser capaz de extrair a resposta final do seu prompt, separada do
raciocínio.
A última dica já foi mencionada neste capítulo, mas não podemos enfatizar o suficiente o quanto ela é importante:
documente suas tentativas rápidas em detalhes para que você possa aprender com o tempo o que deu certo e
o que não deu.
Os resultados dos prompts podem diferir entre modelos, entre configurações de amostragem e até mesmo entre
diferentes versões do mesmo modelo. Além disso, mesmo entre prompts idênticos para o mesmo modelo,
podem ocorrer pequenas diferenças na formatação das frases de saída e na escolha das palavras. (Por exemplo,
como mencionado anteriormente, se dois tokens tiverem a mesma probabilidade prevista, os empates podem
ser desfeitos aleatoriamente. Isso pode impactar os tokens previstos subsequentes.)
Fevereiro de 2025 64
Machine Translated by Google
Engenharia Rápida
Recomendamos a criação de uma Planilha Google com a Tabela 21 como modelo. As vantagens dessa
abordagem são que você tem um registro completo quando inevitavelmente precisa revisitar seu trabalho de
prompting – seja para retomá-lo no futuro (você ficaria surpreso com o quanto pode esquecer depois de
uma breve pausa), para testar o desempenho do prompt em diferentes versões de um modelo e para ajudar a
depurar erros futuros.
Além dos campos nesta tabela, também é útil monitorar a versão do prompt (iteração), um campo para
registrar se o resultado foi OK/NÃO OK/ÀS VEZES OK e um campo para registrar o feedback. Se você
tiver a sorte de usar o Vertex AI Studio, salve seus prompts (usando o mesmo nome e versão listados na
documentação) e monitore o hiperlink para o prompt salvo na tabela. Dessa forma, você estará sempre a um
clique de executar seus prompts novamente.
Quando sentir que o prompt está quase perfeito, leve-o para a base de código do seu projeto. E na base de
código, salve os prompts em um arquivo separado do código, para facilitar a manutenção. Por fim, o ideal é que
seus prompts façam parte de um sistema operacionalizado e, como engenheiro de prompts, você deve se
basear em testes automatizados e procedimentos de avaliação para entender o quão bem seu prompt se
generaliza para uma tarefa.
A engenharia de prompts é um processo iterativo. Crie e teste diferentes prompts, analise e documente
os resultados. Refine seu prompt com base no desempenho do modelo. Continue experimentando até
atingir o resultado desejado. Ao alterar um modelo ou configuração de modelo, volte e continue
experimentando com os prompts usados anteriormente.
Fevereiro de 2025 65
Machine Translated by Google
Engenharia Rápida
Resumo
Este whitepaper aborda a engenharia de prompts. Aprendemos diversas técnicas de prompting, como:
• Zero solicitação
• Aviso do sistema
• Solicitação de função
• Solicitação contextual
• Solicitação de retrocesso
• Cadeia de pensamento
• Autoconsistência
Fevereiro de 2025 66
Machine Translated by Google
Engenharia Rápida
• Reagir
O whitepaper discute os desafios da IA de geração, como os problemas que podem ocorrer quando seus prompts são
insuficientes. Encerramos com as melhores práticas sobre como se tornar um engenheiro de prompts melhor.
Fevereiro de 2025 67
Machine Translated by Google
Engenharia Rápida
Notas de rodapé
2. Google, 2024, Gemini para o Google Workspace Prompt Guide. Disponível em:
[Link]
4. Google Cloud, 2023, Corpo da Solicitação do Modelo de Texto: Métodos de amostragem Top-P e Top-K. Disponível
em: [Link]
5. Wei, J., et al., 2023, Zero Shot - Modelos de linguagem com ajuste fino são aprendizes de zero shot. Disponível em:
[Link]
6. Google Cloud, 2023, Google Cloud Model Garden. Disponível em: [Link]
7. Brown, T., et al., 2023, Few Shot - Modelos de Linguagem são Aprendizes de Poucas Disparadas. Disponível
em: [Link]
8. Zheng, L., et al., 2023, Dê um passo para trás: evocando o raciocínio por meio da abstração em grandes modelos de linguagem.
Disponível em: [Link]
9. Wei, J., et al., 2023, Chain of Thought Prompting. Disponível em: [Link]
10. Google Cloud Platform, 2023, Chain of Thought e React. Disponível em: [Link]
generative-ai/blob/main/language/prompts/examples/chain_of_thought_react.ipynb .
11. Wang, X., et al., 2023, Autoconsistência melhora o raciocínio da cadeia de pensamento em modelos de linguagem.
Disponível em: [Link]
12. Yao, S., et al., 2023, Árvore de pensamentos: resolução deliberada de problemas com grandes modelos de linguagem.
Disponível em: [Link]
13. Yao, S., et al., 2023, ReAct: Sinergizando Raciocínio e Ação em Modelos de Linguagem. Disponível em: https://
[Link]/pdf/[Link].
14. Google Cloud Platform, 2023, Advance Prompting: Chain of Thought and React. Disponível em:
[Link]
advanced_prompting_training/cot_react.ipynb .
15. Zhou, C., et al., 2023, Engenharia Automática de Prompts - Grandes Modelos de Linguagem são Engenheiros de Prompts de
Nível Humano. Disponível em: [Link]
Fevereiro de 2025 68