AI杂想

回到梦开始的地方,2022 年 12 月 6 日,ChatGPT 发布几天后,我通过国外手机接码平台注册了账号。

那时,还只是带着新奇和玩乐的心态与 ChatGPT 对话。短短两年后,AI 已经渗透到了我们生活的方方面面。

感触的事情

1. 编程语言的革命性转变

2019 年,我在《到底学哪一门编程语言》中半开玩笑地畅想了「龙之语言」:

短短几年后,这个预言竟然成真了。通过自然语言,无论是中文还是英语,只要描述需求,就能生成相应的软件。

编程范式正在经历一场革命:从面向过程到面向对象,再到函数式编程,现在我们迎来了面向 AI 编程的新时代。传统的编程语言(C++、Python、JavaScript、Java)可能会逐渐转变为类似汇编语言的角色——我们知道它的存在,但不再需要深入学习它。未来的主流编程方式将是使用自然语言。

2. 技术文章

上个月准备一篇关于前端信号(Signal)的文章,照常先看了很多参考资料:

看完之后准备动笔,编写边和 chatGPT 聊天来理清思路,逐渐意识到了一个重要转变:

聊着聊着,算了算了,写出来也不如 chatGPT,chatGPT 甚至还能一对一持续解答疑惑。

未来技术文章作用会越来越低。在学习新技术、解答技术疑惑方面,AI 的能力已经超越了传统的技术文章。未来,技术写作可能会更多地聚焦于个人经验分享、企业实践案例等独特内容——那些 AI 无法替代的真实经历和洞察。

3. 开发模式的颠覆:Cursor 的启示

前几周组内开始建议大家体验 cursor 进行开发,开始以为又只是像 Copilot 一样的东西,可以辅助编程,可以提升效率,但不多。

那几天刚好有一个需要写 node.js 数据抓取存储的任务,就试着用了一下。

我只是向 cursor 描述了需求,然后就开发完了,它帮我们自动建文件、自动写代码,我们需要做的就是 review 一下,然后点一下 accept all。

可能在以前,我还需要熟悉一下文件,看看其他人怎么写的,然后复制过来,接着再改一改,快的话也得一两个小时。但现在,我啥也没干,几分钟代码写完了。

再举一个 RAG 的简单例子,以前用 chatGPT 实现自己博客的 RAG 机器人可能需要

要实现一个基于 ChatGPT 的 RAG(Retrieval-Augmented Generation)机器人,用于你的博客,以下是关键步骤:

1. 确定需求和目标

​ • 明确目标:例如,你的 RAG 机器人需要回答博客内容相关的问题,还是辅助用户搜索特定主题。

​ • 确定数据来源:博客是静态页面、Markdown 文件,还是数据库?

2. 准备博客数据

​ • 数据收集: 爬取或导出博客内容到结构化格式(如 .txt、.json、.csv)。

​ • 数据清洗: 去除冗余内容,比如 HTML 标签、重复数据或无关信息。

​ • 数据分块: 将长文章切分为小段(例如每段 200-500 字),便于后续检索。

3. 向量数据库搭建

​ • 选择向量数据库: 使用 Pinecone、Weaviate、Vespa、Milvus 或 OpenSearch。

​ • 文本向量化: 将博客内容转化为向量,便于检索。

​ • 使用预训练的嵌入模型(如 OpenAI 的 text-embedding-ada-002 或 Hugging Face 的句向量模型)。

​ • 为每段内容生成向量,并存储在数据库中。

4. 构建检索机制

​ • 查询向量化: 用户提问需要转化为向量,与数据库中的内容匹配。

​ • 检索最相关内容:

​ • 使用相似度计算(余弦相似度)找到相关博客段落。

​ • 返回排名靠前的结果(如 top-k 检索)。

5. 集成 ChatGPT API

​ • 调用 ChatGPT:

​ • 使用 OpenAI 的 GPT-4 API 接收用户问题。

​ • 将检索到的内容作为 context 提供给模型,生成更加精准的回答。

示例 Prompt:

1
2
3
4
> 用户提问: {用户问题}
> 检索内容: {相关博客段落}
> 请根据检索内容回答问题,必要时补充额外信息。
>

6. 构建 Web 服务

​ • 后端服务:

​ • 使用 Flask/FastAPI/Django 等框架创建 API。

​ • 实现以下功能:

​ • 接收用户提问。

​ • 调用向量数据库进行检索。

​ • 将上下文和问题传递给 GPT-4。

​ • 返回生成的回答。

​ • 前端界面:

​ • 使用 React/Vue.js 设计用户界面,支持输入问题和显示回答。

7. 部署

​ • 服务器部署:

​ • 本地测试无误后,将服务部署到云平台,如 AWS、Google Cloud、Azure。

​ • 安全优化:

​ • 添加 API 调用限流机制,避免滥用。

