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 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
-
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 ↩