写点什么

联创用 ChatGPT 写的一行代码让公司损失上万美元!网友:老板自己写的,找不到人背锅了

Asim Shrestha

  • 2024-06-19
    北京
  • 本文字数:2388 字

    阅读完需:约 8 分钟

大小:1.14M时长:06:37
联创用ChatGPT写的一行代码让公司损失上万美元!网友:老板自己写的,找不到人背锅了

编者按:ChatGPT 在编程时的使用已经非常广泛。近日,一支国外技术团队在利用 ChatGPT 生成代码进行开发时遇到了严重的问题,导致了他们的订阅功能崩溃,并且给业务带来了重大损失。尽管 ChatGPT 等 AI 工具在编程领域具有潜力,但它们并不总是能够提供完美或适用于特定场景的解决方案。在这种情况下,如果技术团队过于依赖这些工具,并在时间压力下被迫做出决策,那最终的结果往往都是不乐观的。

 

本文作者正是上述团队中的一名软件工程师,也是 Reworkd 的联合创始人。Reworkd 是一家 YC S23 公司,从网络中提取结构化数据。他们还制作了智能化分析问题的工具 AgentGPT。以下内容由 InfoQ 整理并翻译。


作者声明:首先强调一点,本文提及的作法问题很大,本可避免。但一切都是时间紧迫之下匆忙行动下的后果。请大家在阅读时多多谅解,嘴下留情。

 


虽然系统仍在运行,但订阅功能却挂掉了……或者说是死而不僵……


去年 5 月,我们首次尝试靠自己的初创业务赚钱。我们的期望不高,因此在发布后不到一个小时就迎来第一位客户时,我们感到万分惊喜。那是个奇迹般的时刻,我们向用户表达了谢意。而且考虑到之前的准备工作花了整整两个晚上,所以我们信心满满地上床休息了。

 

第二天早上醒来时,我们收到 40 多条用户投诉的邮件通知。看似靠谱的系统似乎在一夜之间崩溃决堤,而问题只有一个——用户无法订阅。我们根本不知道是怎么搞的。

我们的货币化之路 


先介绍一点业务背景。今年 5 月 YC 第 23 赛季正式启动,我们也不太确定产品发布之后该怎么盈利。我们的 YC 团队合伙人 Dalton 建议一切以付费用户为中心,并提出应该将我们预先想好的月费数字翻个倍。最终(虽然很不情愿),我们定下了每月 40 美元的价格。会议结束之后,我们立即着手设计商业模式。我们的项目最初采用全栈 NextJS,但后来打算将所有内容迁移至 Python/FastAPI。在 ChatGPT 的帮助下,我们顺利完成了工作,实现了 stripe 的全面集成……问题爆发后,我们又冲刺了整整五天时间,那也是我们整个月内最夜不能寐的五个日夜

 

在这五天里,我们既难以入睡、又很害怕醒来——因为每天起床,我们都会收到好几十封投诉邮件。哪怕如今事情过去,我也不禁会想这次的问题让我们失去了多少客户。

 

按照每天 50 封邮件、每周 5 天、每位订户 40 美元的数字来计算,意味着单是在愿意表达意见的这部分用户中就出现了 1 万美元的销售损失。而且请大家注意,愿意发声的永远只是一小部分。我们每天都会准时回复这些邮件。大家会抱怨点击订阅时加载图标没完没了地旋转,而我们则会尝试开设新账户来亲自验证。在我们这边订阅流程顺利进行,于是一切在摸不着头脑之下继续保持原样。我们用尽了种种办法,但根本无法重现这个问题。更奇怪的是,在进入上班时间之后,几乎就不再新增任何投诉了。

价值上万美元的幻觉 


单从感受出发,从发现问题到真正解决问题的那段前列时光就像是过去了好几个月。在这五天当中,我们收到了无数电子邮件、数百条监控日志、跟 stripe 工程师们在 discord 上随时交流。最终在花了几个小时盯着 5 个关键文件后,我们终于搞清了真相。线索就在以下截屏当中,感兴趣的朋友可以先别急着下翻,试试能不能自行找到答案。



