本期关键词:GPT-4、RSPack、Copilot CLI、TypeScript 5.0 rc。
GPT-4
AI 再进化,“他”越来越聪明了。
在 3.15 凌晨,OpenAI 发布了生成式预训练模型的第四代:GPT-4,它带来了「多模态」、「逻辑能力显著提升」以及「输入输出上限提高」这三个非常重要的能力:
-
多模态,现在你可以为模型输入图片了,GPT-4 能理解梗图并分析笑点,同时使用人类的逻辑来检查图片是否是安全/正常/健康的,在发布会上,OpenAI 总裁甚至演示了从一张手绘草稿生成工整的 HTML 代码(后背一凉)。但图片输入目前并未全量开放,仍处于 alpha 阶段。
-
逻辑能力显著提升,GPT-4 在地狱难度的美国司法考试中取得了前 10% 的成绩,而它的上一代,即已经被神话的 ChatGPT 背后的 GPT-3.5 取得的成绩排在倒数 10%。同时在 SAT(美国高考,满分 800 分)中,它也取得了 700 分的数学成绩与 710 分的阅读写作成绩。这也是此前的版本表现最差的部分,即理科+复杂漫长的逻辑推导。另外,GPT-4 现在能在 LeetCode Easy 中取得接近 80% 的通过率。
-
输入输出上限提高,现在模型输入可以达到四万个 token(0.8w 个上下文 token + 3.2w 个有限访问 token),也就是说配合多模态带来的识图能力,你可以将一篇完整的论文输入给 GPT-4,让它帮助你归纳全文的核心内容以及图表信息,一天读完两百篇论文不再是科幻故事了。
目前 ChatGPT 已经能够支持使用 GPT-4,OpenAI 提供了三种访问方式:
-
订阅 ChatGPT Plus(氪金玩家)
-
加入 API Waitlist: GPT-4 API waitlist(等等党永远不亏)
回想一下,其实 GPT 的发展比我们想象的要快很多。2018 年第一代模型 GPT-1 发布,随后 19 年 GPT-2、20 年 GPT-3 以及 22 年底的 ChatGPT/NewBing/NotionAI 与它们背后的 GPT-3.5,而实际上其实 GPT-4 在 22 年 8 月就已经训练完成,到今天的 6 个月实际上 OpenAI 只是在完善其安全性。
而从笔者个人视角来说,AI 相关的能力正在慢慢变成日常工作的重要助力,编写代码时有 GitHub Copilot 的智能提示,一次 Tab 敲击可能就能减少五分钟的编码或思考。遇到问题时可以召唤 ChatGPT,而不是在 Google / StackOverflow 上一边大海捞针一边不断修改自己的问题。写技术文章想不到题目和懒得写总结时,可以让 Notion AI 帮忙生成。甚至,懒得详细描述 commit 信息时,也可以使用 aicommits自动生成。一方面我在享受着 AI 带来的便利,另一方面,我也在震撼于它将对人类社会带来的影响,举例来说,贫困山区能得到的教育资源,基本不可能超过 GPT-4,更遑论未来的 5/6/7/... 了,如果能由 GPT-4 为每一位学生提供教学与辅导,成本之低,效果之好应该都超过你我的想象(当然,由于特殊原因,这一幕不太可能实现)。
RSPack
前端构建圈,够胆你就来。
不知道你是否看过 Rust 是 JavaScript 基础设施的未来这篇文章,但你应该或多或少感受到了 Rust 在前端正在一点点支棱起来,swc 为 Deno、NextJs、Parcel 带来的优化你可能已经听倦了,但是现在社区又出现了一位炙手可热的选手。字节跳动 Web Infra 团队在这个月开源了 RSPack,一个基于 Rust 编写,与 Webpack 生态系统兼容的新的构建引擎。目前,RSPack 已经兼容了 Webpack 的主要配置与 Loader 架构,并在内部业务落地了生产环境。
相较于一位新的构建器领域参赛选手登场,我更惊讶于社区对它的支持程度,从它诞生一开始,现代 Monorepo 框架 Nx 就为其提供了官方插件与博客,参考 Getting up to speed with Rspack & Nx!。Gatsby 发布了使用 RSPack 替换 Webpack 的实验性版本,参考 #37732,甚至 Netlify 也表示,哎呀妈这速度,真是杠杠的。
此时,另一位基于 Rust 编写,旨在取代 Webpack 的构建引擎 Turbopack 留下了羡慕的泪水。实际上,Vercel 在开源 Turbopack 与 Turborepo(类似 Nx 的 Monorepo 方案)后不久,就宣布将其合并为品牌 Turbo,也就是说 Vercel 的野望在于将本地开发工作流与自己强大的 PaaS 能力完全整合起来,实现前端框架-本地开发-团队协作-云端缓存-云端部署。而 RSPack 在文档中有这么一句话:目前 Rspack 对缓存支持还比较简单,仅支持了内存级别的缓存,未来我们会建设更强的缓存能力,包括可迁移的持久化缓存,这将带来更大的想象空间,如在 monorepo 里不同的机器上都可以复用 Rspack 的云端缓存,提升大型项目的缓存命中率。这其实就是在牵手 Nx 喊话 Vercel,咱们走着瞧儿。
GitHub Copilot CLI
怎么又是 AI!
Copilot 是 GitHub 推出的代码编写辅助工具,可以实现按照注释与函数名生成代码,或者按照一定规则自动补全重复代码段等操作,但它缺少了在命令行上的能力,比如我们无法实现“请给我一个能列出所有 TS 文件的命令”,“稍等,这些 TS 命令还需要按照大小降序排序下”,“再帮我过滤掉小于 1k 的文件”这样对话式的命令生成,而这正是 ChatGPT 最擅长的。
可能是看到此前 ChatGPT 在程序员群体中的火热,近期 Copilot 推出了 Copilot CLI ,来支持在命令行中将自然语言转化为命令+支持多次对话式修改的能力:
相比于 ChatGPT,Copilot CLI 的优势在于其专用于命令行操作,用于训练的数据集也将有所倾向,同时你还省了一步复制命令的过程。
TypeScript 5.0 RC
别担心,这个版本没有什么需要你重头学起的。
TypeScript 5.0 rc发布,基本这就是你会看到的 TS 5.0 正式版了。相比 5.0 beta 版本,rc 主要的改动在于调整了新版装饰器和导出语句的位置,现在你可以在 export / export default 的之前或者之后放置装饰器:
@deco export class Foo {}
@deco export default class Foo {}
export @deco class Foo {}
export default @deco class Foo {}
其它方面与 beta 版本基本保持一致,推荐阅读 TypeScript 5.0 beta 发布:新版 ES 装饰器、泛型参数的常量修饰、枚举增强等。
而在 TypeScript 5.0 版本中,还有一个相对重要的改变,那就是 TS 将自己的代码库迁移到了 ECMAScript Module,最直观的数据就是 TypeScript 的 npm 体积缩小了接近一半,TS 的构建时间缩短了 10-25%。但这对开发者的影响不大,主要体现在依赖安装时能减少一点点时间,另外 TS 的 API 仍然是 CJS 格式(摊手)。
你可能会觉得,都 2023 年了,TS 5.0 了,怎么才开始迁移 ESM ?这是因为 ESM 直到 2015 年才标准化,而 TS 上一次重构在 2014 年,那时 ESM 与 CJS 的兼容程度与替代性还未被验证,所以 TS 选择使用 namespace来替代 ESM 。这个故事告诉我们,无论在当下写下如何精巧华丽的前端代码,在时代的滚滚浪潮下,都是迟早会过时的。
我们下期见闻见:)