Repo for the Paper PAL: Modèles linguistiques assistés par le programme.
Dans PAL, un modèle de langue grande résout des problèmes de raisonnement qui impliquent des tâches arithmétiques et procédurales complexes en générant des chaînes de texte de texte et de code . Cela décharge l'exécution du code à un runtime de programme, dans notre cas, un interprète Python. Dans notre article, nous mettons en œuvre PAL en utilisant une approche d'incitation à quelques coups.

Ce repo fournit une implémentation interactive de PAL.
[MAR 2023] Nous avons ajouté des supports pour les API ChatGPT (par exemple, GPT-3.5-turbo). Nous nous attendons à une transition en douceur pour PAL sur l'arrêt de l'API Codex. Découvrez un script bêta scripts/gsm_chatgpt.py pour le raisonnement mathématique.
[Janvier 2023] Nous publions GSM-Hard, une version plus difficile de GSM8K que nous avons créée. Aussi avaliable sur HuggingFace?
import datasets
gsm_hard = datasets . load_dataset ( "reasoning-machines/gsm-hard" ) Clone ce dépôt et installez avec pip .
git clone https://github.com/luyug/pal
pip install -e ./pal
Avant d'exécuter les scripts, définissez la touche openai, export OPENAI_API_KEY='sk-...'
Les composants principaux du package pal sont les classes d'interface. Plus précisément, ProgramInterface connecte le backend LLM, un backend Python et des invites utilisateur.
import pal
from pal.prompt import math_prompts
interface = pal.interface.ProgramInterface(
model='code-davinci-002',
stop='nnn', # stop generation str for Codex API
get_answer_expr='solution()' # python expression evaluated after generated code to obtain answer
)
question = 'xxxxx'
prompt = math_prompts.MATH_PROMPT.format(question=question)
answer = interface.run(prompt)
Ici, la méthode run de interface exécutera la génération avec l'API OpenAI, exécutera l'extrait généré, puis évaluera get_answer_expr (ici solution() ) pour obtenir la réponse finale.
L'utilisateur doit définir get_answer_expr en fonction de l'invite.
Nous fournissons des boucles d'inférence simples dans les scripts/ dossier.
mkdir eval_results
python scripts/{colored_objects|gsm|date_understanding|penguin}_eval.py
Nous avons une version bêta d'un script dédié Chatgpt pour le raisonnement mathématique.
python scripts/gsm_chatgpt.py
Pour exécuter l'inférence en vrac, nous avons utilisé l'invite générique de la bibliothèque d'incitation et la recommandée pour l'exécution de l'inutilisation du COT sur toutes les tâches utilisées dans notre travail.



Pour les détails complets des résultats, consultez le document.
@article{gao2022pal,
title={PAL: Program-aided Language Models},
author={Gao, Luyu and Madaan, Aman and Zhou, Shuyan and Alon, Uri and Liu, Pengfei and Yang, Yiming and Callan, Jamie and Neubig, Graham},
journal={arXiv preprint arXiv:2211.10435},
year={2022}
}