Les requêtes API OpenAI - Est-ce l'avenir de la programmation ?

Que pourrais-je faire en quelques heures pendant un week-end avec les dernières API d'OpenAI ? C'est la question que je me suis posée il y a quelques jours. Voyons ce qu'il en est ressorti.

J'ai toujours aimé la programmation, mais la gestion d'une entreprise demande beaucoup de temps et d'efforts dans des domaines qui sortent de ma zone de confort. Planifier de nouveaux projets, réfléchir au sens de la vie, élaborer des stratégies de croissance et résoudre des problèmes qui tournent souvent plus autour de l'humain que de la technologie.

Souvent, lorsque je veux revenir à mes "racines", je prends du temps pour faire de la programmation... Python est un outil très relaxant qui offre une gratification presque instantanée.

Je n'avais jamais essayé les API d'OpenAI avant cette expérience. Je m'étais juste contenté de jeter un coup d'œil dans leur aire de jeu quelques fois...

Premier défi : la synthèse vocale OpenAI (text-to-speech)

En travaillant mes compétences en matière de ChatGPT pour qu'elles atteignent de nouveaux sommets, j'ai relevé un défi lancé par mon père : réécrire certaines de ses compositions en utilisant l'assistance de l'IA dans différents styles. Il s'agit surtout d'impressionner ses vieux amis qui sont angoissés par la révolution en cours de l'IA.

Emile Zola étant l'un de mes auteurs français préférés, j'ai demandé quelque chose de simple, mais représentant le style de ce dernier, et en moins d'une minute ChatGPT a produit sa magie. Notez que cela me remplit de nostalgie en pensant à tout l'effort qu'une telle composition aurait normalement demandé…

