OpenAI : que peut-on faire avec l’API ?

OpenAI

L’API d’OpenAI est ouverte depuis peu sans liste d’attente. À quelles fonctionnalités donne-t-elle accès et comment les mettre en œuvre ?

Moteurs, modèles, points de terminaison… Pas si facile de s’y retrouver dans l’offre commerciale d’OpenAI, tant elle a pris du volume depuis son lancement à la mi-2020.

Il n’y a pas si longtemps (novembre 2021) que l’API est accessible sans liste d’attente. Les modèles sous-jacents sont catégorisés en trois moteurs :

– GPT-3 (traitement et production de langage naturel)
– Codex (analyse et production de code informatique)
– Content filter (détermination du niveau de sensibilité d’un texte)

Dans la catégorie GPT-3 se trouvent quatre modèles : Ada, Babbage, Curie et Davinci. Leurs anciennes versions – réunies sous la bannière Instruct – restent accessible. Tous acceptent du texte en entrée et produisent du texte en sortie.

À mesure qu’on progresse dans l’ordre alphabétique, les modèles deviennent plus performants : ils ont besoin de moins d’instructions pour en faire autant que ceux qui les précède. Mais ils coûtent aussi plus cher à utiliser. Et peuvent induire des traitements plus longs.

De manière générale, OpenAI conseille d’expérimenter avec Davinci et de redescendre au fur et à mesure vers le bon compromis. En gardant à l’esprit ces correspondances tâches-modèle :

– Davinci : résumé thématique, création de contenu, détection de relation cause à effet
– Curie : traduction, analyse de sentiment, résumé et Q&A génériques
– Babbage : classification simple, recherche sémantique
– Ada : détection de mots-clés, correction d’adresses…

Un outil permet de comparer les modèles GPT-3 côte à côte. Et de télécharger les résultats (.xls).

prix GPT-3

Codex préfère Python

Dans la famille Codex, deux modèles également 100 % texte, descendants des premiers GPT-3 :

– Davinci
Acceptant jusqu’à 4096 tokens par requête, il est idéal pour la traduction de langage naturel en code.

– Cushman
Avec jusqu’à 2048 tokens/requête, il conviendra mieux aux applications temps réel.

Fonctionnent sur une dizaine de langages, ils « préfèrent » tous deux Python.

Que sont, au juste, les tokens ? C’est l’unité d’inférence de base d’OpenAI. Dans les grandes lignes, le texte, en entrée comme en sortie, est divisé de sorte que 4 caractères = 1 token. C’est aussi l’unité de facturation.

Le troisième moteur (Content filter) se compose pour le moment d’un seul modèle. On lui fournit du contenu qu’il classe comme sûr, sensible ou inapproprié. Plusieurs options permettent d’ajuster sa rigueur, dont la définition d’un seuil de certitude plancher.

Content filter a du mal avec certains styles de texte (fiction, code, poésie…) et certains formats (sauts de lignes fréquents, répétitions de mots…). Par ailleurs, comme pour tous les autres modèles, sa base de connaissances s’arrête à 2019. Un mécanisme d’entraînement continu est en travaux chez OpenAI.

Une IA de niveau collège ?

Pour utiliser Content filter, il faut passer par le point de terminaison de référence : /completions. Il en existe trois autres, destinés respectivement à la classification, à la recherche sémantique et au Q&A.

Deux canaux officiels pour joindre ces endpoints HTTP : des bibliothèques Python et Node.js. La communauté en a développé d’autres (C#/.NET, Crystal, Dart, Go, Java, PHP, Ruby, Unity, Unreal Engine).

On fournit aux modèles des instructions et si possible du contexte. Tout en paramétrant éventuellement certains éléments. Par exemple, la « température » : plus elle proche de 0, plus le modèle est déterministe ; plus elle est proche de 1, plus il prend des risques.

Par défaut, avec /completions, l’API est stochastique (elle produit des résultats différents à chaque appel). Dans l’idée, il faut lui parler comme on parlerait à un collégien. À la clé, de nombreux usages potentiels : classification, production de discours, transformation (résumé, traduction, reformulation de concepts…), réponses factuelles… et sollicitation de Codex.

Ce dernier peut aussi bien transformer des consignes en code qu’ajouter des commentaires, compléter une ligne ou suggérer un élément utile (bibliothèque, appel API…). OpenAI donne quelques conseils parmi lesquels :

– Préciser le langage utilisé et sa version
– Styliser les commentaires en fonction du langage
Avec Python, par exemple, Codex gère mieux la méthode non conventionnelle des triples guillemets que celle du dièse.
– Préférer le flux au batch pour améliorer la latence

Un goût d’autoML

En bêta, /classifications s’apparente à un autoML. On lui fournit des exemples étiquetés, soit à la volée (maximum 200), soit au travers de fichiers préchargés (maximum 150 Mo par fichier et 1 Go au total). Sans nécessiter d’entraînement ad hoc, il retourne les exemples les plus pertinents pour une requête donnée – après filtrage préalable des exemples par scoring sémantique.

classification

On retrouve ce mécanisme de scoring sémantique a priori sur le point de terminaison /search. Avec les mêmes possibilités – et les mêmes limites de taille de fichiers – pour fournir des exemples. Et le même format en entrée : du JSON en lignes. Le résultat : un score de 0 à 300. Plus il est élevé, plus un texte et une requête se correspondent sémantiquement.

search

Le point de terminaison /answers a un fonctionnement comparable. Sauf qu’il évalue la pertinence par rapport à des questions.

QA OpenAI

OpenAI : des modèles aussi à entraîner

Plutôt que de leur fournir à chaque fois des exemples, on peut entraîner les modèles d’OpenAI avec des jeux de données personnalisés. La facturation est aussi fonction des tokens utilisés (nombre de tokens dans les fichiers d’entraînement x nombre de cycles).

On est là aussi sur du JSON en lignes, avec des paires requête-réponse. OpenAI propose un outil de ligne de commande pour aider à préparer les données à partir d’autres formats (CSV, TSV, XLSX, JSON).

De base, on entraîne Curie. Mais les trois autres représentants de la famille GPT-3 sont compatibles. Une fois un modèle entraîné, on peut le communiquer en paramètre à /completions. En fonction des tâches, l’entraînement nécessitera plus ou moins d’exemples : au moins 100 par catégorie pour la classification, au moins 500 pour la production de texte conditionnelle, plusieurs milliers pour de la production non contrainte, etc.

prix entraînement OpenAI

Ada, Babbage, Curie et Davinci permettent par ailleurs d’exploiter des schémas de données vectoriels. La tarification est spécifique.

prix embeddings

OpenAI se réserve le droit d’exploiter les données fournies à ses modèles pour améliorer ces derniers. Les nouveaux utilisateurs ont un plafond initial de dépenses. Il évolue à mesure qu’on développe des usages. Lorsqu’on dépasse 5 personnes utilisant l’API, on passe en live. Une transition pas automatique, qui suppose des vérifications de type évaluation des risques.

Illustration principale © Jakub Jirsk – Fotolia