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 !

L'erreur coûteuse de ChatGPT : une startup raconte comment une ligne de code généré par l'IA a entraîné 10 000 dollars de perte.
Malgré les avancées de l'IA, la vigilance humaine reste indispensable

Le , par Stéphane le calme

17PARTAGES

4  0 
Dans le monde effervescent de la technologie et de l’intelligence artificielle, les startups s’appuient de plus en plus sur des outils automatisés pour accélérer leur développement. Cependant, cette dépendance peut parfois se retourner contre elles, comme l’a appris à ses dépens une startup qui a vu une simple erreur de ChatGPT lui coûter plus de 10 000 dollars. La startup en question avait activé la monétisation de son service, mais a rapidement été confrontée à un problème majeur : les utilisateurs ne pouvaient pas s’abonner, entraînant de nombreuses plaintes et la perte potentielle de clients. L’erreur a été retracée jusqu’à une seule ligne de code qui provoquait des collisions d’ID uniques pendant le processus d’abonnement.

Une startup raconte ses débuts et les défis qu'elle a dû relever lorsqu'elle s'est tournée pour la première fois vers la monétisation. Malgré ses faibles attentes, l'entreprise a été agréablement surprise d'avoir son premier client dans l'heure qui a suivi son lancement. Cependant, elle s'est rapidement trouvée confrontée à un problème majeur : elle a commencé à recevoir de nombreuses plaintes d'utilisateurs qui ne parvenaient pas à s'abonner. Malgré leurs efforts, ils n'ont pas réussi à reproduire le problème, qui semblait se produire principalement en dehors de leurs heures de travail.

Le problème, qualifié « d'hallucination à 10 000 dollars », a finalement été retracé jusqu'à une seule ligne de code qui provoquait des collisions d'identifiants uniques pendant le processus d'abonnement. Ce problème était caché en raison de la configuration de leur backend et a pris de l'ampleur lorsqu'ils ont cessé d'effectuer des modifications la nuit. Le problème a finalement été résolu et, malgré les difficultés et les ventes perdues, l'équipe considère cette expérience comme une leçon précieuse tirée de son parcours de startup.

Ce qui suit est un extrait de leur billet.


Nous avons commencé à utiliser la monétisation pour notre startup en mai dernier. Nous avions peu d'attentes, mais nous avons été agréablement surpris lorsque nous avons eu notre premier client dans l'heure qui a suivi le lancement. Ce fut un moment magique. Nous les avons remerciés, nous avons porté un toast et, comme nous venions de passer deux nuits blanches à tout préparer, nous nous sommes rapidement endormis.

Nous nous sommes réveillés ce matin-là avec plus de 40 notifications gmail de plaintes d'utilisateurs. Tout semblait s'être enflammé pendant la nuit. Aucun de ces utilisateurs ne pouvait s'abonner. Nous ne savions pas pourquoi.

Notre chemin vers la monétisation

