L’IA en langage naturel dans votre prochain projet ? C’est plus facile que vous ne le pensez

Vous voulez que votre prochain projet parle de déchets ? Réécrire dynamiquement les messages de journal ennuyeux en tant que technobabble de science-fiction ? Répondre joyeusement (ou à contrecœur) aux questions ? Faire ce genre de choses et plus encore peut être fait avec le GPT-3 d’OpenAI, un modèle de prédiction en langage naturel avec une API qui est probablement beaucoup plus facile à utiliser que vous ne le pensez.

En fait, si vous avez des compétences de base en codage Python, ou même simplement la capacité de créer un curl déclaration, vous avez à peu près tout ce dont vous avez besoin pour ajouter cette capacité à votre prochain projet. Ce n’est pas gratuit à long terme, bien que l’utilisation initiale soit gratuite lors de l’inscription, mais pour les projets personnels, les coûts seront très faibles.

Concepts de base

OpenAI dispose d’une API qui donne accès à GPT-3, un modèle d’apprentissage automatique capable d’effectuer à peu près n’importe quelle tâche impliquant la compréhension ou la génération d’un langage à consonance naturelle.

OpenAI fournit une excellente documentation ainsi qu’un outil Web à travers lequel on peut expérimenter de manière interactive. Cependant, il faut d’abord créer un compte et recevoir une clé API. Après cela, les portes sont ouvertes.

La création d’un compte donne également un certain nombre de crédits gratuits qui peuvent être utilisés pour expérimenter des idées. Une fois l’essai gratuit épuisé ou expiré, l’utilisation de l’API coûtera de l’argent. Combien? Pas beaucoup, franchement. Tout ce qui est envoyé à (et reçu de) l’API est divisé en jetons, et le prix est de 0,0008 $ à 0,06 $ par mille jetons. Un millier de jetons équivaut à environ 750 mots, donc les petits projets ne sont vraiment pas un gros engagement financier. Mon essai gratuit est venu avec 18 USD de crédits, dont j’ai jusqu’à présent à peine réussi à dépenser 5%.

Voyons de plus près comment cela fonctionne et ce qu’on peut en faire !

Comment ça fonctionne

L’API accepte les demandes de différentes manières, et si vous pouvez créer un curl instruction, utilisez la ligne de commande ou écrivez du code Python (ou node.js) simple, bonne nouvelle ! Vous avez tout ce dont vous avez besoin pour commencer à essayer des idées !

Je décrirai l’utilisation de l’API dans sa manière la plus élémentaire, celle de achèvement. Cela signifie que l’on présente l’API avec un rapidedont il fournira un texte achèvement qui tente de correspondre à l’invite. Tout cela se fait entièrement en texte et formaté en langage naturel.

L’utilisation de l’API de cette manière peut être considérée comme la mise en œuvre d’une sorte de saisie semi-automatique hautement performante. Le moteur lui-même peut être considéré comme une sorte de machine à états incroyablement complexe, alors qu’en même temps, il ne ressemble à rien d’autre.

Quel genre de choses est possible ?

Voici un exemple très simple :

Invite (envoyée à l’API) Achèvement (réponse de l’API)
Écrivez un message d’erreur plein d’esprit pour une condition de batterie faible. « Vous tournez à vide ! »

Le rapide c’est aussi la façon dont on « programme » le modèle, et concevoir une bonne invite est une grande partie de l’obtention de bons résultats.

Étant donné que le modèle est capable de comprendre la structure et l’intention du langage, un rapide peut être formulé comme si l’on donnait un devoir d’écriture à un collégien.

Voici un exemple un peu plus complexe qui fait exactement cela :

Rapide Achèvement
Fournissez des commentaires passionnants pour un événement dans un jeu de table sur les trains.

Événement : un joueur nommé Rob vend une entreprise.
Commentaire:

« Rob a décidé de vendre leur entreprise. C’est un gros coup et aura de grosses répercussions sur le jeu. Qui rachètera l’entreprise ? Que vont-ils en faire ? Seul le temps nous le dira.

