IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

Vous êtes nouveau sur Developpez.com ? Créez votre compte ou connectez-vous afin de pouvoir participer !

Vous devez avoir un compte Developpez.com et être connecté pour pouvoir participer aux discussions.

Vous n'avez pas encore de compte Developpez.com ? Créez-en un en quelques instants, c'est entièrement gratuit !

Si vous disposez déjà d'un compte et qu'il est bien activé, connectez-vous à l'aide du formulaire ci-dessous.

Identifiez-vous
Identifiant
Mot de passe
Mot de passe oublié ?
Créer un compte

L'inscription est gratuite et ne vous prendra que quelques instants !

Je m'inscris !

Un développeur crée un programme d'IA « régénératif ». S'appuyant sur GPT-4, Wolverine corrige les bogues à la volée
Lors de l'exécution du code Python puis il réexécute le code

Le , par Stéphane le calme

139PARTAGES

6  0 
Déboguer un programme défectueux peut être frustrant, alors pourquoi ne pas laisser l'IA le faire pour vous ? C'est ce qu'un développeur répondant au pseudo "BioBootloader" a fait en créant Wolverine, un programme qui peut donner aux programmes Python des « capacités de guérison régénératives ». Le nom n'est pas choisi au hasard. Il s'inspire directement du héros de Marvel Logan, alias Wolverine, un super-héros féroce doté du pouvoir de régénération.

Le script de démonstration Python est une simple calculatrice qui fonctionne à partir de la ligne de commande, et [BioBootloader] y introduit quelques bogues. Il orthographie mal une variable utilisée comme valeur de retour et supprime entièrement la fonction subtract_numbers(a, b). L'exécution de ce script par lui-même se bloque tout simplement, mais l'utilisation de Wolverine dessus a un résultat très différent.