Pour la petite histoire, le mois de mai a marqué le début du lot S23 YC et nous n'étions pas sûrs de la direction optimale à prendre après le lancement. Dalton, notre partenaire du groupe JCT, nous a conseillé d'utiliser les abonnés payants comme boussole et nous a dit de doubler le prix mensuel que nous avions déjà en tête. Finalement (et à contrecœur), nous sommes arrivés à 40 dollars par mois. Après la réunion, nous nous sommes immédiatement mis au travail pour mettre en place la monétisation. Notre projet était à l'origine une pile complète de NextJS mais nous voulions d'abord tout migrer vers Python/FastAPI. Nous l'avons fait (avec l'aide de ChatGPT), nous avons intégré Stripe... puis nous avons enchaîné avec cinq jours de sommeil, le moins que nous ayons eu de tout le mois. (Oui, cinq jours, c'est long pour trouver ce bug).

Pendant ces cinq jours, nous avons commencé à redouter de nous réveiller, sachant que nous allions être accueillis par 30/40/50 courriels de plaintes. Je me demande toujours combien de clients nous avons perdus à cause de cela. 50 courriels par jour x 5 jours x 40 par mois = 10 000 ventes perdues par mois - et ce, uniquement de la part de personnes qui se sentaient suffisamment concernées pour se plaindre. Nous répondions à ces courriels tous les jours comme des horloges. Nous ouvrions un nouveau compte, nous vérifiions que les abonnements ne posaient aucun problème, puis nous continuions à travailler dans la confusion. Rien de ce que nous faisions ne permettait de reproduire le problème et, plus étrange encore, nous ne recevions pratiquement aucune plainte pendant nos heures de travail.

L'hallucination à 10 000 dollars

Le voyage entre l'identification du problème et sa résolution effective a semblé prendre des mois. Cinq jours plus tard, d'innombrables courriels, des centaines de journaux sentry, de longs messages discord avec les ingénieurs de Stripe, et des heures et des heures à regarder cinq fichiers clés plus tard, nous l'avons trouvé 🎉. Essayez de voir si vous pouvez le repérer vous-même avant de lire la suite.


Si vous ne l'avez pas encore trouvé, le coupable était une simple ligne d'apparence innocente. Une ligne qui a été le fléau de notre existence pendant cette semaine. Une ligne qui nous a littéralement coûté 10 000 dollars. La redoutable ligne 56.


Dans le cadre de la migration de notre backend, nous traduisions les modèles de base de données de Prisma/Typescript en Python/SQLAlchemy. C'était vraiment fastidieux. Nous avons trouvé que ChatGPT faisait un travail assez exceptionnel pour cette traduction et nous l'avons donc utilisé pour la quasi-totalité de la migration. Nous avons copié-collé le code qu'il générait, nous avons vu que tout fonctionnait bien, nous l'avons essayé en production, nous avons vu que cela fonctionnait aussi, et nous avons poursuivi notre chemin.

Cependant, à ce stade, nous utilisions toujours notre API Next pour toutes les insertions dans la base de données. Python ne faisait que lire dans la base de données. La première fois que nous avons commencé à insérer des enregistrements dans la base de données en Python, c'est lorsque nous avons mis en place les abonnements. Bien que nous ayons créé à la main de nouveaux modèles SQLAlchemy pendant le processus, nous avons fini par copier le même format que ChatGPT a écrit pour nos modèles existants. Ce que nous n'avons pas remarqué, c'est que nous copiions le même problème avec la façon dont nous générions les identifiants dans tous nos modèles.

Correction de bogues

Le problème avec la ligne 56 était que nous ne faisions que passer une chaîne d'ID codée en dur au lieu d'une fonction ou d'une lambda pour générer des UUID pour nos enregistrements. Cela signifiait que pour toute instance donnée de notre backend, une fois qu'un nouvel utilisateur s'était abonné et avait utilisé cet identifiant, aucun autre utilisateur ne pouvait effectuer l'abonnement à nouveau car il en résultait une collision d'identifiant unique. Ce problème est devenu très bien caché en raison de la configuration de notre backend. Nous avions huit tâches ECS sur AWS, toutes exécutant cinq instances de notre backend (c'est exagéré, oui nous savons, mais pour être juste, nous avions des crédits AWS). Cela signifiait que chaque utilisateur disposait d'un pool de potentiellement 40 identifiants uniques sur lesquels il pouvait tomber.