Il y a quelques points à souligner dans l’exemple ci-dessus. La première ligne de l’invite décrit ce qui doit être fait. Les deux lignes suivantes (« Événement : » et « Commentaire : ») définissent le modèle sur la manière dont la déclaration doit être complétée. Notez que la ligne « Commentaire : » est laissée vide dans l’invite ; le modèle complétera ce qui a été commencé.

La pratique consistant à créer des invites efficaces s’appelle la conception d’invites, et elle est essentielle pour obtenir toutes sortes de réponses utiles et différentes de l’API. Examinons de plus près comment la conception rapide affecte les résultats.

Obtenir de meilleures réponses

Si l’on a du mal à faire en sorte que le modèle réponde de manière utile, il peut être utile d’inclure plusieurs exemples de ce qui est souhaité dans l’invite elle-même pour donner au modèle une meilleure idée de ce qui est attendu.

La documentation de l’API a une excellente démonstration de cette idée, et je vais brièvement la reformuler ci-dessous :

Invite (envoyée à l’API) Achèvement (réponse de l’API)
Proposez trois noms pour un cheval qui est un super-héros. Superman, Batman, Spiderman

Ce résultat n’est pas vraiment ce que nous voulons. Cependant, l’inclusion de quelques exemples dans l’invite elle-même donne des résultats nettement meilleurs :

Invite (envoyée à l’API) Achèvement (réponse de l’API)
Proposez trois noms pour un animal qui est un super-héros.

Animaux : chat
Noms : Capitaine Sharpclaw, Agent Fluffball, The Incredible Feline
Animaux : Chien
Noms : Ruff le Protecteur, Wonder Canine, Sir Barks-a-Lot
Animaux : Cheval
Des noms:

Mighty Steed, Blaze le cheval merveilleux, Thunderhoof

Faire cela augmente les coûts – rappelez-vous que l’on paie par jeton, à la fois dans l’invite et dans la sortie – mais fournir plusieurs exemples dans l’invite peut être essentiel pour obtenir les meilleurs résultats dans certains cas, car cela donne au modèle un beaucoup plus clair idée de ce qui est demandé et de la manière dont il doit être formaté.

Encore une fois, il est utile de considérer l’invite comme un travail d’écriture pour un collégien ; un collégien qui peut à son tour être considéré comme une machine à états incroyablement complexe et quelque peu variable.

Même invite, différentes réalisations

Pour une invite identique, l’API ne renvoie pas nécessairement les mêmes résultats. Bien que la nature de l’invite et les données sur lesquelles le modèle a été formé jouent un rôle, la diversité des réponses peut également être affectée par la temperature réglage dans une requête.

La température est une valeur comprise entre 0 et 1, et est une expression du degré de déterminisme du modèle lors de la réalisation de prédictions sur les complétions valides à une invite. Une température de 0 signifie que la soumission de la même invite entraînera à chaque fois les mêmes réponses (ou des réponses très similaires). Une température supérieure à zéro donnera des finitions différentes à chaque fois.

En d’autres termes, une température plus basse signifie que le modèle prend moins de risques, ce qui se traduit par des achèvements plus déterministes. Ceci est utile lorsque l’on veut des achèvements qui peuvent être prédits avec précision, tels que des réponses factuelles par nature. D’autre part, l’augmentation de la température – 0,7 est une valeur par défaut typique – donne plus de diversité dans les complétions.

Réglage fin du modèle

Le modèle de langage naturel derrière l’API est pré-formé, mais il est toujours possible de personnaliser le modèle avec un ensemble de données séparé adapté à une application particulière.

Cette fonction, appelée réglage fin, permet de fournir efficacement au modèle beaucoup plus d’exemples qu’il ne serait pratique d’inclure dans chaque invite. En fait, une fois qu’un ensemble de données de réglage fin a été fourni, il n’est plus nécessaire d’inclure des exemples dans l’invite elle-même. Les demandes seront également traitées plus rapidement.