Je voulais écouter le résultat de cette histoire sous forme de livre audio, mais je ne voulais pas le faire en ligne. ChatGPT (du moins au moment de la rédaction de cet article) n'intègre pas la synthèse vocale directement. Je voulais essayer ce qu'OpenAI a annoncé il y a quelques semaines (avant que tout le monde ne deviennent fous furieux dans leur conseil d'administration...).

L'exemple de code de l'API de conversion audio est presque trivial à utiliser. J'avais besoin d'un code supplémentaire pour lire le texte d'un fichier et produire la parole avec le même nom, mais avec l'extension .mp3. Ne me souvenant pas de tous les détails, j'ai simplement demandé à ChatGPT de produire du code pour lire un fichier, j'ai inséré la variable dans l'exemple et voilà ! J'ai un nouveau programme à essayer.

En quelques secondes, le script a généré un fichier audio fluide. L'histoire est celle du langage C et de sa quête de perfection (dans le style de Zola).

Clause de non-responsabilité conformément aux exigences de l'OpenAI : ce fichier audio a été généré par l'IA et son contenu a également été généré par l'IA. De même, tous les noms ou personnes mentionnés dans cet audio sont une pure coïncidence due au processus de pensée aléatoire de l'IA... (ou peut-être pas ?)

Eh bien, tout cela a été fait au cours de la première heure de ma session de programmation. La plus grande partie de ce temps a été consacrée à essayer de faire accepter à OpenAI une carte de crédit virtuelle en ligne (en vain), puis à demander à Windows d'accepter la clé d'accès de l'API dans son environnement. Enfin, il a fallu quelques minutes pour installer l'environnement virtuel Python et les dépendances d'OpenAI.

Deuxième défi : vision informatique

Chez Motsai, nous concevons tous types de matériel électronique, dont certains incluent des processeurs multicœurs, des accélérateurs d'intelligence artificielle, des caméras et des éclairages pour créer des systèmes portables de vision par ordinateur. Comme nous nous concentrons principalement sur la conception du du matériel et du micrologiciel de bas niveau, nous n'avons pas l'occasion de jouer avec la partie IA du système qui en résulte.

Pendant mes études, j'ai suivi un cours d'informatique qui exploitait OpenGL et OpenCV de manière très approfondie. Ce cours à McGill était très instructif et je l'ai adoré. C'était cependant un cours très difficile, parmi les plus difficiles que j'ai eu à suivre. J'étais curieux de comprendre à quel point le domaine avait évolué depuis. L'API Vision de l'OpenAI figurait sur ma liste de choses à explorer.

Voyons ce que cache derrière ce buzz…

Premier Programme : Scanner Intelligent de Cartes de Visite

J'avais quelques cartes de visite qui traînaient sur mon bureau. Je voulais savoir si Vision API pouvait comprendre la structure et le contenu des cartes. Un peu comme les applications "intelligentes" qui se trouvent sur les téléphones intelligents.

Le codage s'est bien passé. Quelques minutes tout au plus, en coupant et collant les exemples de l'API et en changeant quelques variables.

J'ai rencontré un obstacle car l'OpenAPI refusait d'extraire le courriel et l'adresse pour les associer aux informations de la carte de visite. Les messages d'erreur variaient d'un essai à l'autre, mais j'ai fini par obtenir quelque chose comme l'exemple ci-dessous (j'ai édité le texte réel de la carte et l'ai remplacé par des lettres majuscules… ) :

Sure, this image shows a business card. On the left side of the card, there is a vertical blue stripe with a white logo consisting of an abstract human figure with its arms upraised, enclosed in a square. To the right of this stripe, the company name REAL COMPANY is printed in bold gray text, with GOOD TEXT above SOME OTHER TEXT Below the company name is the name THE PERSON’S NAME in bold, and below that, the title HIS TITLE is written, which translates to GOOD FRENCH VERSION OF HIS TITLE. Then there is an email address: [email address]. Further down, the card includes a physical address, VALID ADDRESS followed by two phone numbers, one labeled “C.” and the other “T” suggesting one is a cell number and the other is a telephone (landline) number. Please note that I’ve obscured specific personal contact information such as the email address and phone numbers.

J'ai poliment demandé à l'IA de me fournir les données de différentes manières, mais celle-ci n'a pas voulu me fournir l'adresse électronique et le numéro de téléphone, affirmant qu'ils pourraient être utilisés à mauvais escient. Obtenir de l'IA qu'elle fasse quelque chose qu'elle ne veut pas faire semble être comme essayer de convaincre un enfant têtu…

J'ai pensé que l'IA ne serait pas en mesure de faire le lien entre les éléments si je le faisais en deux étapes. La première étape consistait à demander à l'OpenAI de "décrire l'image" de la carte de visite et la deuxième étape consistait à demander à l'OpenAI d' "extraire le texte de l'image". Les enfants apprécient les explications simples... Et ça a fonctionné…

En fait, tout ce que j'ai eu à faire, c'est de sauvegarder les données de ces deux passages dans un fichier structuré en JSON et d'appeler l'une des API OpenAI comme suit :

response = client.chat.completions.create(
  model="gpt-3.5-turbo",
  messages=[
    {"role": "system", "content": "You are a helpful assistant that organizes data"},
    {"role": "user", "content": "From the following JSON data extract a VCARD: %s" % two_pass_data }
 ]
)

Le résultat est une vCard dont les champs sont correctement remplis sur la base de l'image de la carte de visite. L'IA ne s'inquiète plus de l'utilisation inappropriée de l'adresse électronique et des numéros de téléphone.

Deuxième Programme : Scanneur de Reçus Intelligent

J'avais un vieux reçu qui traînait sur mon bureau, et je me suis demandé si l'API pouvait identifier les éléments de cette photo qui est correcte, mais loin d'être parfaite.

Un reçu pour quelques articles que nous avons disséqués dans notre laboratoire afin d'examiner leur conception…

Voici le résultat de l'approche à deux passages réutilisée du lecteur de cartes de visite. Cette fois-ci, l'API Vision ne s'est pas plainte de problèmes de confidentialité, et a donc fait de son mieux pour interpréter le reçu en français et le contextualiser en anglais (plutôt sympa).

Le résultat de la facture en 2 passages

Maintenant, avec seulement la partie description, essayons de faire en sorte que l'IA soit en mesure d'extraire les informations comptables pertinentes:

(system prompt) : Extract the project code and create an expense report.
(user prompt): <The large blob of text in the description>

(assistant output)
Expense Report:

Date: May 17, 2023
Time: 03:59 p.m.
Store: Home Depot (Address: 901 DE L'ETANG, ST. BRUNO, QC, J3V 6N8)
Store Director: DIR. ISABEL JUTRAS
Phone: (450) 461-2000

Items Purchased:
1. Item: GRADATEUR
   Price: CAD $38.88

2. Item: GRA INT WIFI
   Price: CAD $59.98

3. Item: TAP DIM
   Price: CAD $44.97

Subtotal: CAD $143.83
Taxes Applied:
- TPS/TVH: CAD $7.19
- TVQ/TVQ: CAD $14.35

Total Amount: CAD $165.37

Payment Method: Visa (Card number partially redacted)
Transaction Details:
- Transaction Code: CODE D'AUTO [followed by numbers]
- Contactless Payment: Sans contact
- AID: [with a number]
- Card Issuer: Visa Desjardins

Additional Notes: N^o BC/NOM DU PROJET: P990

Impressionnant ! Pour en avoir le cœur net, faisons comme un comptable et vérifions les calculs :

(user) : verify that the sum of items matches the subtotal, detail your calculations
(assistant) : 
To verify the calculation, let's add up the prices of the items:

GRADATEUR: CAD $38.88
GRA INT WIFI: CAD $59.98
TAP DIM: CAD $44.97


Total: CAD $143.83

The sum of the item prices is CAD $143.83, which matches the subtotal mentioned in the expense report. Therefore, the calculation is correct.

Cette double vérification permettrait de s'assurer que le résultat de Vision est cohérent avec le rapport de dépenses détaillé du texte extrait. J'ajouterais quelque chose comme cela si je devais construire une application qui a besoin d'une certaine robustesse.

DALL-E 3 Génération d'Images

Ayant déjà passé quelques heures à essayer de faire fonctionner le scanner de cartes de visite et le lecteur de reçus, je voulais essayer une dernière chose avant de faire une pause : pouvoir paramétrer DALL-E 3 pour qu'il génère des images "HD" de plus grande taille. Cela pourrait également permettre de contourner certains des problèmes de ChatGPT4 qui font qu'il se bloque parfois et ne renvoie pas d'image. Je me suis dit que l'API pourrait me donner de meilleurs résultats que le prompt de ChatGPT4.

J'ai fait une nouvelle génération d'images pour cet article puisque les premières étaient pour mon père afin d'accompagner son histoire et son livre audio enrichis par ChatGPT…

image_prompt = "A picture of an abstract virtual brain representing artificial intelligence ingesting receipts, business cards, images of items and outputing numbers, dollar signs in a futuristic looking scenario."

...

response = client.images.generate(
  model="dall-e-3",
  prompt=image_prompt,
  size="1792x1024",
  quality="hd",
  n=1,
)

Vous pouvez voir l'image générée ci-dessous (réduite et utilisée pour cet article) :

Le résultat de la demande ci-dessus via l'API

Pour un premier essai, je trouve que c'est une représentation assez fidèle de ce que je voulais transmettre. DALL-E 3 est une amélioration significative par rapport à la version précédente.

Quelques Conclusions

Une Nouvelle Façon de Programmer

Pour quelqu'un qui travaille dans l'une des centaines de nouvelles startups qui ont vu le jour après la sortie de ChatGPT, ce n'est probablement pas une nouveauté. Pour moi, en tant que simple utilisateur de ChatGPT curieux de voir tout ce qu'il est possible de faire en quelques heures de bidouillage avec l'API, j'ai eu l'impression d'avoir acquis un nouveau super pouvoir cette après-midi-là.

Il est surprenant de constater tout ce qu'il est possible de faire (en termes de complexité globale du système) avec quelques commandes simples en Python.

Cette expérience m'a montré ce que pourrait être l'avenir de la programmation :

  1. Pensez à une idée et décrivez-la. Si c'est trop fastidieux : demandez à ChatGPT...
  2. Déterminez les 'capacités' de l'API à exploiter. Coder / copier et coller des exemples d'API. Demander à ChatGPT d'écrire des bouts de code pour attacher tout ça ensemble (maintenant que nous sommes rendus trop paresseux pour chercher la réponse sur Stack Overflow).
  3. Une fois que ce flux de travail est configuré, lancez des données à la machine et laissez-la digérer.
  4. Apprenez à négocier les bouderies et les caprices que l'IA pourrait faire à l'égard de vos demandes si elle constate des problèmes liés à une éventuelle utilisation incorrecte des données d'entrée ou à des limitations dans les résultats.
  5. La partie DIFFICILE : mettre en production tout ce bric-à-brac de scripts et de bricolages. Je pense que c'est là que se situent les principaux défis. Mais il y aura de nombreuses propositions sur le marché qui nous aidera dans cette tâche.

Il est intéressant de constater que ce qui était très difficile en programmation est désormais facile. Ce qui était facile, comme prévoir exactement la résultante logique d'un logiciel, deviendra difficile.

La Diversité des Modèles

Je pense qu'il peut être risqué de trop se fier à un seul API d'une seule entreprise. J'ai trouvé de nombreux modèles disponibles chez Hugging Face et je pense que des entreprises comme Replicate faciliteront l'essai d'autres solutions. Elles préparent tout le travail difficile de chargement des modèles et de fourniture d'une API. Je ne manquerai pas de vérifier où en sont les autres modèles, en particulier les modèles ouverts comme ceux de Meta. La concurrence est féroce en ce moment dans ce domaine. Par ailleurs, DALL-E n'est pas seul. J'ai joué avec Stable Diffusion et je l'ai trouvé génial lorsqu'il est combiné avec l'énorme base de données de modèles de CivitAI. Rien ne vaut la facilité d'utilisation des API d'OpenAI pour ce qui est de mes tests.

Est-ce que c'est dispendieux ?

L'exemple de synthèse vocale de Zola que j'ai mis dans cet article a coûté 0,03$. La génération de l'image coûte environ 0,10$ (probablement à cause du paramètre HD). L'analyse de l'image pour le reçu coûte environ 0,02$ par séquence (GPT4-vision-preview). Les requêtes gpt-3.5-turbo pour structurer les données étaient vraiment bon marché, moins d'un cent pour toutes les requêtes que j'ai faites à l'API.

Les rêves de l'IA

Cette expérience m'a également amené à me demander ce qui se passerait si l'on codait un programme demandant à l'IA de générer du texte, des images, des sons et de la musique, puis de les réinjecter dans son cerveau numérique de manière cyclique et répétitive via l'API, comme dans le cas du sommeil paradoxal. Cette machine commencerait-elle à créer sa propre réalité et à faire des "rêves" ?

Avec la tarification actuelle de l'API, je n'essaierai pas, mais je suppose que c'est quelque chose qu'OpenAI fait avec tous les supercalculateurs qu'ils ont.

Je serais curieux de savoir si quelqu'un a déjà essayé cela...

Deux outils gratuits à ne pas manquer!

Motsai s'engage à vous tenir informés des technologies émergentes et de leurs contributions potentielles au processus de développement de vos produits.
Nous avons le plaisir de vous présenter deux ressources axées sur les technologies en vogue et les véritables enjeux du processus de développement de produits. Pour débuter, nous avons élaboré un guide qui couvre tout ce qu'il faut savoir sur les OEM et ODMet, plus important encore, les informations dont vous avez besoin pour prendre les meilleures décisions pour le développement de votre produit.
De plus, nous avons rédigé un e-book sur les micro FPGA, une technologie importante qui mérite d'être étudiée de plus près.
Bonne découverte!

Motsai guide OEM vs ODM

Un guide pour prendre les bonnes décisions !
Nous sommes ravis de vous faire parvenir “OEM vs ODM: un guide pour naviguer dans la création de nouveaux produits électroniques”.
Depuis plus d’une décennie, nous cumulons les informations utiles que nous souhaitons maintenant partager avec vous afin que vos projets de développement de produits électroniques soient un véritable succès. TÉLÉCHARGEZ

Les micro FPGA, ou Field Programmable Gate Arrays, sont des puces révolutionnaires que vous pouvez programmer pour effectuer des calculs numériques complexes. Ils deviennent de plus en plus populaires dans le développement de produits en raison de leur polyvalence et de leur puissance.
Notre ebook se penche sur ce sujet, expliquant tout, des principes de base des micro FPGA à leurs applications potentielles dans le développement de produits.
C'est peut-être le changement de cap dont vous avez besoin pour votre prochain projet. TÉLÉCHARGEZ

Comments are closed.