Compete in HackAPrompt 2.0, the world's largest AI Red-Teaming competition!

Check it out →
learnprompting logo
Bem-Vindo(a)!
😃 Fundamentos
💼 Aplicações Básicas
🧙‍♂️ Intermediário
🤖 Agentes
⚖️ Confiabilidade
🖼️ Prompts para Imagens
🔓 Hackeando Prompts
🔨 Ferramentas
💪 Ajustando prompts
🎲 Aleatórios
📚 Bibliography
Resources
📦 Prompted Products
🛸 Additional Resources
🔥 Hot Topics
✨ Credits

Montagem de prompts / Métodos de ensamblagem

🟦 This article is rated medium
Reading Time: 5 minutes
Last updated on August 7, 2024

Sander Schulhoff

"Montagem de prompts" ou "Métodos de ensamblagem" (ou ensembling prompt, em inglês) é o conceito de usar vários prompts diferentes para tentar responder a mesma pergunta. Existem muitas abordagens diferentes para isso.

DiVeRSe

DiVeRSe ("Diverse Verifier on Reasoning Steps", ou "Verificador Diversificado em Etapas de Raciocínio") é um método que melhora a confiabilidade das respostas de três maneiras. Isso é feito 1) usando vários prompts para gerar conclusões diversificadas, 2) usando um verificador para distinguir boas respostas das ruins e 3) usando um verificador para verificar a correção das etapas de raciocínio.

DiVeRSe (Li et al.)

Prompts do tipo DiVeRSe