Cela ne sera probablement pas nécessaire, sauf pour les applications étroites, mais si vous trouvez que l’obtention de résultats solides pour votre projet repose sur de grandes invites et que vous souhaitez qu’il soit plus efficace, vous devez rechercher un réglage fin. OpenAI fournit des outils pour rendre ce processus aussi simple que possible, si vous en avez besoin.

À quoi ressemble le code ?

Il existe un outil Web interactif (le terrain de jeu, nécessite un compte) dans lequel on peut utiliser le modèle pour tester des idées sans avoir à coder quelque chose, mais il a également la fonction pratique de générer un extrait de code sur demande, pour faciliter la copie et coller dans des projets.

Voici le tout premier exemple de cet article, formaté comme un simple curl demande:

curl https://api.openai.com/v1/engines/text-davinci-002/completions 
  -H "Content-Type: application/json" 
  -H "Authorization: Bearer $OPENAI_API_KEY" 
  -d '{
  "prompt": "Write a witty error message for a low battery condition.",
  "temperature": 0.7,
  "max_tokens": 256,
  "top_p": 1,
  "frequency_penalty": 0,
  "presence_penalty": 0
}'

Et pareil, cette fois en Python :

import os
import openai

openai.api_key = os.getenv("OPENAI_API_KEY")

response = openai.Completion.create(
engine="text-davinci-002",
prompt="Write a witty error message for a low battery condition.",
temperature=0.7,
max_tokens=256,
top_p=1,
frequency_penalty=0,
presence_penalty=0
)

L’installation du package python installera également un utilitaire qui peut être utilisé directement depuis la ligne de commande pour un maximum de commodité :

$ openai api completions.create -e text-davinci-002 -p "Write a simple poem about daisies." --stream -M 128

(Remarques: --stream affiche les résultats au fur et à mesure qu’ils sont reçus, et -M 128 limite la réponse à un maximum de 128 jetons.)

L’invite « écrivez un poème simple sur les marguerites » a généré pour moi le texte suivant, qui était différent à chaque fois :

The daisy is a beautiful flower 
That grows in the meadow and in the pasture 
It has a yellow center and white petals 
That make it look like the sun 
The daisy is a symbol of innocence 
And purity and is loved by all

Tous les exemples ci-dessus fonctionnent de la même manière : ils déclenchent l’invite vers l’API OpenAI (en utilisant sa clé API pour l’accès, qui, dans les exemples ci-dessus, suppose qu’elle a été définie comme une variable d’environnement nommée OPENAI_API_KEY), et recevez une réponse avec la réponse.

Utilisation responsable

Il convient de souligner l’engagement d’OpenAI envers une utilisation responsable, y compris des conseils sur les meilleures pratiques de sécurité pour les applications. Il y a beaucoup d’informations réfléchies dans ce lien, mais la version courte est de toujours garder à l’esprit qu’il s’agit d’un outil qui est :

  1. Capable de inventer des choses dans un façon très crédibleet
  2. Capable d’interagir avec les gens.

Il n’est pas difficile de voir que la combinaison a un potentiel de danger si elle est utilisée de manière irresponsable. Comme la plupart des outils, il faut faire attention aux abus, mais les outils peuvent aussi être des choses merveilleuses.

Avez-vous déjà des idées ?

L’utilisation de l’API n’est pas gratuite à long terme, mais la création d’un compte vous donnera un ensemble de crédits gratuits qui peuvent être utilisés pour jouer et essayer quelques idées, et utiliser même le moteur le plus cher pour des projets personnels coûte un somme dérisoire. Toutes mes expérimentations enthousiastes ont jusqu’à présent utilisé à peine deux dollars américains de mon essai gratuit.

Besoin d’inspiration ? Nous avons déjà couvert quelques projets qui ont pataugé dans cette direction. Ce jeu de putting robotique utilise l’IA en langage naturel pour générer des propos poubelles, et le podcast Deep Dreams se compose entièrement de contes de fées générés par machine comme aide au sommeil, et a été créé avec l’API OpenAI.

Maintenant que vous savez quels types de choses sont possibles et à quel point elles sont faciles, vous avez peut-être déjà des idées ? Faites-nous en part dans les commentaires !