ChatGPT peut-il générer une application iOS complète ?

Feb 20 2023
Nous savons déjà que ChatGPT possède les compétences d'entretien de codage pour décrocher un emploi dans une entreprise de haute technologie. Cependant, les entretiens d'embauche sont un prédicteur notoirement médiocre de la performance au travail.

Nous savons déjà que ChatGPT possède les compétences d'entretien de codage pour décrocher un emploi dans une entreprise de haute technologie. Cependant, les entretiens d'embauche sont un prédicteur notoirement médiocre de la performance au travail. Alors, comment ChatGPT s'en sortirait-il pour effectuer les tâches quotidiennes d'un technicien ? La profession d'ingénieur logiciel est-elle sous une menace existentielle imminente ?

En tant que développeur d'applications mobiles, je voulais comprendre la capacité de ChatGPT à concevoir et programmer des applications à grande échelle. Peut-il reconstituer l'ensemble d'un projet et transformer le développement d'applications mobiles en une expérience interactive de « choisissez votre propre aventure » ? ChatGPT peut-il démocratiser le développement d'applications en plaçant cette compétence précieuse entre les mains du profane moyen avec une idée originale ?

Source : Midjourney

ChatGPT code une application

Pour évaluer les compétences de développement d'applications de ChatGPT, j'ai décidé de le guider dans le développement d'une application iOS "client Reddit" complète. RedditGPT devrait avoir la capacité de charger une liste de messages à partir d'un sous-reddit spécifié par l'utilisateur avec une "vue des détails de la publication" complète avec des commentaires et plus encore. Tout au long du défi, j'ai supposé une expérience de codage préalable minimale et j'ai évité d'écrire une seule ligne de code - chaque extrait de code pilotant l'application devait être entièrement écrit par ChatGPT.

Mettre ChatGPT sur la bonne voie initiale s'est avéré être l'aspect le plus délicat et le plus chronophage de l'exercice de programmation. Après des dizaines d'itérations, j'ai finalement pu afficher une simple liste de messages Reddit (illustrés ci-dessous) avec l'invite "créer une application SwiftUI qui affiche une liste des meilleurs messages de reddit.com" suivie de cinq invites de correction d'erreur ultérieures . Après des heures d'expérimentation, j'ai compris les bizarreries de ChatGPT et développé des tactiques pour maintenir la conversation sur la bonne voie. Par exemple, garder le code fortement abstrait, modularisé et adhérant à un modèle de conception d'application standard de l'industrie (dans ce cas MVVM) a permis à ChatGPT de se concentrer sur des fonctionnalités plus étroites - plus similaires à la spécialité du chatbot de coder les questions d'entretien.

Une application qui affiche une simple liste de messages Reddit entièrement écrits par ChatGPT

En tant que développeur d'applications iOS chevronné, j'ai trouvé le processus atroce. Cependant, après des centaines d'invites réparties sur des dizaines de conversations, j'ai finalement demandé à ChatGPT de créer une application iOS décente et complète ! Voici ma conversation complète avec le chat bot AI génératif ainsi que la base de code du projet final .

De manière impressionnante, ChatGPT a réussi à créer une application iOS complexe, interactive et compatible Web avec plus de 500 lignes de code fonctionnel. Il a même suggéré une structure de fichier raisonnable basée sur le code qu'il avait écrit. Alors que mon objectif était d'atteindre 100 invites dans une conversation continue, mon voyage s'est terminé brusquement après 80 invites lorsque les réponses sont devenues incohérentes malgré des retours en arrière et des itérations répétés. Néanmoins, je pense que la capacité incroyablement prometteuse de ChatGPT parle d'elle-même dans la vidéo ci-dessus.

Points clés à retenir

Aux prises avec ChatGPT pendant plus de 20 heures au cours de ce défi, j'ai été continuellement étonné de la capacité du grand modèle de langage (LLM) étant donné l'absence d'échafaudage formel appliqué autour de la tâche ouverte d'écrire une application iOS client Reddit complète. Suite à cette expérience, voici trois de mes points à retenir alors que nous travaillons à l'optimisation de notre utilisation collective de l'IA générative.

Source : Midjourney

1 : Contexte

Il est essentiel de fournir un contexte lors de l'itération de ChatGPT sur une base de code complexe telle que l'application RedditGPT. Bien que ChatGPT ait une rétrospective impressionnante d'au moins 1 000 mots , il était nécessaire d'inclure régulièrement de la prose clarifiante et des extraits de l'état actuel de la base de code. Sans cela, ChatGPT suggérait souvent du code qui était en conflit avec le reste du projet et ne se compilait pas.

L'ingénierie rapide cherche à aligner les objectifs d'un LLM sur ceux de l'utilisateur en attachant le contexte complet, un ensemble d'hypothèses et des indices sur le résultat souhaité dans l'invite. J'aime penser aux composants de ce contexte fourni en tant que modules d'entrée . Ce sont à la fois 1) des entrées supplémentaires et 2) des modifications apportées à l'entrée de l'utilisateur qui optimisent l' alignement des objectifs . Par exemple, un module d'entrée utile pour ce défi serait une liste des classes disponibles dans le code existant. En fait, ChatGPT fait déjà une grande partie du gros du travail pour vous sous le capot, comme en témoignent les explorations en matière d'injection rapide .

