Écrire des bibliothèques pour prendre en charge nos microcontrôleurs préférés est une tâche ardue, mais et si ChatGPT pouvait nous aider ? Limor « Ladyada » Fried d’Adafruit a chargé ChatGPT d’écrire des pilotes Arduino dans son propre style, créant ainsi un robot « mini-Limor » pour gérer cette tâche.
Ladyada passe beaucoup de temps à écrire des bibliothèques Arduino et a produit des centaines de bibliothèques pour prendre en charge la gamme impressionnante de cartes Adafruit (dont beaucoup figurent dans notre meilleure page Grove et Stemma QT). GPT-4 a déjà été formé à l’aide de nombreux pilotes d’Adafruit trouvés sur GitHub. Ces pilotes sont écrits dans le « style Ladyada » (Adafruit_BusIO), ce qui signifie qu’il peut créer des pilotes en utilisant ce modèle.
Le flux de travail implique de nombreuses références de fiches techniques, de tables binaires et d’encarts de bits, qui doivent tous être compris et convertis en code C ou Python. Cette tâche n’est pas facile (faites-nous confiance, nous l’avons essayé nous-mêmes). Il n’existe pas de format standard pour obtenir ces données. Les fiches techniques peuvent être très différentes.
Pour « mini-Limor », le workflow de Fried consiste à demander à ChatGPT de « [write] une bibliothèque arduino dans le même style que ladyada / limor fried ». Dans l’exemple, Fried charge ChatGPT de créer un pilote pour le capteur de lumière ambiante et infrarouge VCNL4020, un capteur basé sur I2C. Le flux de travail utilise un plugin d’analyse PDF gratuit (AI PDF) qui lit une feuille de données, extrait les noms de registre, les valeurs, crée des tableaux d’énumération et du texte pour les commentaires.
Fried demande ensuite à ChatGPT de créer un fichier squelette pour le VCNL4020 qu’il a partiellement réussi à créer. Fried lui demande ensuite de créer les registres, en utilisant les données directement de la fiche technique. Après cela, Fried passe à la création de la bibliothèque.
Est-ce un processus plus rapide ? Et bien non. Selon le billet de blog d’Adafruit, « Le temps nécessaire à ChatGPT pour écrire un pilote est à peu près le même que celui qu’il faudrait à Ladyada » et le pilote résultant nécessite une interaction humaine pour vérifier qu’il est valide, comme le déclare Fried dans la vidéo : ChatGPT peut parfois « halluciner » et introduire des erreurs. Cela étant dit, cela libère Fried pour entreprendre d’autres tâches.
Le travail produit est basé sur les propres travaux antérieurs d’Adafruit, mais Adafruit a confirmé que lorsqu’un grand modèle linguistique (LLM) est utilisé, il sera divulgué et lié.
Les bons pilotes constituent la base sur laquelle les apprenants peuvent se faire les dents sans devenir trop techniques, notamment avec I2C, SPI et bien d’autres protocoles. Si le processus peut être affiné et automatisé, il pourrait alors aider des développeurs tels qu’Adafruit à créer des pilotes et des bibliothèques pour de nombreux langages de programmation populaires. Le processus pourrait être utilisé pour prendre en charge des logiciels tiers avec la gamme de cartes Arduino Uno R4. Fried mentionne également que ce processus peut également être utilisé avec CircuitPython, c’est-à-dire la gamme de cartes Raspberry Pi Pico.
Adafruit propose un article de blog et des liens vers l’ensemble du processus, y compris les journaux ChatGPT pour référence.