Los modelos de lenguaje grande pueden estar sintonizados con un conjunto de preguntas y respuestas. Sin embargo, para ajustar aún más un modelo en sus propios datos , necesita una gran cantidad de preguntas y respuestas sobre sus datos. Producir esas preguntas y respuestas puede ser mucho trabajo manual.
Este repositorio le permite utilizar un modelo de lenguaje no ajustado (CHATGPT) para extraer pares de preguntas/respuestas automáticamente de los datos textuales existentes, eliminando todos los trabajos manuales.
Para ejecutar este código, deberá clonar este repositorio y luego instalar los siguientes paquetes de Python:
tiktoken , el tokeniser de Openai,openai , el cliente oficial de API de OpenAI,langchain , código de pegamento utilizado para combinar modelos y utilidades. Este script está diseñado para convertir una carpeta de documentos de Markdown ( .md ) en un archivo .json que contiene una lista de preguntas, respuestas y rutas a los documentos de origen que se usaron para producirlos.
Para ejecutar el código, establezca las rutas de archivo relevantes en el archivo question_extractor.py (tanto la carpeta de entrada como la ruta de salida) y asegúrese de que su tecla API OpenAI esté en el entorno. Luego ejecute el guión con Python:
python3 question_extractor.py
Una vez que se haga, todas las preguntas/respuestas se escribirán como un archivo .json en la ruta de salida.
El código boques en todos los archivos, para cada archivo extrae una lista de preguntas utilizando el siguiente mensaje seguido de un trozo de texto:
You are an expert user extracting information to quiz people on documentation. You will be passed a page extracted from the documentation, write a numbered list of questions that can be answered based *solely* on the given text.
Luego boques las preguntas, produciendo una respuesta pasando el siguiente aviso seguido de un trozo de texto y una pregunta:
You are an expert user answering questions. You will be passed a page extracted from a documentation and a question. Generate a comprehensive and informative answer to the question based *solely* on the given text.
La mayor parte de la lógica real del código está dedicada a procesar los archivos simultáneamente (a la velocidad) y asegurar que los fragmentos de texto pasados al modelo sean lo suficientemente pequeños como para dejar suficientes tokens para responder.
Si un texto es demasiado largo para ser enviado al modelo, se divide a lo largo de su nivel de encabezado más alto (el proceso se puede repetir recursivamente si es necesario hasta que bajemos a párrafos individuales).
En cuanto al rendimiento, este script puede procesar la documentación completa de NERSC en 6 minutos 1 . Convirtiendo los archivos de 318 Markdown en 8005 preguntas por $ 29.
Ejecutando aproximadamente el 93% del límite de tasa del modelo. ↩