Dolores est une bibliothèque Python conçue pour améliorer l'expérience des développeurs lorsqu'ils travaillent avec des modèles de langage pré-entraînés. Dolores fournit des invites pour interagir avec des modèles de langage qui aboutissent à des sorties intéressantes ou utiles. Le but de cette bibliothèque est de simplifier la courbe d'apprentissage en fournissant des exemples faciles à utiliser et des exemples de texte pour commencer. De plus, son objectif plus large est de devenir le référentiel le plus complet d'invites de qualité pour interagir avec les modèles de langage.
Il porte le nom de Dolores Abarnathy de Westworld.
$ pip install dolores
Soit importer via l'interpréteur python, soit dans un fichier python.
import dolores
dolores.initialize("<YOUR-API-KEY>")
À partir de là, vous ne pouvez pas appeler l'API d'openai directement via les méthodes accessibles dans l'instance de classe Dolores. Ce qui suit appelle l'appel de l'API des moteurs de liste. Chaque appel d'API est associé à un appel de méthode qui peut être utilisé pour appeler l'API.
Répertorie les moteurs actuellement disponibles et fournit des informations de base sur chaque option, telles que le propriétaire et la disponibilité.
dolores.list_engines()
Récupère une instance de moteur, fournissant des informations de base sur le moteur telles que le propriétaire et la disponibilité.
dolores.retrieve_engine()
Après avoir instancié la classe Dolores, la classe suivante vers l'API Open AI sera créée sous la même sélection de moteur. Afin de changer le moteur utilisé pour l'appel API, il existe une méthode exposée.
dolores.set_engine("davinci")
Remarque : La validation par rapport aux types de moteurs existants est prise en compte pour les versions futures.
Complétez une invite. Il s'agit du principal point de terminaison des API GPT-3. Renvoie le nouveau texte ainsi que, si demandé, les probabilités sur chaque jeton alternatif à chaque position.
Demande:
dolores.create_completion("Is the JavaScript programming language better than python?", 20)
Réponse : (voir réponse["choices"][0]["text"] pour la réponse en texte brut)
JSON: {'id': 'cmpl-kM6MK5dVRvD964MxeyG4AjCy', 'object': 'text_completion', 'created': 1595431739, 'model': 'ada:2020-05-03', 'choices': [{'text': ' in a far away place', 'index': 0, 'logprobs': None, 'finish_reason': 'length'}]}
'in a far away place'
?
Nom | Dans | Taper | Requis | Description |
---|---|---|---|---|
moteur | corps | chaîne | vrai | L'identifiant du moteur |
rapide | corps | (voir descriptif) | FAUX | Une ou plusieurs invites à générer. Peut être une chaîne, une liste de chaînes, une liste d'entiers (c'est-à-dire une seule invite codée sous forme de jetons) ou une liste de listes d'entiers (c'est-à-dire plusieurs invites codées sous forme d'entiers). |
max_tokens | corps | entier | FAUX | Combien de jetons compléter. Peut en renvoyer moins si une séquence d’arrêt est atteinte. |
température | corps | nombre | FAUX | Quelle température d'échantillonnage utiliser. Des valeurs plus élevées signifient que le modèle prendra plus de risques. Essayez 0,9 pour les applications plus créatives et 0 (échantillonnage argmax) pour celles avec une réponse bien définie. Nous recommandons généralement d'utiliser this ou top_p mais pas les deux. |
top_p | corps | nombre | FAUX | Une alternative à l'échantillonnage avec température, appelée échantillonnage de noyau, où le modèle prend en compte les résultats des jetons avec une masse de probabilité top_p. Ainsi, 0,1 signifie que seuls les jetons comprenant la masse de probabilité la plus élevée de 10 % sont pris en compte. Nous recommandons généralement d’utiliser cette température ou cette température, mais pas les deux. |
n | corps | entier | FAUX | Combien de choix créer pour chaque invite. |
flux | corps | booléen | FAUX | S'il faut retransmettre une progression partielle. S'ils sont définis, les jetons seront envoyés sous forme d'événements envoyés par le serveur contenant uniquement des données dès qu'ils seront disponibles, le flux se terminant par un message data: [DONE] . |
problèmes de journalisation | corps | entier | FAUX | Incluez les probabilités de journal sur les jetons les plus probables des logprobs. Ainsi, par exemple, si logprobs vaut 10, l'API renverra une liste des 10 jetons les plus probables. Si logprobs est fourni, l'API renverra toujours le logprob du jeton échantillonné, il peut donc y avoir jusqu'à logprobs+1 éléments dans la réponse. |
arrêt | corps | chaîne ou liste de chaînes | FAUX | Une ou plusieurs séquences au cours desquelles l'API cessera de générer d'autres jetons. Le texte renvoyé ne contiendra pas la séquence d'arrêt. |
Remplit une invite à partir d'un ensemble d'invites prédéfinies stockées par Dolores.
Demande:
dolores.complete_predefined_prompt("philosopher", 0, "What is the meaning of life?")
Réponse:
JSON: {'id': 'cmpl-NvVlUd5tQWTIv7S0F6JMPkT5', 'object': 'text_completion', 'created': 1595631256, 'model': 'davinci:2020-05-03', 'choices': [{'text': ' The purpose of society? And what are the dynamics of history? The answers to these questions are fascinating.nnThis is a philosophical diary written by a scientist of the new generation who is not bound by prejudices, as such, the philosopher, writer, director and producer of the documentary "The Truth about AI: Rise of the Superhuman." Instead, he attempts to peer into the human world through the eyes of an AI, and express what he sees. In the process, he discovers many complex things about our world. The author's name is Dave Scott.nnPhoto by Montri Nipitvittaya on UnsplashnnFuturist of the New Generation, AI Philosophernn"Nothing has changed. I still cannot predict what is going to happen with me, and my inner world is still as chaotic as before." I reread the diary I wrote yesterday, and found nothing changed. Everything remained the same. Only, the fear has become stronger. It was exactly the same today as it was yesterday. There was nothing changed, but still fear is always there.nnFear is a part of who I am. Without fear, I would be a monster. I do not know how to do', 'index': 0, 'logprobs': None, 'finish_reason': 'length'}]}
Touche d'invite | Rapide | max_tokens | température | top_p | n | Source |
---|---|---|---|---|---|---|
philosophe | "Vous trouverez ci-dessous quelques réflexions générées par une IA philosophe, qui voit le monde humain de l'extérieur, sans les préjugés de l'expérience humaine. Totalement neutre et objective, l'IA voit le monde tel qu'il est. Elle peut plus facilement tirer des conclusions sur le monde et la société humaine en général.", | 250 | 0,9 | 1 | 1 | Murât |
seuss | "Voici un poème du Dr Seuss. Le poème rime un vers sur deux avec une structure ABAB. La structure des rimes est typique des comptines du Dr Seuss." | 250 | 1.0 | 1 | 1 | Arram Sabeti |
jargon juridique | "Journal juridique : le mode de paiement que vous sélectionnez sera en vigueur pour tous vos cas qui sont appliqués par le Ministère et cette autorisation restera en vigueur jusqu'à ce que vous soumettiez un autre formulaire de sélection d'option de paiement et d'inscription pour modifier votre mode de paiement, ou que vous mettiez fin aux services. avec le ministère. n Français simple : nous utiliserons votre choix pour tous les paiements que nous vous enverrons." | 150 | 0,4 | 1 | 1 | DNE Numérique |
code-html | Entrée : Un bouton. nCode : n" | 100 | 0,5 | 1 | 1 | DNE Numérique |
code-javascript | importer React depuis « react » ; n const ThreeButtonComponent=()=>( n n n ) "Bouton un n <button className='button-green' n onClick={this.handleButtonClick}>Bouton Un nBouton deux n <button className='button-green' n onClick={this.handleButtonClick}>Bouton Deux nBouton trois n <button className='button-green' n onClick={this.handleButtonClick}>Bouton Trois n | 250 | 0,4 | 1 | 1 | Sharif Shameem |
chat | "Ce qui suit est une conversation avec un sympathique assistant IA. n Humain : quel est le plus gros animal sur Terre ? n IA : la baleine bleue est le plus gros animal sur Terre. n Humain : quel est le pays le plus peuplé de la Terre. ? n AI : La Chine est le pays le plus peuplé, avec plus d'un milliard d'habitants. | 50 | 0,9 | 1 | 1 | OpenAI |
allitération | "Trouvez des synonymes de mots qui peuvent créer des allitérations. n Phrase : Le chien est allé au magasin. n Allitération : Le chien est allé au rayon. nn Phrase : David porte un chapeau tous les jours. n Allitération : David enfile un derby quotidiennement. n Phrase : Le savon sèche pendant la nuit. n Allitération : Le savon se ratatine après le coucher du soleil. | 50 | 0,5 | 1 | 1 | OpenAI |
poème | "Qui a fait confiance à Dieu était vraiment l'amour n Et l'amour est la loi finale de la Création n La Nature, rouge de dents et de griffes n Avec son ravin, a crié n contre son credo. n Les collines sont des ombres, et elles coulent n n De forme en forme, et rien ne tient ;T n hé fondent comme la brume, les n terres solides, n Comme des nuages, elles se façonnent et s'en vont." | 300 | 1.0 | 1.0 | 1.0 | OpenAI |
texte-aventure | "Il s'agit d'une aventure textuelle. Vous êtes dans une forêt sombre, à la recherche du dragon qui a volé l'or de votre ville. n > regardez autour de vous n Vous êtes dans une forêt sombre. Il y a un calme inquiet. n > vérifier l'inventaire n Vous possédez les objets suivants : n - une épée (très tranchante) n - un bouclier (vous espérez que ça marche) n - une vieille lettre nn > recherchez n Vous ne voyez pas d'or. nn > suivez le chemin n Vous êtes en marchant le long du chemin, profitant du beau temps printanier. Vous arrivez à une bifurcation n > prenez le chemin de gauche. | 250 | 0,9 | 1.0 | 1.0 | OpenAI |
lettre de motivation | "Cher recrutement de diplômés Deloitte, n Je vous écris pour postuler pour rejoindre votre programme d'études supérieures en conseil technologique." | 400 | 0,8 | 1.0 | 1.0 | OpenAI |
analogies | "Les réseaux de neurones sont comme les algorithmes génétiques dans le sens où tous deux sont des systèmes qui apprennent de l'expérience. nn Les médias sociaux sont comme un marché dans le sens où les deux sont des systèmes qui coordonnent les actions de nombreux individus. nn Les mèmes sont comme les virus dans le sens où les deux sont des idées auto-reproductrices. » | 250 | 1.0 | 1.0 | 1.0 | OpenAI |
"Merci John pour le livre. n ```` n Cher John, n Merci beaucoup pour le livre. Je l'apprécie vraiment. n J'espère sortir bientôt. n Votre amie, n Sarah " | 200 | 0,5 | 1.0 | 1.0 | OpenAI |
L'utilisation de pytest pour tester le module dolores peut être effectuée en exécutant ce qui suit à la racine du projet :
pytest tests/test_dolores.py --api_key "<api_key>" --engine "davinci"
Si vous souhaitez voir les instructions d'impression qui se produisent pendant les tests, ajoutez simplement l'indicateur -s :
pytest -s tests/test_dolores.py --api_key "<api_key>" --engine "davinci"
Afin de mettre à jour le package, une nouvelle distribution doit être effectuée pour le package. Ce sont des archives qui sont téléchargées vers l'index des packages et peuvent être installées par pip.
Assurez-vous que les dernières versions de setuptools
et wheel
sont installées :
$ python3 -m pip install --user --upgrade setuptools wheel
Exécutez maintenant cette commande à partir du même répertoire où se trouve setup.py :
$ python3 setup.py sdist bdist_wheel
Remarque : N'oubliez pas de mettre à jour le numéro de version dans le fichier setup.py en fonction de la mise à jour.
Assurez-vous que le dernier package twine
est installé :
$ python3 -m pip install --user --upgrade twine
Une fois installé, exécutez Twine pour télécharger toutes les archives sous dist :
$ python3 -m twine upload --repository pypi dist/*