如果没找到也不要紧,其中的罪魁祸首就是下面这行看似无辜的代码。这行代码也让我们遭遇到人生中最折磨的一个礼拜,并让我们确确实实损失掉了上万美元。一起来看这第 56 行:



事情是这样的:作为后端迁移的一部分,我们将数据库模型从 Prisma/Typescript 转换为 Python/SQLAlchemy。整个过程非常繁琐,而我们发现 ChatGPT 在执行这类转换时表现相当出色,于是我们在整个迁移过程中几乎随时都在使用它。

 

我们复制粘贴了它生成的代码,发现一切运行良好;之后又在生产中进行测试,结果也同样有效。于是我们兴高采烈地推进,却忘记了此时我们仍在使用 Next API 进行数据库插入,且 Python 代码只负责从数据库中读取。我们第一次开始在 Python 中实际插入数据库记录是在订阅功能的实现阶段,虽然我们为此手动创建了全新的 SQLAlchemy 模型,但最终却仍然照搬了 ChatGPT 为原有模型编写的旧格式代码。当时的我们根本没意识到,所有模型当中的 ID 生成方式都已经出了问题。

Bug 围剿行动


第 56 行中的问题在于,我们只是传入了一条硬编码的 ID 字符串,而非使用函数或 lambda 来为我们的记录生成 UUID。也就是说,对于我们后端中的任何给定实例,一旦单个新用户订阅并使用此 ID,其他用户就无法再次执行订阅流程,因为这会导致唯一 ID 冲突。但受我们后端设置的影响,这个问题被严严实实地隐蔽了起来。

 

我们在亚马逊云科技上运行有 8 项 ECS 任务,它们全都运行着我们后端的 5 个实例(这确实只能算过渡性方案,但我们手头正好有不少亚马逊积分,换作是各位肯定也会照此办理)。也就是说任何单一用户都面对着包含 40 个唯一 ID 的资源池,也是他们能够成功订阅的最高上限。

 


工作日期间之所以一切运转良好,就是因为我们的日均提交次数大概在 10 到 20 次(当然是直接提交至主服务器),进而触发新的后端部署操作,从而为我们提供 40 个可供客户使用的新 ID。然而到了晚间,当我们不再执行提交,这些服务器上的可用 ID 就会被快速耗尽,并导致所有后续订阅遭遇 ID 冲突。用户虽然刚开始有 40 个服务器订阅 ID,但这个数字在漫漫长夜中很快归零。在最终解决了这个问题后,我们感到如释重负。

 

在发现问题并迅速提出修复方案之后,我们终于能够踏踏实实睡觉、不用担心第二天被用户们骂醒了(也不尽然,期间我们还出过其他好几次事故,但这就是另外的故事了)。

总结 


回想起来,无论那五天过得有多么煎熬,都将成为我们永远无法忘怀的一段创业经历。如今的我们终于能以轻松的心态回顾那段日子,调侃说我们本该多做点测试、也不该贸然照搬 ChatGPT 生成的代码,更需要在提交之前多加考量。

 

但毕竟这就是人生,这就是从无到有的创业体验。

 

参考链接:

https://web.archive.org/web/20240609213809/https://asim.bearblog.dev/how-a-single-chatgpt-mistake-cost-us-10000/

2024-06-19 11:459328
用户头像
李冬梅 加V:busulishang4668

发布了 1208 篇内容, 共 833.1 次阅读, 收获喜欢 1313 次。

关注

评论 3 条评论

发布
用户头像
很多python模块的默认值设计都是这样的模式,如果是callable则视为工厂,否则视为字面值。或许让LLM在生成代码的同时也生成对应的单元测试用例能缓解这样的问题。
2024-06-24 09:35 · 福建
回复
用户头像
前端生成UUID? 666
2024-06-23 10:46 · 浙江
回复
用户头像
翻译的很艰涩,怀疑也是GPT翻译的。
2024-06-21 19:22 · 陕西
回复
没有更多了
发现更多内容

