我们应该如何用好 AI?从 ChatGPT 到编程语言、大数据、前端
2022 年是科技圈艰难的一年,很少有振奋人心的消息。惊喜的是年底 OpenAI 开放的 ChatGPT,一下点燃了整个科技圈,体验后感觉有点像人脑,智能化程度惊艳。
曾经我和朋友常调侃人工智能就是“有多少人工,就有多少智能”,ChatGPT 打破了这种印象。这里少有“人工”的痕迹,更像是“人脑”。AI 就像从远处开来的火车,听腻了每年总有人说它来了、要来了、真的要来了,这一次感觉它从我旁边呼啸而过~
春节期间我围绕 ChatGPT、编程语言、大数据、前端 听了很多播客 Podcasts,脑海里一直在想,如此强大的 AI 能力,会给工作带来什么变化?作为工程师,工作机会是否会面临来自 AI 的威胁或者替代,我们应该如何在工作中更好地使用 AI?以下是我的观察和理解,本文不是硬核的 AI 技术解读,更多是从产品和应用角度阐述,我会先分享4个我认为内容较好的外部输入,然后是个人观点探讨。
前置了解
ChatGPT 是现在的当红炸子鸡,但 AI 的进化不是一蹴而就,还有很多上层和周边的 AI 明星产品和概念,各自用一句话介绍下:
AIGC:AI Generated Content,由 AI 生成内容。本文聊的 AI 都属于这个领域,常见的生成内容有 文本、图片、音频、视频。这两年文本、图片、音频均有大的技术突破
ChatGPT:OpenAI 开发的聊天机器人语言模型,基于 GPT 3.5,GPT 3.0 是在 2020.6 月发布,使用 大型语言模型(LLM,Large Language Model)来训练,并把结果存储到 Transformer 的模型参数中。预先训练得到的通用语言模型,所以能力强大,善解人意,即刻答复
DALL·E2:通过文字生成图片,OpenAI 公司发布
Coliplot:微软开发的 VS Code 辅助编码插件,基于 GPT 3 和 Codex,使用 Github 数十亿公开代码库来训练,收费10刀/月
Jasper:基于 OpenAI API 构建,帮企业和个人写营销推广文案和博客等文字内容
MidJourney:通过文字生成图片,使用 Discord 聊天室
Stable Diffusion:通过文字生成图片,代码开源,有很多人拿来修改和使用
AGI:Artificial General Intelligence 通用人工智能,完全能模拟人的大脑思考创作。AI 的终极目标。
4 个高质量的外部输入
1. StrictlyVC in conversation with Sam Altman (OpenAI)
https://www.bilibili.com/video/BV1qY411X71q/
推荐指数:⭐⭐⭐⭐⭐
Sam Altman 是 ChatGPT 背后公司 OpenAI 的联合创始人兼 CEO,前任 YC 总裁。采访时间是 2023年1月份,应该是 Sam Altman 最新的公开分享。共有2部分,
第1部分是关于 Sam 的投资,他个人投资了 400+ 公司,有核聚变发电设备的 Helion,超音速飞行器,这部分和 AI 无关,可以简单略过。
第2部分推荐一定要看一下。里面讲了很多 AI 宏观内容,主持人的问题很直接,关于商业竞争、盈利模式、创业建议的问题。包括 ChatGPT、AGI 、GPT 4、微软的合作、谷歌的竞争、OpenAI 盈利模式、AI 监管。
内容总结如下:
Sam 没有预料到 ChatGPT 这么受欢迎(日常礼貌)。在 ChatGPT 发布前 10 个月前才确定用聊天的形式和 AI 交互。虽然以前 google 做过,后来失败了。
没有 GPT 4 的能力和发布日期,会考虑 safety 和 responsibility 做好后再发布。
GPT 4 没有网上流传的那么神奇,GPT 4 没有做到 AGI
盈利模式:OpenAI 是 platform 平台型公司。通过 licenses model 盈利很少,主要通过开放 API 给应用调用来收费(也就是 Model as a service)。
AGI:未来肯定是多个 AGI,不会一家独大(我相信阿里早晚也会有 AGI 能力)
安全:AI 的 safety 非常重要。应该接受监管和监督。能发生最危险的事情就是 accidental misuse。(有一个主题是 AI alignment,确保未来 AI 被人控制和为人服务)
业务边界:Jasper 这类公司是安全的,OpenAI 主要做平台,未来只会做一些 killer app,来展示 AI 的能力边界。
个人如何应对 AI 的挑战?:谷歌让 memorize 记忆不再那么重要,ChatGPT 挑战的是人类的 learn 学习能力。人类要不停地进化。
如何看待学生用 ChatGPT 写作业(甚至有人获奖)?这无法避免,要学会向前看。
Sam 的风格和 Elon Musk 完全不同。Sam 是尽可能降低人们预期,然后发布产品后打破预期。Elon 是不断吹牛,破裂以后再吹牛最迟明年。但共同点是,做的事情都很技术突破性。
2. 科技早知道:AIGC可能改变人类未来,但它知道自己的未来在哪里吗?
https://guiguzaozhidao.fireside.fm/20220148
推荐指数:⭐⭐⭐⭐
主讲者都在 AI 圈多年创业或经验,OpenAI 的务实程度,模型迭代速度超过预期。讲了大模型、数据和算力这3个 AI 底层能力的相辅相成,一些 ChatGPT 内部的 transformer、训练方法。ChatGPT 用了更好的监督数据,让模型更符合人类的认知。以及在工业和商业上规模化落地的可能,ChatGPT 不仅是文本上的突破,未来也可以基于财务、营销、制造做一些智能的应用。(AI 对现有产品来讲,是一个新的能力维度,比如我们在做 Quick BI 时深刻感知到,无论仪表板多么精美,多少模板都不够,必须要 know how,结合制造、互联网、金融、零售等行业做特色的解决方案。)
3. 编程语言 From Turbo Pascal to Delphi to C# to TypeScript, an interview with PL legend Anders Hejlsberg
https://www.bilibili.com/video/BV1YG411L774
推荐指数:⭐⭐⭐⭐⭐
TS 是我最喜欢的语言,VS Code 是最受程序员欢迎的 Editor,前者是 Anders 创造,后者有他的深度参与。
Anders 有 40 年的编程经验,创造了一个又一个传奇,Delphi、C#、TypeScript 之父。视频只有20多分钟,很多传奇故事被一句带过。几个有趣的经历:
最初在 Borland,开发了 Turbo Pascal,然后演变成 Delphi IDE,尝试过可视化生成代码,后来失败,原因是做不到 Scale,扩展性不好。
在 Java 如日中天的时候,MS 也需要自己的平台,于是 Anders 编写了 C#,并为之工作 10 多年
为什么会有 TypeScript?因为 JavaScript 是真正跨平台的语言,但弱类型遇到最大的问题就是很难 Scale,于是在内部需求是先做 C# 到 JS 的解析器,叫 Script#。这样的目的是使用 C# 有真正的 IDE,类型检查,有很多强大的工具来校验。继而发现需要做一个新的语言,于是就有了开发者喜欢的 TypeScript。真正做到了让 JS scale to large projects。
对于 AI 对编程的影响,Anders 除了 “Surprise” 并没有太多反馈,看来现在大家都还在接受的过程中。但 AI 毫无疑问会降低在不同语言间切换的成本,在不同平台上更容易转换到对应的语言。
视频中提到了 Language 是否有必要统一问题,是否有必要做一个跨 Language 的层,实际上没有必要。因为 Language 实际上是和 Platform 绑定,我们在谈 Language 实际上是在谈背后的 Platform,比如想到 Java 就对应 Server、想到 Swift 就对应 iOS、想到 Python 就对应算法模型,在 Platform 不打通的情况下把 Java 和 Swift 互相转毫无意义,但 Platform 打通牵涉太多内容,不切实际。所以程序员在预见的将来还是需要和不同的 Language 打交道,我想有了 ChatGPT 这类能力之后,Language 给开发者带来的门槛会降低,会有越来越多的开发者可以使用不同 Language 在不同 Platform 间自由切换。
此外,由于 ChatGPT 有了大量开发者用户,编程语言的设计者也会考虑面向 ChatGPT 的可理解性做优化,因此描述性强的编程语言会有优势,新兴的编程语言或框架因为缺少数据训练不占优势。
4. 跟 Shu Ding 聊聊前端和 Vercel
https://www.xiaoyuzhoufm.com/episode/638013b518554643b70ab197
推荐指数:⭐⭐⭐⭐⭐
Vercel 工程师的一期节目,比较轻松。Shu Ding 是 Vercel 早期的员工,也是 SWR 的作者。Vercel 目前竟然已经到了 400 人。讲了一些小故事,印象深刻:
和 Vercel 创始人 Guillermo Rauch 一起去日本参加 Conf 期间,因为倒时差,晚上2个人都睡不着,Guillermo 说,既然你也睡不着,我也睡不着,不如一起写代码吧。于是就有了 SWR。
Webpack 作者做事情的认真和负责程度上你难以想象!
对代码质量的执着:MR 过程中为了保证代码质量,发布前被老板催,但 Reviewer 拒绝 approve。每 review 一行代码就要承担责任。
不要把问题分类,而是要学习去解决。
以上是我看过听过感觉比较好的内容推荐。接下来是我的个人观点,和上面不是一一对应,欢迎讨论。
目前 ChatGPT 的不足/缺点
不能一味去夸 ChatGPT,我尝试了 ChatGPT 的边界场景,发现仍有一些不足/缺点,这些是潜在的机会。
没有行业数据的训练,有些答案不准确。这是行业领域公司的机会,比如法律、医疗行业,缺少专业数据的训练,给出的答案完全是错的。
没有实时性,ChatGPT 没有联网的能力,所有训练都是基于预先的数据集。这与企业做数据分析决策的及时性要求完全不符。
2C 领域还没有杀手级的应用,除了 ChatGPT 本身外尚无网络效应的应用。预计接下来会是爆发期,预计会有新的交互形态提供颠覆式体验。
无法做大段数据输入,聊天的方式虽然简单,但只能接受一小段数据输入。比如 Copilot 和 ChatGPT 可以帮你优化一小段代码,但我们 Quick BI 和 Dataphin 都是百万行以上的复杂度。优化几行对整体微不足道,怎么样保证代码安全的前提下去发现影响大的问题、通用性的一些问题。这个赛道未来会有工具产生。
未来可能充斥着 AI 生成的“正确的废话”,是否需要另一个 AI 来去除噪音,理解核心意思,去掉这些废话?
擅长文本组织、语义理解、逻辑处理,但不擅长创造、逻辑推理、类比推理。比如你问 ChatGPT 脑筋急转弯、猜灯谜,它的回答会很奇怪。
对大数据的影响
机会:结合客户的行业数据做模型训练,给出贴合场景的深度洞察。瓴羊做的 DaaS 化的应用会真正发挥巨大潜力,我们相比 ChatGPT 最大的优势是客户允许我们安全访问他们的数据,缺点也明显是缺乏智能模型的能力。相信在依托阿里平台,模型能力迟早会补上,那个时候数据给商业带来智能化的潜力会真正被挖掘出来。
大数据产出的结果更准确,几年前拜访商家的时候,经常听到有经验的商家说,你这个销售额的预测比我加减乘除的准确度都低,这背后的预测模型有很大的进步空间。
新的交互方式,Ask data 这种交互形式可能真正落地。2年前 Quick BI 就上线过问答式查询,但用户并没有大规模应用,一是用户不知道问什么,我们通过推荐问题来解决;二是给的答案不精确缺乏可解释性。因为对数据指标来讲,每个人可能都有不同的计算方式。通过 ChatGPT 强大的语义理解能力,有望真正解决。现在报表的搭建大多依赖手工,ChatGPT 已经对语言运用自如,通过训练也有希望自动生成报表代码,未来不需要手动搭建仪表板,需要 insight 洞察,提问即回答。
大数据处理能力更被重视,数据中台统一处理更迫切。很多批评数据中台的声音是因为他们没有做好,数据只有在统一处理才能发挥最大价值,这是前提。Dataphin 帮助很多企业客户打通了数据孤岛,但还有很多客户没有意识到数据孤岛的问题,这些客户会在看到 AI 智能化的强大能力以后快速转向。
数据安全更加重要,隐私保护能力会构建护城河。苹果在这方面做得特别好,很多人是因为苹果的高安全性变成忠实用户。AI 公司的竞争力会聚集于私有数据的深度,这会加剧公司对数据的获取意愿,行业对安全可定价的数据交易市场需求更迫切。
数据开发的方式大变化,拖拉拽生成 SQL 等过渡方案受威胁,更强大的脚本语言会保留,但脚本都是自动生成。有了聊天生成 SQL 以后,我为什么还要拖拉拽的中间环节?ChatGPT 目前已经能自动生成 统计计算函数、Power BI 的 DAX 表达式、Excel 公式函数,未来 Dataphin 和 Quick BI 提供的数据计算表达式和计算字段通过训练后,都可以由 AI 来做。
对前端的影响
ChatGPT 会降低 AI 的使用门槛,让前端工程师更容易开发智能应用。也会改变前端的开发方式、用户体验。
辅助代码编写
只要你描述清楚需求,写代码,那是小菜一碟。甚至还可以帮你优化代码。
我随手找了一段拼凑代码给 ChatGPT 来优化。
帮我优化下这段代码,ChatGPT 能够熟练使用 React hooks,并做性能调优:
它居然还可以给你解释为什么这么优化!
我感觉像是在和一个熟悉 React 开发规范、《Unix 编程艺术》《设计模式》《Clean Code》的同学在结对编程。
编码更规范
AI 就像一个强大的结对编程助手,可以帮你检查编码的问题。
比如我们团队 Code review 发现有很多 React hooks 滥用的问题,我看了前端圈很多大会的 topic,感觉讲的并不适用我们的场景,很多实践没有我们团队深入。
实际上这个问题最好的答案就在 React 官方文档内。我们团队把它浓缩成了几个简单的规则:
尽量不用 useEffect
若是组件内部状态(useState/useMemo/useCallback)监听,若非必要,禁止使用useEffect/useLayoutEffect触发副作用,推荐放到onClick这类事件回调中触发副作用
必须使用lint生成hooks的依赖项,否则需要加注释说明
useEffect 中若使用了资源类操作(接口请求、订阅/事件、localStorage存储等),则务必返回销毁函数
什么时候会用到 useEffect?需要对外部状态有相互影响的逻辑(副作用),才有必要放到useEffect/useLayoutEffect 中
我们一直很重视团队的工程化工具建设,能用工具解决的绝不停留在规范。但以上的规则很难用现有的工具检测出来,真正检测需要理解代码语义。这就是 ChatGPT 可以带来的底层能力变化。
全栈开发更简单
ChatGPT 会让编程语言的上手门槛大幅降低,前后端的融合更加容易。因此新一代的全栈开发会流行。注重性能和开发效率。比如 Next.js 框架。敏捷开发类框架曾经我最喜欢的是 Ruby on Rails,主要是开发确实快,遗憾是 Ruby 弱类型语言没有 TypeScript 这么鲁棒性好。希望 Next.js 能快速达到 Ruby on Rails 的生态,同时能真正解决前后端同构渲染的问题。
UI 交互方式的变革
这是对产品和前端的一大挑战和机会。
对于 2B 复杂系统,目前主流的交互方式还是报表展现类、交互分析类、表单流程类、可视化搭建类。但回到客户需求,用户的真实需求是从数据中得到一些 insight,辅助决策。引入 ChatGPT 这类能力后,整个数据开发和分析的流程会大幅缩短。
并且,在问题明确的场景下,通过 Chat 聊天来寻找答案会很快速,可以很容易扩展到语音问答。
总结:工程师如何应对 AI 的“冲击”?
虽然 AI 能回答很多问题,绘出很精美的图片。但 如果你不能发现问题,他无法给你答案。我们会不断地感受到好问题比答案更重要。借助 AI 的能力,普通人一步步体会到了爱因斯坦的洞见。
面对 AI 的冲击,不必担心 AI 会抢掉你的饭碗。如果停止学习,饭碗迟早会丢。抢掉饭碗的何止AI...另外担心也没用,我们应该成为快速使用 AI 的一波人,这一轮受益最大的会是能快速利用 AI 提高工作效率的人,你不用别人会用。
比如:
如果你大量编码,推荐使用 Copilot,物有所值。
如果你是运营解决方案架构师,要给客户写大段落的文案,可以提供一些关键字并让 ChatGPT 补充细节和润色。但不要只依赖 ChatGPT,它会生成很多空洞的车轱辘话,浪费客户的时间。
如果你做规划和方案设计,可以使用 ChatGPT 帮你做利弊分析 SWOT 分析,ChatGPT 能帮助你做相对全面的结构化思考,查漏补缺。
如果你想学习一个新的领域,可以问 ChatGPT 帮你快速上手和了解,然后自己再去了解细节。
有了场景以后,你还需要掌握一些技巧,来发挥 AI 的潜能:
提出更好的问题,花时间重点理解客户需求,并设计你的方案。最终限制你的还是你的想象力。AI 可以捏造出美丽的照片和代码,但没有你的想法就缺少意义,没有价值。你的竞争力有如何准确地捕获出用户需求,如何深入理解业务,如何协同上下游。
学习一些 prompt,准确描述你的想法,会帮助你大幅提效。比如 awesome-chatgpt-prompts[1]这个 Github 仓库可以帮你学习各种 prompt,如果你是开发者,可以在 chatgpt-engineer-prompts[2] 找到一些编程相关的使用技巧。
开放的态度,遇到新的 AI 周边工具去了解,去使用,为己所用。
总之,AI 可以作为强大的生产力工具,会缩小不同编程语言间的差异,让开发者更容易在不同平台间切换来完成任务。前端工程师升级为终端工程师之后,未来能力边界会进一步扩大。大数据潜力进一步挖掘,数据处理能力更被重视,数据开发的门槛进一步降低。接下来会是 AI 上层应用井喷的一段时间,会有更简洁的用户交互,各行各业最终都会有 AI 深度结合的解决方案,未来可期。
参考资料
awesome-chatgpt-prompts: https://github.com/f/awesome-chatgpt-prompts
[2]chatgpt-engineer-prompts: https://github.com/camsong/chatgpt-engineer-prompts