Pendant la journée de travail, tout allait bien. Nous nous engagions probablement 10 à 20 fois par jour (directement sur le serveur principal bien sûr), ce qui entraînait de nouveaux déploiements de backend, nous donnant ainsi 40 nouveaux identifiants que les clients pouvaient potentiellement utiliser. Cependant, la nuit, lorsque nous avons finalement arrêté de faire des commits (quelle paresse de notre part, n'est-ce pas ?), l'ID unique de chaque serveur était capturé et provoquait des collisions d'ID dans tous les nouveaux abonnements. Les utilisateurs commençaient avec 40 serveurs possibles qui leur permettaient de s'abonner, et finissaient rapidement avec presque zéro au fur et à mesure que la nuit avançait. Résoudre enfin ce problème a été comme un poids enlevé de nos épaules. Adam a rapidement mis en place le correctif après avoir découvert ce problème et, pour la première fois de la semaine, nous avons pu nous reposer sur nos lauriers (enfin, pas vraiment, car nous avions encore dix autres incendies, mais ces histoires feront l'objet d'un autre article).

Malgré les avancées de l'IA, la vigilance humaine reste indispensable

L’erreur de ChatGPT qui a coûté 10 000 dollars à cette startup est un rappel que, malgré les avancées de l’IA, la vigilance humaine reste indispensable. Les outils d’IA sont puissants, mais ils ne remplacent pas le jugement critique et l’expertise des développeurs. En fin de compte, c’est la responsabilité des équipes humaines de s’assurer que la technologie qu’elles utilisent est sûre et fiable.

D'ailleurs, l'erreur ne saurait être imputable entièrement à ChatGPT : les développeurs auraient du prendre la peine d'analyser le code au lieu de se limiter à quelques tests avant la copie. Ils semblent le reconnaitre lorsqu'ils déclarent :

« Je voudrais commencer par dire que les pratiques en question sont très mauvaises et embarrassantes (et nous avons depuis ajouté des tests unitaires et d'intégration robustes ainsi que des alertes et des enregistrements), qu'elles auraient pu et dû être évitées, qu'il s'agissait d'erreurs humaines au-delà de tout, et qu'elles sont très évidentes avec le recul.

« Cela s'est passé à une autre époque, avec d'importantes contraintes de temps, aux tout premiers stades (premières semaines) de la création d'une entreprise. Je partage surtout cette histoire comme une anecdote amusante avec des circonstances uniques entourant la reproductibilité des bogues en prod (encore une fois à cause de notre propre stupidité) ».

Quoi qu'il en soit, tout est bien qui finit bien : « Rétrospectivement, aussi pénibles qu'aient été ces cinq jours, c'est l'un de ces moments de la vie d'une startup que nous n'oublierons jamais. Comme toutes les startups, nous avons fait une tonne d'erreurs tout au long de notre parcours, celle-ci étant peut-être la pire. J'évoquerai peut-être les autres plus tard. Nous sommes simplement heureux de pouvoir regarder ces jours-là en arrière et d'en rire. Oui, nous aurions dû faire plus de tests. Oui, nous n'aurions pas dû copier-coller du code. Oui, nous n'aurions pas dû passer directement à l'application principale. Quoi qu'il en soit, je ne regrette pas cette expérience ».

Source : rapport de la startup

Et vous ?

Quelle est votre opinion sur la fiabilité de l’intelligence artificielle dans les processus critiques d’entreprise ?
Avez-vous des expériences personnelles où l’IA a joué un rôle crucial, positivement ou négativement, dans votre travail ?
Comment pensez-vous que les entreprises peuvent équilibrer l’innovation technologique avec les risques potentiels associés à l’automatisation ?
Selon vous, quelles mesures de sécurité devraient être mises en place lors de l’intégration de solutions d’IA dans les systèmes d’entreprise ?
Pensez-vous que l’erreur mentionnée est un cas isolé ou révélateur d’un problème plus large dans l’industrie de l’IA ?
Quelles stratégies votre entreprise a-t-elle adoptées pour prévenir les erreurs coûteuses liées à l’IA ?
En tant que développeur ou utilisateur d’IA, comment assurez-vous la qualité et la précision du code généré par l’IA ?
Quel rôle les tests et la validation jouent-ils dans votre utilisation de l’IA, et comment ces processus pourraient-ils être améliorés ?

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

Avatar de Seb33300
Membre émérite https://www.developpez.com
Le 10/06/2024 à 11:35
L’erreur de ChatGPT qui a coûté 10 000 dollars
ChatGPT c'est un outils, le responsable ça reste le développeur...

Sinon, la prochaine fois que je déploie un bug je dirais que c'est la faute de mon clavier...
6  0 
Avatar de totozor
Membre expert https://www.developpez.com
Le 11/07/2024 à 7:13
Les travailleurs africains à l'origine de la révolution de l'IA : une réalité de conditions éprouvantes et [...] pour environ un dollar de l'heure
Pendant que les société d'IA lèvent des millions de dollar d'investissement.
4  0 
Avatar de Gluups
Membre émérite https://www.developpez.com
Le 11/07/2024 à 11:20
Citation Envoyé par totozor Voir le message
Les travailleurs africains à l'origine de la révolution de l'IA : une réalité de conditions éprouvantes et [...] pour environ un dollar de l'heure
Pendant que les société d'IA lèvent des millions de dollar d'investissement.
Si je lis bien, l'émergence de l'IA est basée sur l'esclavage.
3  0 
Avatar de topic
Nouveau membre du Club https://www.developpez.com
Le 10/06/2024 à 14:34
Citation Envoyé par Fagus Voir le message
c'est dommage qu'ils n'expliquent pas mieux leur code ou c'est moi qui n'ai pas compris. Je ne connais pas SQL alchemy.

Code : Sélectionner tout
str(uuid.uuid4())
c'est sensé être relativement unique, sauf s'il ne créent qu'une seule instance de la classe subscription par serveur ce qu'ils ont l'air de dire. En ce cas c'est une erreur de logique de créer l'identifiant unique là plutôt que dans un objet par utilisateur, mais bon, même sans chatgpt ça arrive de faire des erreurs de logique surtout quand on ne dort pas.

Ce qui est plus étrange, c'est d'écrire quelque chose dans une base sans lever quelque part une erreur si la base ne crée pas les entrées...

De ce que je comprends de la doc de Django https://docs.djangoproject.com/en/5....ields/#default c'est que default prend une valeur ou un callable

En faisant
Code : Sélectionner tout
default=str(uuid.uuid4())
str(uuid.uuid4()) génère un uuid4 qui est casté en string, ça devient donc une valeur qui ne changera plus.
Pour ne pas avoir le problème ils auraient dû comme ils le disent faire une lamba ou une fonction

Code : Sélectionner tout
1
2
3
4
def generate_uuid4():
    return str(uuid.uuid4())

default=generate_uuid4
2  0 
Avatar de kain_tn
Expert éminent https://www.developpez.com
Le 27/06/2024 à 17:38
Citation Envoyé par Stéphane le calme Voir le message
C’est un positionnement qui rejoint celui d’IBM qui suggère de recruter sur la base des compétences plutôt qu’en se fondant sur les diplômes universitaires. Même Tim Cook est d’avis « qu'un diplôme universitaire de quatre ans n’est pas nécessaire pour maîtriser le codage informatique. » Après, la plus grosse difficulté est peut-être de répondre à la question : qu’est-ce qu’être compétent ?
Comme si Tim Cook y connaissait quoi que ce soit à l'informatique. Le gars est compétent pour faire faire des téléphones à des personnes sous-payées dans des pays du Tiers Monde, c'est tout.

Pour ce qui est de recruter sur les compétences, c'est bien entendu une bonne idée. Par contre un bootcamp ne remplace pas des études ou une longue expérience. C'est ce qui fait qu'un développeur sera capable de faire son travail au lieu de réinventer la roue ou de choisir des solutions peu efficaces. Il n'y a qu'à regarder le développement web et tous ces sites et plateformes pas sécurisées, lentes, boguées pour se rendre compte qu'il y a bien un problème de compétences, et qu'avoir deux jours de javascript/PHP dans sa vie ne suffit pas pour faire un développeur.

Là, j'ai plutôt l'impression qu'ils cherchent à former des personnes qui ne seront capables de travailler qu'avec leurs outils à base d'IA.

Toute cette agitation dans les médias autour des IA devient vraiment ridicule: on a bien compris que IA = pognon pour les gigantesques entreprises. Pas besoin de nous le rappeler tous les jours.

Citation Envoyé par Stéphane le calme Voir le message
Alternatives et solutions : quelles autres méthodes d’évaluation pourraient être mises en place pour garantir l’intégrité académique tout en tirant parti des avantages de l’IA ?
Quels avantages et pour qui? On s'en fout d'avantager les GAFAM.

Pour le reste, il suffit de mettre les étudiants dans des conditions où ils ne peuvent pas accéder aux services d'IA, et ils n'auront pas le choix. Comment faisait-on passer des examens avant l'arrivée d'Internet et des smartphones??

Citation Envoyé par Stéphane le calme Voir le message
« Les diplômes universitaires perdront en importance au fur et à mesure de la montée en puissance de l'IA », d'après le vice-président de LinkedIn
Ah ben c'est sûr que le gars ne va pas dire autre chose: le groupe auquel il appartient (Microsoft, une GAFAM), investit massivement dans OpenIA, et tout le bordel. S'il tient à son poste de directeur, il a tout intérêt à continuer de raconter ce genre de conneries.

Sans compter qu'on vit en Europe: oui, vous pourrez trouver un travail en société de service avec peu de diplômes, mais par contre les RH vous le rappelleront chaque année quand vous demanderez une augmentation/réévaluation pour toucher la même chose que vos collègues plus diplômés.
2  0 
Avatar de Gluups
Membre émérite https://www.developpez.com
Le 09/07/2024 à 12:24
Citation Envoyé par Anthony Voir le message
VALL-E 2 : la nouvelle technologie vocale d'IA de Microsoft atteint pour la première fois la parité avec l'humain, elle est si aboutie que par peur d'une utilisation abusive, elle ne sera pas encore publiée
Alors que l'intelligence artificielle, on peut créer des virus avec, mais ça ne pose pas de problème.
C'est quoi la différence ?
Les remarques émises au sujet de l'intelligence artificielle ont fini par être entendues, ou la synthèse vocale est tellement mieux aboutie ? Ou retarder sa parution aide à promouvoir cette idée ?

Il était question d'un moratoire sur l'IA, je n'ai pas bien suivi, ça ...
2  0 
Avatar de Gluups
Membre émérite https://www.developpez.com
Le 09/07/2024 à 12:27
Citation Envoyé par VBurel Voir le message
Soit plus de 50 milliards investis dans les startup pour seconde trimestre 2024 !?

Et pendant ce temps, l'Europe a investi combien dans les IT ? juste par curiosité :-)

au moins 1 milliard depuis le début de l'année, rassurez nous ! ?
Dans quel but, exactement ?
Un projet va fonctionner mieux parce qu'il est financé par l'Europe ?
2  0 
Avatar de Jules34
Membre chevronné https://www.developpez.com
Le 10/06/2024 à 9:44
Combien de ligne de code comme ça sont déjà dans la nature ? Et la encore c'est une erreur, c'est pas un truc malicieux.

Hey Claude comment je peux supprimer une app de mon linux ?
Citation Envoyé par Chat-GPT
rm -rf /
1  0 
Avatar de Fagus
Membre expert https://www.developpez.com
Le 10/06/2024 à 11:57
c'est dommage qu'ils n'expliquent pas mieux leur code ou c'est moi qui n'ai pas compris. Je ne connais pas SQL alchemy.

Code : Sélectionner tout
str(uuid.uuid4())
c'est sensé être relativement unique, sauf s'il ne créent qu'une seule instance de la classe subscription par serveur ce qu'ils ont l'air de dire. En ce cas c'est une erreur de logique de créer l'identifiant unique là plutôt que dans un objet par utilisateur, mais bon, même sans chatgpt ça arrive de faire des erreurs de logique surtout quand on ne dort pas.

Ce qui est plus étrange, c'est d'écrire quelque chose dans une base sans lever quelque part une erreur si la base ne crée pas les entrées...
1  0 
Avatar de Aiekick
Membre extrêmement actif https://www.developpez.com
Le 10/06/2024 à 22:42
cette mesaventure va se generaliser.

le service rendu et la rapidité sont la,
-- ce qui va nous rendre feignant,
---- ce qui va nous faire perdre nos competence (comme celle que la calculette a eu sur notre capacité a faire des calculs de tete)
------ ce qui nous fera arreter se savoir apprendre differemment de que l'ia nous dira,
-------- ce qui nous fera arreter d'innover/creer par feigenantise ou parce que qu'on ne saura plus comment faire,
---------- ce qui va nous rendre dependant de l'ia,

ou alors, on se dit que l'ia n'est qu'un outil de blending avancé,
-- mais que sans nous,
---- sans notre recherche de la difference,
------ sans notre innovation,
-------- sans notre ideal,
---------- sans notre vision de ce que doit etre l'humanité,
------------ l'ia n'a rien a ce mettre sous la dent,
-------------- donc elle doit nous aider pas nous remplacer.
1  0