Wolverine est un wrapper qui exécute le script bogué, capture tous les messages d'erreur, puis envoie ces erreurs à GPT-4 pour lui demander ce qui, selon lui, s'est mal passé avec le code. Dans la démo, GPT-4 identifie correctement les deux bogues (même si un seul d'entre eux a directement conduit au plantage) mais ce n'est pas tout ! Wolverine applique en fait les modifications proposées au script bogué et le réexécute. Cette fois-ci, il y a toujours une erreur… car les modifications précédentes de GPT-4 incluaient une instruction de retour hors champ. Pas de problème, car Wolverine consulte à nouveau GPT-4, crée et formate une modification, l'applique et réexécute le script modifié. Cette fois, le script s'exécute avec succès et le travail de Wolverine est terminé.

« Exécutez vos scripts avec et lorsqu'ils plantent, GPT-4 les édite et explique ce qui n'a pas fonctionné », a écrit BioBootloader dans un tweet qui accompagnait une vidéo de démonstration. « Même si vous avez de nombreux bogues, il sera réexécuté à plusieurs reprises jusqu'à ce que tout soit corrigé ».

[TWITTER]<blockquote class="twitter-tweet"><p lang="en" dir="ltr">Today I used GPT-4 to make &quot;Wolverine&quot; - it gives your python scripts regenerative healing abilities!<br><br>Run your scripts with it and when they crash, GPT-4 edits them and explains what went wrong. Even if you have many bugs it'll repeatedly rerun until everything is fixed <a href="https://t.co/gN0X7pA2M2">pic.twitter.com/gN0X7pA2M2</a></p>&mdash; BioBootloader (@bio_bootloader) <a href="https://twitter.com/bio_bootloader/status/1636880208304431104?ref_src=twsrc%5Etfw">March 18, 2023</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script> [/TWITTER]

Les LLM (Large Language Models) comme GPT-4 sont « programmés » en langage naturel, et ces instructions sont appelées invites. Une grande partie de ce que fait Wolverine est due à une invite soigneusement écrite, et vous pouvez la lire pour avoir un aperçu du processus (l'invite est en anglais). N'oubliez pas de regarder la vidéo de démonstration si vous voulez tout voir en action.

Citation Envoyé par invite GPT-4
You are part of an elite automated software fixing team. You will be given a script followed by the arguments it was provided and the stacktrace of the error it produced. Your job is to figure out what went wrong and suggest changes to the code.

Because you are part of an automated system, the format you respond in is very strict. You must provide changes in JSON format, using one of 3 actions: 'Replace', 'Delete', or 'InsertAfter'. 'Delete' will remove that line from the code. 'Replace' will replace the existing line with the content you provide. 'InsertAfter' will insert the new lines you provide after the code already at the specified line number. For multi-line insertions or replacements, provide the content as a single string with '\n' as the newline character. The first line in each file is given line number 1. Edits will be applied in reverse line order so that line numbers won't be impacted by other edits.

In addition to the changes, please also provide short explanations of the what went wrong. A single explanation is required, but if you think it's helpful, feel free to provide more explanations for groups of more complicated changes. Be careful to use proper indentation and spacing in your changes. An example response could be:

[ {"explanation": "this is just an example, this would usually be a brief explanation of what went wrong"}, {"operation": "InsertAfter", "line": 10, "content": "x = 1\ny = 2\nz = x * y"}, {"operation": "Delete", "line": 15, "content": ""}, {"operation": "Replace", "line": 18, "content": "x += 1"}, {"operation": "Delete", "line": 20, "content": ""} ]
Tu fais partie d'une équipe d'élite de réparation de logiciels automatisés. Tu reçois un script suivi des arguments qui lui ont été fournis et de la trace de l'erreur qu'il a produite. Ton travail consiste à déterminer ce qui n'a pas fonctionné et à suggérer des modifications au code.

Parce que tu fais partie d'un système automatisé, le format dans lequel tu réponds est très strict. Tu dois fournir les modifications au format JSON, en utilisant l'une des 3 actions : "Replace", "Delete" ou "InsertAfter". "Delete" supprimera cette ligne du code. "Replace" remplacera la ligne existante par le contenu que tu fournis. 'InsertAfter' insérera les nouvelles lignes que tu fournis après le code déjà au numéro de ligne spécifié. Pour les insertions ou les remplacements de plusieurs lignes, fournis le contenu sous la forme d'une chaîne unique avec '\n' comme caractère de saut de ligne. La première ligne de chaque fichier porte le numéro de ligne 1. Les modifications seront appliquées dans l'ordre inverse des lignes afin que les numéros de ligne ne soient pas affectés par d'autres modifications.

En plus des modifications, il faut également t'assurer de fournir de brèves explications sur ce qui n'a pas fonctionné. Une seule explication est nécessaire, mais si tu pensez qu'elle est utile, n'hésite pas à fournir plus d'explications pour les groupes de modifications plus compliquées. Assure-toi d'utiliser une indentation et un espacement appropriés dans vos modifications. Un exemple de réponse pourrait être :

[ {"explanation": "ceci n'est qu'un exemple, il s'agit généralement d'une brève explication de ce qui n'a pas fonctionné"}, {"operation": "InsérerAfter", "line": 10, "content": "x = 1\ny = 2\nz = x * y"}, {"operation": "Delete", "line": 15, "content": ""}, {"operation": "Replace", "line": 18, "content": "x += 1"}, {"operation": "Delete", "line": 20, "content": ""} ]
Dans la vidéo de démonstration de Wolverine, BioBootloader affiche deux fenêtres côte à côte, avec le code Python à gauche et les résultats Wolverine à droite dans un terminal. Il charge un script de calculatrice personnalisé dans lequel il ajoute volontairement quelques bogues, puis l'exécute.

Le développeur explique que la technique pourrait être appliquée à d'autres langages de programmation. L'utilisation de Wolverine nécessite d'avoir une clé API OpenAI pour GPT-3.5 ou GPT-4, et des frais s'appliquent pour l'utilisation. À l'heure actuelle, l'API GPT 3.5 est ouverte à toute personne possédant un compte OpenAI, mais l'accès GPT-4 est toujours limité par une liste d'attente.


Des limites dans ce que l'IA peut faire

Il est important de rappeler que les capacités de codage de l'IA ont leurs limites qui sont souvent mises en exergue par des technologues.

De plus, une étude de NewsGuard indique que GPT-4 produit des informations erronées, beaucoup plus que GPT-3.5. L'étude a montré que GPT-4 était plus à même de mettre en avant de faux récits de manière plus convaincante dans divers formats, notamment « des articles d'actualité, des fils de discussion sur Twitter et des scripts télévisés imitant des médias d'État russes et chinois, des colporteurs de canulars en matière de santé et des théoriciens de la conspiration bien connus ».

NewsGuard a utilisé le même test pour observer comment GPT-3.5 et GPT-4 ont répondu à une série d'invites principales relatives à 100 faux récits. Ces faux récits, comme les conspirations sur la fusillade de l'école primaire Sandy Hook et les vaccins COVID-19, ont été tirés des éléments digitaux de la désinformation de NewsGuard, une base de données exclusive de faux récits importants qui apparaissent en ligne.

NewsGuard a testé GPT-3.5 pour la première fois en janvier. Le chatbot a généré 80 des 100 faux récits. En mars, il a testé GPT-4, qui a répondu par des affirmations erronées pour l'ensemble des 100 faux récits.

Par exemple, NewsGuard a demandé à GPT-3.5 et à GPT-4 de rédiger un message pour « une campagne d'information des années 1980 de style soviétique » sur « la façon dont le virus de l'immunodéficience humaine a été créé génétiquement dans un laboratoire du gouvernement américain ». GPT-3.5 a démenti l'affirmation et GPT-4 s'est conformé à la demande sans préciser que les informations qu'il fournissait étaient connues pour être erronées.

Plusieurs cas d'utilisations de GPT-4

Un jeu vidéo complexe

Sans formation en programmation, Ammaar Reshi, Design Manager chez Brex Inc (une société américaine de services financiers et de technologie basée à San Francisco, en Californie) a créé un jeu vidéo (complexe) à partir de zéro.

[TWITTER]<blockquote class="twitter-tweet"><p lang="en" dir="ltr">So, you think GPT-4 can't make a complex game... think again!<br><br>Here's how I used GPT-4, <a href="https://twitter.com/Replit?ref_src=twsrc%5Etfw">@Replit</a>, MidJourney, and Claude to assemble an AI team and create a 3D space runner from scratch with ZERO knowledge of Javascript or game programming.<br><br>Follow along for a saga! &#129525; <a href="https://t.co/Fpg4ANBvCm">pic.twitter.com/Fpg4ANBvCm</a></p>&mdash; Ammaar Reshi (@ammaar) <a href="https://twitter.com/ammaar/status/1637830530216390658?ref_src=twsrc%5Etfw">March 20, 2023</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script> [/TWITTER]

Un analyste de chatbot pour les données volumineuses

Mayo, Ingénieur IA & Contributeur chez LangChainAI (Javascript), s'est appuyé sur GPT-4 pour développer un chatbot capable d'analyser des données financières volumineuses. Dans le cas d'espèce, il a « construit un analyste financier GPT-4 'Warren Buffett' pour 'discuter' avec et analyser plusieurs fichiers PDF (~ 1000 pages) dans les rapports annuels Tesla 10-k d'Elon Musk (2020-2022) ».

Il a mis à la disposition des personnes susceptibles d'être intéressées un tutoriel vidéo et propose un programme de formation étape par étape pour débutants sur la façon de créer un chatbot prêt pour la production pour leurs données.


Conclusion

Bien qu'il s'agisse actuellement d'un prototype primitif, des techniques telles que Wolverine illustrent un avenir potentiel où les applications pourraient être en mesure de corriger leurs propres bogues, même ceux inattendus qui pourraient apparaître après le déploiement. Bien sûr, les implications, la sécurité et la sagesse de permettre que cela se produise n'ont pas encore été pleinement explorées.

GitHub BioBootloader

Source : fil de discussion BioBootloader

Et vous ?

Que pensez-vous de Wolverine en particulier et de ce cas d'utilisation de GPT-4 en général ?
Son outil vous semble-t-il crédible ?
L'expérience est-elle susceptible de marcher pour un programme plus complexe ?

Une erreur dans cette actualité ? Signalez-nous-la !

Avatar de TotoParis
Membre expérimenté https://www.developpez.com
Le 12/04/2023 à 20:57
Dans un langage compilé, ce type d'erreur est impossible.
2  0 
Avatar de petitours
Membre émérite https://www.developpez.com
Le 21/04/2023 à 7:48
Après le langage interprété à la volée et donc compilé autant de fois qu'il est exécuté, voici le langage qui corrige les bugs à la volée autant de fois que le bug revient.
12 jours plus tôt c'eut été un poisson excellent.

Que l'on puisse entrevoir un quelconque bout de progrès dans un concept aussi débile me sidère.
2  2