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

Matemática

🟦 This article is rated medium
Reading Time: 2 minutes

Last updated on August 7, 2024

Durante este curso, vimos muitos métodos de prompt diferentes que podem ser usados ​​para melhorar a habilidade matemática de um LLM. Uma abordagem recente, MathPrompter, une alguns desses métodos: (Cadeia de Pensamento, PAL, etc.) em uma única técnica. A ideia principal é dividir uma questão matemática em termos algébricos e, em seguida, usar código Python para resolvê-la de maneiras diferentes.

O MathPrompter possui quatro etapas. Explicaremos as etapas usando o seguinte exemplo. O exemplo é retirado diretamente do artigo.

P: Em um restaurante, cada refeição para adultos custa R$5 e as crianças comem de graça. Se um grupo de 15
pessoas entrasse e 8 fossem crianças, quanto isso custaria para o grupo comer?

Passo 1: Gerar o modelo algébrico

A primeira etapa é atribuir uma variável a cada número na pergunta. Isso ajuda porque permite uma tradução mais fácil da pergunta para uma questão matemática abstrata, bem como para o código de programação.

Isso pode ser feito por meio de poucos prompts com exemplo:

Passo 2: Prompts Matemáticos

O objetivo deste passo é formular o problema como uma declaração algébrica e como código Python. Este passo tem dois prompts simultâneos, que ajudam a dar representações diversas do problema.

2a: Declaração Algébrica

Podemos fazer o prompt de poucas amostras (few-shot) para que o LLM represente o problema matemático como uma declaração algébrica. Isso é feito pedindo ao LLM para gerar o formato da resposta, começando com "Resposta =".

2b: Código em Python

Também podemos pedir ao LLM que gere código Python que resolva o problema. Isso é feito pedindo ao LLM para gerar uma função Python.

Geração de Respostas

Agora, podemos usar o Mapeamento que geramos anteriormente para preencher automaticamente as variáveis.

Mapeamento: {A: 5, B: 15, C: 8}

Algébrico:

Answer = 5 * 15 - 5 * 8

Código em Python:

def custo_restaurante(A=5, B=15, C=8):
  return A * (B - C)

Podemos avaliar ambos usando Python.

Algébrico:

>
> eval("5 * 15 - 5 * 8")
35

Código em Python:

>
> custo_restaurante()
35

Passo 4: Auto-Consistência

Finalmente, vamos aproveitar a Auto-Consistência para executar o processo acima várias vezes (~5), e então tomar a resposta da maioria.

Conclusão

O MathPrompter relata 92,5% de precisão no conjunto de dados MultiArith. O sucesso dessa técnica é um ótimo exemplo de como você, como um engenheiro de prompts, pode combinar métodos que aprendeu ao longo deste curso e combiná-los para lidar com problemas maiores.

Sander Schulhoff

Sander Schulhoff is the Founder of Learn Prompting and an ML Researcher at the University of Maryland. He created the first open-source Prompt Engineering guide, reaching 3M+ people and teaching them to use tools like ChatGPT. Sander also led a team behind Prompt Report, the most comprehensive study of prompting ever done, co-authored with researchers from the University of Maryland, OpenAI, Microsoft, Google, Princeton, Stanford, and other leading institutions. This 76-page survey analyzed 1,500+ academic papers and covered 200+ prompting techniques.

Footnotes

  1. Imani, S., Du, L., & Shrivastava, H. (2023). MathPrompter: Mathematical Reasoning using Large Language Models.

  2. Roy, S., & Roth, D. (2015). Solving General Arithmetic Word Problems. Proceedings of the 2015 Conference on Empirical Methods in Natural Language Processing, 1743–1752. https://doi.org/10.18653/v1/D15-1202

Copyright © 2024 Learn Prompting.