开发者直接复制ChatGPT生成的代码,导致公司损失10000美元
共 3278字,需浏览 7分钟
·
2024-07-14 19:43
👇我的小册 45章教程:(小白零基础用Python量化股票分析小册) ,原价299,限时特价2杯咖啡,满100人涨10元。
一家名为 Reworkd 的初创公司在尝试商业化过程中,通过使用 ChatGPT 生成的代码进行项目迁移,导致服务因为代码错误无法正常订阅,造成超过 1 万美元的损失和 5 天服务停机。。。
根据描述,Reworkd 公司专注于开发完成自动化任务的 AI Agent 平台,旨在解决需要大量人力介入的业务流程的低效问题。
通过使用 AI Agent,Reworkd 帮助企业简化操作并减少手工工作量。这家公司得到 Y Combinator(为初创公司提供早期风险投资、创业指导等)的支持。
当时这家公司开始了商业化尝试,初步计划是 “让用户付费订阅自家的服务”。经过团队商议,他们将订阅服务的价格定在了每位用户每月 40 美元。
规划好了商业化的方向与定价之后,团队开始着手 “更改业务代码”,集成 “支付系统” 等等。
该项目原本采用的是全栈 NextJS 技术,要实现商业化,业务代码也需要进行改变,因此团队需要在有限的时间里计划将项目从 Next.js 迁移到 Python/FastAPI。
由于迁移工作涉及到编写许多繁琐的代码,于是团队成员想到了交给 ChatGPT 完成。
具体情况如下:
作为我们的后台迁移的一部分,我们正在将数据库模型从 Prisma/Typescript 转换为 Python/SQLAlchemy。这真的很乏味且繁琐。
我们发现 ChatGPT 在这个转换过程中做得相当出色,所以我们几乎在整个迁移过程中都使用了它。
我们复制了它生成的代码,看到一切都运行正常,将其用于生产环境,发现它也正常运行,然后继续我们忙碌的生活。但此时,我们仍然使用我们的 Next API 来进行所有的数据库插入。
Python 只是从数据库中读取。在我们实际上开始在 Python 中插入数据库记录的第一次是当我们实现订阅时。尽管在此过程中我们手动创建了全新的 SQLAlchemy 模型,但我们最终还是复制了 ChatGPT 为我们现有模型所写的相同格式。
我们忽略的是,我们将生成 ID 的方式的问题也复制到了所有模型中。
出现 Bug 的代码位于第 56 行,我们只是传入了一个硬编码的 ID 字符串,而不是用于生成记录 UUID 的函数或 lambda 表达式。
这意味着对于我们的后台的任何一个实例,一旦一个新用户订阅并使用了这个 ID,其他用户就无法再执行订阅流程,因为会导致唯一 ID 冲突。
由于我们的后台设置,这个问题被很好地隐藏了起来。
我们在 AWS 上有 8 个 ECS 任务,每个任务运行我们的后台的 5 个实例(过度,是的我们知道,但公平地说我们有 AWS 额度)。
这意味着任何一个单独的用户可能遇到 40 个潜在的唯一 ID。
白天,这没问题。我们可能每天提交 10-20 次(当然直接提交到主分支),这将导致新的后台部署发生,给客户提供了 40 个全新的 ID 供他们使用。
但到了晚上,当我们终于停止提交(我们是不是有点懒呢?)时,每台服务器中的单个 ID 都将被占用,导致所有新的订阅都产生 ID 冲突。
用户一开始有 40 个可能的服务器可以让他们订阅,随着夜晚的来临,迅速减少到几乎零。
最终解决这个问题就像从我们的肩膀上卸下一块重担。
省流总结如下:
- 公司在推出付费订阅功能后的一个小时内获得了第一个付费用户。
- 第二天早上,收到了超过 40 封用户投诉的邮件,原因不明。
- 在五天时间里,持续收到投诉邮件,但工作时间几乎没有投诉。
- 问题源于一个代码行,导致唯一 ID 冲突,使其他用户无法订阅。
- 问题五天后解决,销售额损失约 10,000 美元。(50 emails/day x 5 days x 40ℎ=10,000 美金)
- 尽管经历了痛苦的五天,公司对此并不后悔,反而将其视为创业过程中难忘的一刻。
在这个案例中,他们在数据库写入时设置了用户 ID 为一个固定值,导致每次写入都发生冲突,最终导致用户无法完成注册和付款流程。
这个错误的根本原因是他们在编写 ORM 代码时将用户 ID 设置为常量值,而不是唯一的标识符。
Reference
最后推荐一下我们团队写的量化小册的内容,45篇内容!从Python安装,入门,数据分析,爬取股票基金的历史+实时数据,以及如何写一个简单量化策略,策略回测,如何看资金曲线统统都有介绍!非常超值!
欢迎订阅:原价299 早鸟价2杯咖啡钱,即可永久阅读。满400人又要涨价了,现在的价格非常非常低,只要2杯奶茶,就可以终身订阅+课程源码,还有永久陪伴群。48小时无理由退款,放心食用!
往期推荐
量化: 如何用Python爬取创业板历史+实时股票数据!|实战股票分析篇利用Pandas 9招挖掘五粮液股价!|实战股票数据分析篇 Pandas滚动操作 |量化股票第一步,用Python画股票K线,双均线图,可视化你的股票数据!|如何用Python爬取全部800多只ETF基金数据!|如何用Python写一个双均线策略 |如何用Python开发一个多策略机器人!上篇!|Python量化系列-用布林策略买五粮液能赚多少钱?|只要4秒钟!用Python 获取上证指数34年的历史日线数据!
入门: 最全的零基础学Python的问题 | 零基础学了8个月的Python | 实战项目 |学Python就是这条捷径
干货:爬取豆瓣短评,电影《后来的我们》 | 38年NBA最佳球员分析 | 从万众期待到口碑扑街!唐探3令人失望 | 笑看新倚天屠龙记 | 灯谜答题王 |用Python做个海量小姐姐素描图 |碟中谍这么火,我用机器学习做个迷你推荐系统电影
趣味:弹球游戏 | 九宫格 | 漂亮的花 | 两百行Python《天天酷跑》游戏!
AI: 会做诗的机器人 | 给图片上色 | 预测收入 | 碟中谍这么火,我用机器学习做个迷你推荐系统电影
小工具: Pdf转Word,轻松搞定表格和水印! | 一键把html网页保存为pdf!| 再见PDF提取收费! | 用90行代码打造最强PDF转换器,word、PPT、excel、markdown、html一键转换 | 制作一款钉钉低价机票提示器! |60行代码做了一个语音壁纸切换器天天看小姐