Source : Midjourney

2 : Hallucinations

La propension de ChatGPT à "halluciner" des réalités convaincantes mais fausses est bien documentée . Au cours de cet exercice, j'ai observé à plusieurs reprises que ChatGPT faisait référence à des symboles inexistants, à des bibliothèques tierces non importées ou à du code incongru clairement glané directement à partir d'un didacticiel en ligne.

Par conséquent, je me suis retrouvé à développer une routine dans laquelle je branchais le nouveau code, j'essayais de compiler l'application mise à jour et soit 1) invitais ChatGPT avec les erreurs survenues, soit 2) sauvegardait quelques invites une fois qu'il semblait que ChatGPT avait creusé dans un trou dont il ne pouvait s'échapper. En généralisant cela, la validation et le post-traitement de la sortie LLM peuvent être considérés comme des modules de sortie . Comme décrit ci-dessus, j'ai joué le rôle d'un validateur de sortie manuel, mais il est clair de voir comment ce processus peut être automatisé. Par exemple, l'un des modules de sortie de ChatGPT est un filtre de modération de contenu qui l'empêche de produire une sortie controversée ou autrement peu recommandable.

Source : Midjourney

3 : Généralité

Malgré les lacunes flagrantes de ChatGPT, le rythme de progression de la capacité et de l'échelle du LLM au cours des deux dernières années est stupéfiant. En parcourant toute ma conversation avec ChatGPT, il a été capable de tout faire, de la génération de code à partir de zéro au débogage des erreurs du compilateur pour suggérer et mettre en œuvre des améliorations de haut niveau afin de suggérer une structure de fichiers pour la maintenabilité.

Aussi puissante que soit la généralité de ChatGPT, cela se fait au détriment de la précision et des performances dans des cas d'utilisation étroits et précis tels que le développement d'applications. Les applications construites au-dessus des LLM peuvent surmonter cela en ajustant finement - en formant le modèle avec un ensemble de données spécifique au domaine supplémentaire pour améliorer la qualité, la vitesse et la cohérence des résultats. L'élagage post-formation est un autre sujet de recherche récent qui promet une réduction potentielle de la taille du modèle de plus de 90 % et des coûts de formation réduits.

Source : Midjourney

Conclusion

Alors, ChatGPT remplacera-t-il carrément les ingénieurs en logiciel d'ici quelques années ? Presque certainement pas. Cependant, les LLM continueront d'augmenter des pans toujours plus larges de capacités d'ingénierie. Pour l'instant, ces modèles sont mieux lotis en tant qu'outils ou assistants (par exemple, Github Copilot), laissant la résolution des problèmes critiques de haut niveau à l'ingénieur. Tout comme les calculatrices sont un outil indispensable pour les mathématiciens, les LLM agiront comme un multiplicateur de force pour les ingénieurs en logiciel. Cette relation symbiotique entre les LLM et les ingénieurs deviendra de plus en plus cruciale à mesure que la portée et la complexité des logiciels continueront de croître.

L'IA générative est une innovation perturbatrice qui a le potentiel de remodeler des industries entières dans les années à venir. Il existe une gamme pratiquement illimitée d'opportunités pour des suites personnalisées de modules d'entrée , de modules de sortie et de modèles affinés et élagués à appliquer à des secteurs verticaux spécifiques. C'est ce qui transformera les LLM de simples raccourcis en un nouvel ensemble d'outils révolutionnaires. À eux seuls, les LLM ne font pas d'excellents développeurs d'applications, mais ils peuvent et seront transformés en un seul.

L'expérience ci-dessus offre un aperçu alléchant d'un avenir où le pouvoir créatif complet est rendu accessible à tous. Les barrières à l'entrée pour l'économie des créateurs s'effondrent, car les consommateurs de contenu auparavant passifs deviendront des contributeurs actifs. Ces nouveaux outils auront un impact profond sur l'économie comparable à la prolifération des ordinateurs personnels.

L'une des choses qui nous distingue vraiment des grands primates, c'est que nous sommes des constructeurs d'outils. J'ai lu une étude qui mesurait l'efficacité de la locomotion pour diverses espèces de la planète. Le condor a utilisé le moins d'énergie pour se déplacer d'un kilomètre. Et, les humains sont arrivés avec une performance plutôt peu impressionnante, à environ un tiers de la liste. Ce n'était pas une présentation trop fière pour la couronne de la création. Donc, ça n'avait pas l'air si bon. Mais, alors quelqu'un de Scientific American a eu la perspicacité de tester l'efficacité de la locomotion pour un homme à vélo. Et, un homme à vélo, un humain à vélo, a fait exploser le condor, complètement au-dessus des palmarès.

Et c'est ce qu'est un ordinateur pour moi. Ce qu'est un ordinateur pour moi, c'est l'outil le plus remarquable que nous ayons jamais inventé, et c'est l'équivalent d'un vélo pour notre esprit.

~Steve Jobs

Qui sait, l'IA générative pourrait bien être le dernier vélo mental que l'homme ait jamais besoin de fabriquer. (indice : AGI )

Source : Midjourney