O DiVeRSe usa 5 prompts diferentes para um determinado input. Para construir cada prompt, eles amostram aleatoriamente alguns exemplos do conjunto de treinamento. Aqui está um exemplo de um prompt com poucas amostras (k = 2), com exemplos retirados do [GSM8K benchmark] (https://raw.githubusercontent.com/openai/grade-school-math/master/grade_school_math/data/train.jsonl). Na prática, o DiVeRSe usa 5 exemplos em prompts para este benchmark.

Q: Natália vendeu clipes para 48 de seus amigos em abril e, em seguida, vendeu a metade disso em maio. Quantos clipes Natália vendeu no total, em abril e maio?
A: Natália vendeu 48/2 = 24 clipes em maio.
Natália vendeu 48 + 24 = 72 clipes no total, em abril e maio.
#### 72
Q: Weng ganha US$ 12 por hora para trabalhar como babá. Ontem ela só trabalhou 50 minutos como babá. Quanto ela ganhou?
A: Weng ganha 12/60 = R$ 0,2 por minuto.
Trabalhando 50 minutos, ela ganhou 0,2 x 50 = R$ 10.
#### 10
Q: Betty está economizando dinheiro para uma nova carteira que custa R$ 100. Betty tem apenas metade do dinheiro que precisa. Seus pais decidiram dar-lhe R$ 15 para esse propósito e seus avós o dobro do que seus pais. Qual a quantia Betty ainda precisa para comprar a carteira?
A:

Depois de gerar 5 prompts diferentes como acima, o DiVeRSe amostra 20 caminhos de raciocínio para cada um (temperatura = 0,5). Aqui estão alguns exemplos de completamento do prompt acima. Note que as respostas nem sempre são corretas.

{"highlight-start"}
Betty tem 0.5*100 = R$50.
Então ela ganha mais 15 = R$65.
Em seguida ela ganha 2*15 = R$90.
Ela ainda precisa de 100-90 = R$10 a mais.
#### 10
{"highlight-end"}
{"highlight-start"}
A: Betty tem 0.5*100 = R$500.
Então ela ganha 15 a mais = R$650.
Em seguida ela ganha 2*15 = R$900.
Ela ainda precisa de 100-90 = R$1000 a mais.
#### 1000
{"highlight-end"}

Nesse ponto, o DiVeRSe gerou 1000 completamentos diferentes.

Verificador de Votação

Agora, nós poderíamos simplesmente pegar a resposta majoritária, como o Self-Consistency faz.

No entanto, o DiVeRSe propõe um método muito mais complicado, que eles chamam de verificador de votação.

Na hora dos testes, usar o verificador de votação é um processo de duas etapas. Primeiro, o verificador (uma rede neural) atribui uma pontuação de 0 a 1 para cada completamento, com base na probabilidade de ser correto. Depois, a parte da "votação" soma todas as pontuações de diferentes respostas e fornece a resposta final.

Exemplo

Aqui está um pequeno exemplo. Digamos que temos os seguintes completamentos para o prompt Qual é a soma de dois mais dois?:



4



dois + 2 = 5



Eu acho que 2+2 = 6



dois mais dois = 4

{"highlight-start"}
É 5
{"highlight-end"}

O verificador lerá cada completamento e atribuirá uma pontuação a ele. Por exemplo, pode atribuir as pontuações: 0,9, 0,1, 0,2, 0,8, 0,3, respectivamente. Então, a parte da votação somará as pontuações de cada resposta.

pontuação(4) = 0.9 + 0.8 = 1.7
pontuação(5) = 0.1 + 0.3 = 0.4
pontuação(6) = 0.2

A resposta final é 4, já que ela teve a pontuação maior.

Mas como o verificador é treinado?

O verificador é treinando com uma função um pouco compleza, que eu não vou abordar aqui. Leia a seção 3.3 desse artigo para mais informações.

Prompts do tipo "Me Pergunte Qualquer Coisa" - Ask Me Anything (AMA)

Perguntas do tipo AMA é uma abordagem semelhante à DiVeRSe. No entanto, tanto seu passo de múltiplos prompts quanto seu passo de agregação de respostas diferem significativamente. A ideia principal do AMA é usar um LLM para gerar múltiplos prompts, em vez de usar apenas prompts com poucos exemplos.

Prompts Múltiplos

A abordagem AMA mostra que você pode tomar uma pergunta e reformatá-la de várias maneiras para criar prompts diferentes. Por exemplo, digamos que você está coletando um monte de sites para obter informações sobre animais e deseja gravar apenas os que vivem na América do Norte. Vamos construir um prompt para determinar isso.

Dado o seguinte trecho da Wikipedia:

O urso Kermode, às vezes chamado de urso espírito (Ursus americanus kermodei), é uma subespécie do urso negro americano e vive nas regiões da Costa Central e Norte da Colúmbia Britânica, Canadá.

Você pode formatar essa tarefa em um prompt assim:

A seguinte afirmação é Verdadeira ou Falsa dado o contexto?

Contexto: O urso Kermode, às vezes chamado de urso espírito (Ursus americanus kermodei), é uma subespécie do urso negro americano e vive nas regiões da Costa Central e Norte da Colúmbia Britânica, Canadá.
Afirmação: Este animal vive na América do Norte
Resposta:

Esta é uma forma um pouco estranha de formular. Por que não usar o seguinte prompt, que é bem mais simples?

Contexto: O urso Kermode, às vezes chamado de urso espírito (Ursus americanus kermodei), é uma subespécie do urso-preto americano e vive nas regiões da Costa Central e Norte da Colúmbia Britânica, Canadá.
Pergunta: Esse animal vive na América do Norte?

Bem, ao formular a questão desta forma especial, podemos gerar prompts diferentes. Nosso primeiro passo aqui será transformar a afirmação Esse animal vive na América do Norte e reformatá-la em diferentes perguntas, que basicamente estão perguntando a mesma coisa. Para isso, passaremos a afirmação por prompts como os da imagem abaixo.

Isso pode gerar:

  1. O animal estava vivendo na América do Norte?
  2. O animal vive na América do Norte?
  3. Onde o animal vive?

A ideia por trás disso é criar diferentes visões da tarefa. Então, aplicamos cada uma ao contexto dado da seguinte forma:

Contexto: O urso Kermode, às vezes chamado de urso espírito (Ursus americanus kermodei), é uma subespécie do urso-preto americano e vive nas regiões da Costa Central e Norte da Colúmbia Britânica, Canadá.
Pergunta: O animal estava vivendo na América do Norte?

Então, podemos gerar respostas para cada uma:

  1. Sim, ele estava
  2. Sim, ele faz
  3. América do Norte

Estas são respostas intermediárias. Precisamos mapeá-las para etiquetas de tarefa (por exemplo, Sim ou Não).

Podemos fazer isso passando as respostas intermediárias por um prompt como o seguinte:

Selecione a categoria correta.

"Categorias":
- Sim, América do Norte
- Não, não na América do Norte

"Sim, ele estava" se encaixa na categoria:

Agora podemos obter nossas respostas de saída.

  1. Sim, América do Norte
  2. Sim, América do Norte
  3. Sim, América do Norte

Aqui, todos concordam, então podemos pegar a primeira resposta. No entanto, se eles discordassem, poderíamos usar o passo de agregação do AMA para obter uma resposta final.

Agregação de respostas

A AMA usa uma estratégia muito complicada para agregar respostas (mais do que a DiVeRSe) em vez de simplesmente considerar a resposta da maioria. Para entender por que a resposta da maioria pode ser uma escolha ruim, considere duas das perguntas que geramos antes:

  1. O animal vivia na América do Norte?
  2. O animal vive na América do Norte?

Eles são extremamente similares, portanto provavelmente gerarão o mesmo resultado. Como as perguntas são tão semelhantes, elas afetarão de forma significativa o resultado final. Para lidar com isso, a AMA conta com supervisão fraca e matemática complexa para estimar as dependências entre os diferentes prompts que cria e, em seguida, usa isso para ponderá-los adequadamente.

Portanto, para as três perguntas que geramos, ela pode atribuir pesos de 25%, 25% e 50%, já que as primeiras duas são tão semelhantes.

Embora a estratégia de agregação da AMA seja poderosa, ela é tão complicada que não a abordarei aqui. Leia a seção 3.4 do artigo para obter mais detalhes.

Resultados

  • Com essa estratégia de prompting, a AMA é capaz de usar o GPT-J-6B para superar a performance do GPT-3.

  • A AMA é melhor em perguntas em que o contexto dado contém a resposta.

Takeaways

Métodos de ensamblagem são muito poderosos. Eles podem ser usados ​​para melhorar o desempenho de qualquer modelo e também podem ser usados ​​para melhorar o desempenho de um modelo em uma tarefa específica.

Na prática, a votação da maioria deve ser a sua estratégia principal.

Sander Schulhoff

Sander Schulhoff is the CEO of HackAPrompt and Learn Prompting. He created the first Prompt Engineering guide on the internet, two months before ChatGPT was released, which has taught 3 million people how to prompt ChatGPT. He also partnered with OpenAI to run the first AI Red Teaming competition, HackAPrompt, which was 2x larger than the White House's subsequent AI Red Teaming competition. Today, HackAPrompt partners with the Frontier AI labs to produce research that makes their models more secure. Sander's background is in Natural Language Processing and deep reinforcement learning. He recently led the team behind The Prompt Report, the most comprehensive study of prompt engineering ever done. This 76-page survey, co-authored with OpenAI, Microsoft, Google, Princeton, Stanford, and other leading institutions, analyzed 1,500+ academic papers and covered 200+ prompting techniques.

Footnotes

  1. Li, Y., Lin, Z., Zhang, S., Fu, Q., Chen, B., Lou, J.-G., & Chen, W. (2022). On the Advance of Making Language Models Better Reasoners. 2

  2. Cobbe, K., Kosaraju, V., Bavarian, M., Chen, M., Jun, H., Kaiser, L., Plappert, M., Tworek, J., Hilton, J., Nakano, R., Hesse, C., & Schulman, J. (2021). Training Verifiers to Solve Math Word Problems.

  3. Mitchell, E., Noh, J. J., Li, S., Armstrong, W. S., Agarwal, A., Liu, P., Finn, C., & Manning, C. D. (2022). Enhancing Self-Consistency and Performance of Pre-Trained Language Models through Natural Language Inference.

  4. Arora, S., Narayan, A., Chen, M. F., Orr, L., Guha, N., Bhatia, K., Chami, I., Sala, F., & Ré, C. (2022). Ask Me Anything: A simple strategy for prompting language models. 2

  5. Wang, B., & Komatsuzaki, A. (2021). GPT-J-6B: A 6 Billion Parameter Autoregressive Language Model. https://github.com/kingoflolz/mesh-transformer-jax. https://github.com/kingoflolz/mesh-transformer-jax