Matemática
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
-
Imani, S., Du, L., & Shrivastava, H. (2023). MathPrompter: Mathematical Reasoning using Large Language Models. ↩
-
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 ↩