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?
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:
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.
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 =".
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.
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
Finalmente, vamos aproveitar a Auto-Consistência para executar o processo acima várias vezes (~5), e então tomar a resposta da maioria.
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.
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 ↩