Promptwright es una biblioteca Python de Stacklok diseñada para generar grandes conjuntos de datos sintéticos utilizando un LLM local. La biblioteca ofrece un conjunto de interfaces flexibles y fáciles de usar, lo que permite a los usuarios generar conjuntos de datos sintéticos dirigidos rápidamente.
Promptwright se inspiró en redotvideo/pluto; de hecho, comenzó como una bifurcación, pero terminó siendo en gran medida una reescritura para permitir la generación de conjuntos de datos contra un modelo LLM local, a diferencia de OpenAI, donde los costos pueden ser prohibitivos.
La biblioteca interactúa con Ollama, lo que facilita simplemente extraer un modelo y ejecutar Promptwright.
Integración de cliente LLM local : interactúe con modelos basados en Ollama
Instrucciones e indicaciones configurables : defina instrucciones personalizadas y indicaciones del sistema
Enviar a Hugging Face : envíe el conjunto de datos generado a Hugging Face Hub.
Pitón 3.11+
Biblioteca promptwright
instalada
Ollama CLI instalado y ejecutándose (consulte Instalación de Ollama
Un modelo extraído a través de Ollama (ver Compatibilidad de modelos)
Para instalar los requisitos previos, puede utilizar los siguientes comandos:
indicador de instalación de pip servir ollama ollama tira {model_name} # el modelo que quieras usar
Hay algunos ejemplos en el directorio examples
que demuestran cómo utilizar la biblioteca para generar diferentes conjuntos de datos basados en temas.
Para ejecutar un ejemplo:
Asegúrese de haber iniciado Ollama ejecutando ollama serve
.
Verifique que esté descargado el modelo requerido (por ejemplo, llama3.2:latest
).
Establezca el model_name
en el archivo de ejemplo elegido según el modelo que ha descargado.
motor = LocalDataEngine( args=LocalEngineArguments( instrucciones="Generar mensajes de escritura creativa y respuestas de ejemplo.", system_prompt="Usted es un instructor de escritura creativa que proporciona mensajes de escritura y respuestas de ejemplo.", model_name="llama3.2:latest", temperatura =0.9, # Temperatura más alta para variaciones más creativas max_retries=2,
Ejecute el archivo de ejemplo elegido:
ejemplo de Python/creative_writing.py
El conjunto de datos generado se guardará en un archivo JSONL según lo que esté configurado en dataset.save()
.
{ "mensajes": [ { "role": "system", "content": "Tienes la tarea de diseñar una experiencia de realidad virtual inmersiva que transporte a los usuarios a un mundo fantástico y maravilloso". }, { "role": "usuario", "content": "Crea un pasaje descriptivo sobre un personaje que descubre sus talentos ocultos". }, { "role": "assistant", "content": "Mientras miraba el lienzo, los dedos de Emma se cernían sobre los pinceles, como si dudaran en liberar los colores que habían estado encerrados dentro de ella. Los trazos comenzaron con audaz abandono, arremolinándose. azules y verdes fusionándose en una fascinante danza de luces y sombras. Con cada momento que pasaba, sentía que se convertía en arte: su esencia misma se filtraba en el lienzo como acuarelas en una tormenta primaveral. El mundo que la rodeaba se desvanecía, dejando solo lo vibrante. Sinfonía de color y creación." } ] }
Conjunto de datos : una clase para gestionar conjuntos de datos generados.
LocalDataEngine : el motor principal responsable de interactuar con el cliente LLM y generar conjuntos de datos.
LocalEngineArguments : una clase de configuración que define las instrucciones, el mensaje del sistema, la temperatura del nombre del modelo, los reintentos y las plantillas de mensajes utilizados para generar datos.
OllamaClient : una clase de cliente para interactuar con la API de Ollama
HFUploader : una clase de utilidad para cargar conjuntos de datos en Hugging Face (pase la ruta al conjunto de datos y al token).
Si encuentra algún error al ejecutar el script, a continuación se detallan algunos pasos comunes para solucionar problemas:
Reiniciar Ollama :
Killall ollama && ollama servir
Verificar la instalación del modelo :
ollama tirar {model_name}
Consulte los registros de Ollama :
Inspeccione los registros en busca de mensajes de error que puedan proporcionar más contexto sobre lo que salió mal; estos se pueden encontrar en el directorio ~/.ollama/logs
.
La biblioteca debería funcionar con la mayoría de los modelos LLM. Ha sido probado con los siguientes modelos hasta el momento:
LLaMA3 : La biblioteca está diseñada para funcionar con el modelo LLaMA, específicamente el modelo llama3:latest
.
Mistral : La biblioteca es compatible con el modelo Mistral, que es una bifurcación del modelo GPT-3.
Si realiza más pruebas, realice una solicitud de extracción para actualizar esta lista.
Si algo aquí podría mejorarse, abra un problema o envíe una solicitud de extracción.
Este proyecto está bajo la licencia Apache 2. Consulte el archivo LICENSE
para obtener más detalles.