模块化电商解决方案

微擎应用市场

Zenlayer 推出 AI 模型全球调用解决方案,破局企业部署三大挑战

极客天地

商品中心—商品B端搜索系统的实现文档(二)

不在线第一只蜗牛

架构

香港校长团探访博大数据前海智算中心,科技赋能教育共育湾区数字人才

极客天地

区块链 Web3 项目的上线

北京木奇移动技术有限公司

区块链开发 软件外包公司 web3开发

区块链 RWA 系统的运营

北京木奇移动技术有限公司

区块链技术 软件外包公司 RWA开发

Java程序员的职业加速器:飞算JavaAI一键生成完整工程代码,轻松应对开发挑战

猫头虎

Java 人工智能 AI编程 idea intellij

鸿蒙+星闪:一场“1+1>2”的音频蝶变

脑极体

AI

三级等保3-5万值不值?

等保测评

等保合规方案,等保怎么办,等保如何托管

等保测评

大数据-22 Sqoop 数据MySQL到HDFS集群 JDBC ETL MapReduce

武子康

大数据 hadoop hdfs hive sqoop

WebGL 软件外包开发流程

北京木奇移动技术有限公司

区块链开发 软件外包公司 RWA开发

三方系统集成(低代码)平台实践

vivo互联网技术

Java 架构 后端 低代码

建筑矿山设备工厂与 MyEMS 能源管理系统深度应用白皮书

开源能源管理系统

开源 能源管理 节能减排 工厂安全生产

私有化部署 IM:即时通讯软件助力团队协作

BeeWorks

即时通讯 IM 私有化部署

CST软件如何设置分布式计算(Distributed Computing)的 TCP-IP子网

思茂信息

cst操作 CST软件 CST Studio Suite

领跑 AI 基础设施存储赛道!焱融科技实力登榜「AI Cloud 100 China」

焱融科技

文件存储 大模型 AI基础设施 2025 AI Cloud 100 China

智慧生产管控数字化平台(源码+文档+讲解+演示)

深圳亥时科技

大模型成今年高考志愿神器,超千万用户使用百度AI志愿助手、高考大数据服务

科技大数据

Cursor 如何保障「代码索引」的安全、高效

Baihai IDP

程序员 AI 智能体 cursor AI 编程

20~30K * 15薪,可惜挂了

王中阳Go

Java 面试

如何为 gRPC Server 编写本地测试代码

左诗右码

7月1日19点,ModelWhale 大模型应用平台全新升级!

ModelWhale

大模型 modelwhale

咕泡AI课程专家团全拆解 | 技术答疑助你全周期通关!

咕泡科技

人工智能 AI 咕泡人工智能 咕泡ai

区块链 RWA 系统的上线

北京木奇移动技术有限公司

网易云信 x Doris:降本70%、提速11倍, 统一 ES/InfluxDB/Hive 多技术栈的落地实践

SelectDB

数据库 App ES Doris 网易云信

MyEMS开源能源管理系统v5.6.0发布通知

开源能源管理系统

开源 能源管理 开源能源管理

HarmonyOS NEXT仓颉开发语言实战案例:银行App

幽蓝计划

LED显示屏如何助力企业腾飞?

Dylan

数字 LED显示屏 全彩LED显示屏 户外LED显示屏 led显示屏厂家

【FAQ】HarmonyOS SDK 闭源开放能力 —Account Kit (6)

HarmonyOS SDK

harmoyos

拼多多店铺订单列表,订单详情,订单物流接口指南

tbapi

拼多多API 拼多多店铺接口 拼多多店铺订单接口 拼多多店铺订单详情接口

联创用ChatGPT写的一行代码让公司损失上万美元!网友:老板自己写的,找不到人背锅了_生成式 AI_InfoQ精选文章