Repo para Paper Pal: modelos de idiomas asistidos por programas.
En PAL, el modelo de lenguaje grande resuelve problemas de razonamiento que involucran tareas aritméticas y de procedimiento complejas mediante la generación de cadenas de razonamiento de texto y código . Esto descarga la ejecución del código a un tiempo de ejecución del programa, en nuestro caso, un intérprete de Python. En nuestro artículo, implementamos PAL utilizando un enfoque de solicitación de pocos disparos.

Este repositorio proporciona una implementación interactiva de PAL.
[Marzo de 2023] Hemos agregado soportes para las API CHATGPT (por ejemplo, GPT-3.5-TURBO). Esperamos una transición suave para PAL sobre el apagado de la API del códice. Consulte un script beta scripts/gsm_chatgpt.py para el razonamiento matemático.
[Enero de 2023] Lanzamos GSM-Hard, una versión más difícil de GSM8K que creamos. ¿También avaliable en Huggingface?
import datasets
gsm_hard = datasets . load_dataset ( "reasoning-machines/gsm-hard" ) Clonar este repositorio e instalar con pip .
git clone https://github.com/luyug/pal
pip install -e ./pal
Antes de ejecutar los scripts, configure la tecla OpenAI, export OPENAI_API_KEY='sk-...'
Los componentes centrales del paquete pal son las clases de interfaz. Específicamente, ProgramInterface conecta el backend LLM, un backend de Python y las indicaciones del usuario.
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)
Aquí, el método run de interface ejecutará la generación con la API de OpenAI, ejecutará el fragmento generado y luego evaluará get_answer_expr (aquí solution() ) para obtener la respuesta final.
El usuario debe establecer get_answer_expr en función de la solicitud.
Proporcionamos bucles de inferencia simples en los scripts/ carpeta.
mkdir eval_results
python scripts/{colored_objects|gsm|date_understanding|penguin}_eval.py
Tenemos una versión beta de un script dedicado por ChatGPT para el razonamiento matemático.
python scripts/gsm_chatgpt.py
Para ejecutar una inferencia masiva, utilizamos el impulso de la biblioteca genérico y lo recomendamos para ejecutar inferenencia de cuna en todas las tareas utilizadas en nuestro trabajo.



Para obtener los detalles completos de los resultados, consulte el documento.
@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}
}