Promptwright est une bibliothèque Python de Stacklok conçue pour générer de grands ensembles de données synthétiques à l'aide d'un LLM local. La bibliothèque offre un ensemble d'interfaces flexibles et faciles à utiliser, permettant aux utilisateurs de générer des ensembles de données synthétiques rapides.
Promptwright a été inspiré par redotvideo/pluto, en fait, il a commencé comme un fork, mais a fini par être une réécriture, pour permettre la génération d'un ensemble de données sur un modèle LLM local, par opposition à OpenAI où les coûts peuvent être prohibitifs.
La bibliothèque s'interface avec Ollama, ce qui facilite l'extraction d'un modèle et l'exécution de Promptwright.
Intégration du client LLM local : interagissez avec les modèles basés sur Ollama
Instructions et invites configurables : définissez des instructions personnalisées et des invites système
Push to Hugging Face : poussez l'ensemble de données généré vers Hugging Face Hub.
Python3.11+
bibliothèque promptwright
installée
Ollama CLI installé et en cours d'exécution (voir Installation d'Ollama
Un modèle tiré via Ollama (voir Compatibilité des modèles)
Pour installer les prérequis, vous pouvez utiliser les commandes suivantes :
pip install promptwright ollama servir ollama pull {model_name} # quel que soit le modèle que vous souhaitez utiliser
Il existe quelques exemples dans le répertoire examples
qui montrent comment utiliser la bibliothèque pour générer différents ensembles de données thématiques.
Pour exécuter un exemple :
Assurez-vous d'avoir démarré Ollama en exécutant ollama serve
.
Vérifiez que le modèle requis est téléchargé (par exemple llama3.2:latest
).
Définissez le model_name
dans le fichier d'exemple choisi sur le modèle que vous avez téléchargé.
engine = LocalDataEngine( args=LocalEngineArguments( instructions="Générer des invites d'écriture créative et des exemples de réponses.", system_prompt="Vous êtes un instructeur d'écriture créative fournissant des invites d'écriture et des exemples de réponses.", model_name="llama3.2:latest", température =0,9, # Température plus élevée pour des variations plus créatives max_retries=2,
Exécutez le fichier d'exemple que vous avez choisi :
exemple python/creative_writing.py
L'ensemble de données généré sera enregistré dans un fichier JSONL selon ce qui est défini dans dataset.save()
.
{ "messages": [ { "role": "system", "content": "Vous êtes chargé de concevoir une expérience de réalité virtuelle immersive qui transporte les utilisateurs dans un monde fantastique et merveilleux." }, { "role": "user", "content": "Créez un passage descriptif sur un personnage découvrant ses talents cachés." }, { "role": "assistant", "content": "Alors qu'elle regardait la toile, les doigts d'Emma planaient au-dessus des pinceaux, comme si elle hésitait à libérer les couleurs qui étaient enfermées en elle. Les traits commençaient avec un abandon audacieux, tourbillonnant les bleus et les verts se fondent dans une danse fascinante de lumière et d'ombre. À chaque instant qui passe, elle se sent devenir l'art - son essence même s'infiltre sur la toile comme des aquarelles dans une tempête printanière. Le monde autour d'elle fond, ne laissant que le vibrant. symphonie de couleur et de création." } ] }
Dataset : Une classe pour gérer les ensembles de données générés.
LocalDataEngine : Le moteur principal chargé d'interagir avec le client LLM et de générer des ensembles de données.
LocalEngineArguments : classe de configuration qui définit les instructions, l'invite système, la température du nom du modèle, les tentatives et les modèles d'invite utilisés pour générer des données.
OllamaClient : Une classe client pour interagir avec l'API Ollama
HFUploader : Une classe utilitaire pour télécharger des ensembles de données sur Hugging Face (transmettez le chemin d'accès à l'ensemble de données et au jeton).
Si vous rencontrez des erreurs lors de l'exécution du script, voici quelques étapes de dépannage courantes :
Redémarrez Ollama :
killall ollama && ollama servir
Vérifier l'installation du modèle :
ollama tire {model_name}
Vérifiez les journaux Ollama :
Inspectez les journaux à la recherche de messages d'erreur susceptibles de fournir plus de contexte sur ce qui n'a pas fonctionné. Ceux-ci peuvent être trouvés dans le répertoire ~/.ollama/logs
.
La bibliothèque devrait fonctionner avec la plupart des modèles LLM. Il a été testé jusqu'à présent avec les modèles suivants :
LLaMA3 : La bibliothèque est conçue pour fonctionner avec le modèle LLaMA, en particulier le modèle llama3:latest
.
Mistral : La bibliothèque est compatible avec le modèle Mistral, qui est un fork du modèle GPT-3.
Si vous testez encore, veuillez faire une pull request pour mettre à jour cette liste !
Si quelque chose ici peut être amélioré, veuillez ouvrir un problème ou soumettre une pull request.
Ce projet est sous licence Apache 2. Voir le fichier LICENSE
pour plus de détails.