​ • 使用 HTTPS 确保通信安全。

8. 持续优化

​ • 监控用户交互:

​ • 收集用户反馈,分析常见问题,优化检索逻辑和提示词设计。

​ • 模型微调(可选):

​ • 使用博客数据微调开源模型,使其更贴合内容特点。

工具和资源推荐

​ • 开发工具:

​ • 向量化:Hugging Face Transformers 或 OpenAI API。

​ • 向量数据库:Pinecone、Milvus。

​ • 后端框架:Flask、FastAPI。

​ • 前端框架:React、Vue。

​ • 参考文档:

​ • OpenAI 官方文档

​ • 向量数据库官方教程

需要进一步拆解某一步吗?

想想就复杂,太多的专业名词了。但有了 cursor,我们只需要打开自己的博客文件夹,然后点击 codebase 的回车:

结果就出来了

根据提供的代码片段,windliang 是一位程序员,主要专注于前端开发,尤其是微信小程序和 Web 开发。以下是一些关于他的信息:

  1. 技术栈:他熟悉微信小程序、WebSocket、Node.js、Vue.js 等技术,并且对 Webpack、HTTP/HTTPS 等前端相关技术有深入研究。
  2. 项目经验:他开发了多个微信小程序,如「神奇字体」、「农历生日转换」等,并且分享了一些小程序的开发经验和上线过程。
  3. 博客和分享:他搭建了自己的博客,并撰写了许多技术文章,涵盖了前端开发、小程序原理、WebSocket、Webpack 等主题。
  4. 学习路径:他从大学时期开始接触编程,逐步学习并深入前端开发,期间也涉及了一些后端技术如 Node.js。
  5. 兴趣和爱好:他对编程充满热情,喜欢通过技术解决实际问题,并且乐于分享自己的学习和开发经验。

更多关于他的信息可以通过他的博客和知乎账号 windliang 进一步了解。

以前我们需要复制代码给 chatGPT 或者问 chatGPT 问题,再结合代码来写。但现在 cursor 会把当前项目文件全部添加索引,还可以指定文件,并且它还可以自主调用程序,自己一步一步决策,出现问题自己再解决问题,而这个过程我们完全不需要关心,只需要验收最后的成果。

这标志着开发者角色的重大转变:我们正从具体实现者转变为需求描述者和结果验证者。我们变成了老板,Cursor 就像我们的 AI 员工,能够自主完成从需求理解到问题解决的整个过程。

最夸张的的是,这个员工是无限的,我们可以同时做很多事情了。

AI 发展历程(2022-2024)

感触完再简单回顾下从 chatGPT 开始 ai 的发展进程,虽然只有两年时间,但概念、软件出来了一个又一个,这里简单写写,详细的还是得去问 chatGPT。

大模型的迭代升级

  • 2022.11:ChatGPT 发布,开启 AI 爆发元年
  • 2023.02:微软推出集成 GPT-4 的 new Bing
  • 2023.03:OpenAI 发布 GPT-4,支持多模态输入
  • 2023.03-04:百度文心一言、阿里通义千问相继发布
  • 2023.07:Meta 开源 Llama2,推动开源大模型发展
  • 2023.09:Claude 2 问世
  • 2024.01:Claude 3(Opus、Sonnet、Haiku)发布

AI 编程助手的演进

  • GitHub Copilot:开创性的 AI 编程助手
  • Amazon CodeWhisperer:亚马逊的编程助手方案
  • Cursor:基于 GPT-4 的智能集成开发环境
  • Claude for VSCode:注重人机交互的编程助手
  • Codeium:开源社区的 AI 编程解决方案

AI 应用爆发

各个领域的 AI 应用也在不断涌现:

  • 图像生成:Midjourney、Stable Diffusion、DALL-E 3
  • 视频生成:Sora、Pika Labs
  • 语音生成:Whisper、Claude Speech
  • 音乐生成:Stable Audio、MusicGen

开发范式的变革

AI 带来了新的开发方式:

  • Prompt Engineering:通过设计提示词来引导 AI 输出
  • RAG(检索增强生成):结合知识库的 AI 应用架构
  • Function Calling:让 AI 可以调用外部函数和 API
  • AI Agent:能够自主决策和执行任务的 AI 代理

ai 发展这一章节由 ai 生成。

展望未来

未来一定是 ai 的,这已经毋庸置疑了,而我们需要做的就是拥抱 ai,学习 ai,使用 ai。

从 php 开发、.NET 开发、java 开发、python 开发、塞班开发、安卓开发、iOS 开发、web 开发、小程序开发,到现在的 ai 开发,短短几十年,程序员的职业在不停变化。

但变了吗?其实没有。程序员核心掌握的应该是「解决问题的能力」,而变的只是我们使用的工具罢了。

windliang wechat