Ce package intègre de grands modèles de langage (LLMS) dans Spacy, avec un système modulaire pour le prototypage et l'incitation rapides , et transformer des réponses non structurées en sorties robustes pour diverses tâches PNL, aucune donnée de formation requise.
llm
sérialisable pour intégrer les invites dans votre pipeline spacylangchain
peuvent être utilisés dans spacy-llm
Les modèles de grands langues (LLM) présentent de puissantes capacités de compréhension du langage naturel. Avec seulement quelques (et parfois non) exemples, un LLM peut être invité à effectuer des tâches NLP personnalisées telles que la catégorisation de texte, la reconnaissance des entités nommée, la résolution de coreférence, l'extraction d'informations et plus encore.
Spacy est une bibliothèque bien établie pour la construction de systèmes qui doivent travailler avec le langage de diverses manières. Les composants intégrés de Spacy sont généralement alimentés par l'apprentissage supervisé ou les approches basées sur des règles.
L'apprentissage supervisé est bien pire que la LLM pour le prototypage, mais pour de nombreuses tâches, c'est beaucoup mieux pour la production. Un modèle de transformateur qui fonctionne confortablement sur un seul GPU est extrêmement puissant, et il est probablement un meilleur choix pour toute tâche pour laquelle vous avez une sortie bien définie. Vous entraînez le modèle avec n'importe quoi de quelques centaines à quelques milliers d'exemples étiquetés, et il apprendra à faire exactement cela. L'efficacité, la fiabilité et le contrôle sont tous meilleurs avec l'apprentissage supervisé, et la précision sera généralement plus élevée que la LLM.
spacy-llm
vous permet d'avoir le meilleur des deux mondes . Vous pouvez rapidement initialiser un pipeline avec des composants alimentés par des invites LLM et mélanger librement des composants alimentés par d'autres approches. Au fur et à mesure que votre projet progresse, vous pouvez envisager de remplacer certains ou tous les composants alimentés par LLM comme vous le avez besoin.
Bien sûr, il peut y avoir des composants dans votre système pour lesquels la puissance d'un LLM est pleinement justifiée. Si vous voulez un système qui peut synthétiser les informations à partir de plusieurs documents de manière subtile et générer un résumé nuancé pour vous, plus grand est mieux. Cependant, même si votre système de production a besoin d'un LLM pour une partie de la tâche, cela ne signifie pas que vous avez besoin d'un LLM pour tout cela. Peut-être que vous souhaitez utiliser un modèle de classification de texte bon marché pour vous aider à trouver les textes pour résumer, ou peut-être que vous souhaitez ajouter un système basé sur des règles à Sanity Vérifiez la sortie du résumé. Ces tâches avant et après sont beaucoup plus faciles avec une bibliothèque mature et bien pensée, ce qui est exactement ce que Spacy fournit.
spacy-llm
sera installé automatiquement dans les futures versions Spacy. Pour l'instant, vous pouvez exécuter ce qui suit dans le même environnement virtuel où vous avez déjà installé spacy
.
python -m pip install spacy-llm
️ Ce package est toujours expérimental et il est possible que les modifications apportées à l'interface se cassent dans les mises à jour de la version mineure.
Exécutons une classification de texte à l'aide d'un modèle GPT d'OpenAI.
Créez une nouvelle touche API à partir d'Openai.com ou récupérez une nouvelle existante et assurez-vous que les clés sont définies comme variables environnementales. Pour plus d'informations générales, consultez la documentation sur la définition des clés d'API.
Pour faire des expériences rapides, à partir de 0,5.0, vous pouvez courir:
import spacy
nlp = spacy . blank ( "en" )
llm = nlp . add_pipe ( "llm_textcat" )
llm . add_label ( "INSULT" )
llm . add_label ( "COMPLIMENT" )
doc = nlp ( "You look gorgeous!" )
print ( doc . cats )
# {"COMPLIMENT": 1.0, "INSULT": 0.0}
En utilisant l'usine llm_textcat
, la dernière version de la tâche TextCat intégrée est utilisée, ainsi que le modèle GPT-3-5 par défaut d'OpenAI.
Pour contrôler les différents paramètres du pipeline llm
, nous pouvons utiliser le système de configuration de Spacy. Pour démarrer, créez un fichier config config.cfg
contenant au moins ce qui suit (ou voir l'exemple complet ici):
[nlp]
lang = " en "
pipeline = [ " llm " ]
[components]
[components.llm]
factory = " llm "
[components.llm.task]
@ llm_tasks = " spacy.TextCat.v3 "
labels = [ " COMPLIMENT " , " INSULT " ]
[components.llm.model]
@ llm_models = " spacy.GPT-4.v2 "
Maintenant courir:
from spacy_llm . util import assemble
nlp = assemble ( "config.cfg" )
doc = nlp ( "You look gorgeous!" )
print ( doc . cats )
# {"COMPLIMENT": 1.0, "INSULT": 0.0}
C'est ça! Il y a beaucoup d'autres fonctionnalités - modèles rapides, plus de tâches, journalisation, etc. Pour plus d'informations sur la façon de les utiliser, consultez https://spacy.io/api/large-Language-Models.
Dans un proche avenir, nous allons
Les PR sont toujours les bienvenus!
Si vous avez des questions concernant l'utilisation de spacy-llm
ou si vous souhaitez nous donner des commentaires après lui avoir fait un tour, veuillez utiliser le forum de discussion. Les rapports de bogues peuvent être déposés sur le tracker de l'émission de spacy. Merci!
Veuillez vous référer à notre guide de migration.