跳转至

开篇词 普通程序员如何迈进AI时代?

你好,我是郑晔!

欢迎来到激动人心的 AI 时代!

AI 时代,程序员依然有用

ChatGPT 在 2022 年底横空出世,不管你是否做好了准备,人类一下子被拉进了 AI 时代,各种大模型此起彼伏,各种 AI 应用也如雨后春笋般不断涌现。像 LLM、GPT 这样拗口的技术词汇也已经变得耳熟能详。人人都知道,AI 时代来了,各种新机会就在眼前。

然而,身为一个普通的程序员,你一定会心生疑问,我不是专业的 AI 程序员,工作上也只是普通的业务开发,根本看不到使用大模型的机会,更何况 AI 算法动不动就是最新的论文,我也没有很强的学术功底,我知道 AI 很重要,但我究竟该如何跟上这时代的步伐呢?

如果你是这么想的,那这门《程序员的 AI 开发第一课》就是为你准备的。

虽然 AI 时代是构建在许多顶尖的 AI 算法基础之上,但是,并非所有 AI 相关的工作都需要极强的 AI 算法功底。整个社会要真正进入 AI 时代,这些顶尖的算法和优秀的模型必须和我们的现实生活结合起来,这里有大量工程性的工作需要完成,而这恰恰是我们这些普通程序员的强项。

这个世界需要的不全是打造全新的 AI 应用,AI 进入我们日常工作的方式,更有可能的是,给既有的项目开发一个新的功能,而这个功能就是利用 AI 的某些能力来完成的。或早或晚,我们都会开发一些与 AI 相关的内容,只不过,名头并非是开发一个 AI 应用。所以,我们需要做的就是,打好相关的基础。一旦有机会与 AI 打交道,我们就能轻松上手。

当真正接触了 AI 应用开发,你就会发现,我们完全可以把别人构建好的应用当做基础设施来用,站在这个角度上看,这同我们使用 API 构建应用没有本质区别。不过,与我们简单地调用 API 传入参数不同,基于大模型的 AI 应用开发需要我们有不同的编程模式,而这正是我们要在这门课里学习的。

基于大模型的 AI 应用开发

传统的应用开发和 AI 应用开发之间有什么差别呢?如果说传统的应用开发是程序员把执行规则一条条写在代码里,那么基于大模型的 AI 应用开发最大的差异就是,有些执行规则是由模型替我们判定的。

举个例子,如果用户的意图是让我们生成一张图片,传统的做法就是有一个按钮,点击它之后,程序来根据某些条件生成图片,而在 AI 应用中,用户只需要在对话框输入“我想要一个梵高风格的孙悟空”。至于怎么判断需要生成图片,以及根据什么条件生成图片,则是由模型判定的。

你看到了,我们会把一部分工作交给模型,作为应用的编写者,我们很擅长把规则编写进代码,但什么规则可以由模型判定,则是我们作为普通程序员需要补充的知识。

在这门课里,我们的内容就是围绕着如何构建基于大模型的 AI 应用所需知道的知识进行组织的,主要包括三个部分:

  • 大模型基础
  • 应用开发
  • 模型能力

大模型基础

在这个部分,我会介绍大模型的基本情况,毕竟它是支撑我们应用开发的基础,但我们主要是站在应用开发的角度,并不会过多地深入。有了对大模型的基本了解之后,我们就来学习如何编写提示词。这部分内容,我会从普通用户的角度开始介绍,即便你不从事 AI 应用开发,这部分内容在你日常使用 AI 的时候,也会对你有所帮助。然后,我会介绍一些挖掘大模型能力的技巧,也就是提示工程。

应用开发

应用开发部分是整个专栏的核心,我主要会站在应用开发者的角度,介绍两个我们会用到的 API:Open AI 的 API 和 LangChain。

无论你是否喜欢,OpenAI 凭借先发优势,已经成为了行业中的翘楚,其 API 也是许多后来者学习的目标,所以,一旦理解了 Open AI API,再去看其它模型提供的 API,也就很容易理解了。至于 LangChain,它提供给我们一套编程框架,更重要的是,它还为我们提供了很多应用模板。无论你的应用是否基于 LangChain 构建,LangChain 都是一个值得学习的东西。

如果稍微了解一些 LangChain,你可能会知道,LangChain 经历过一次很大的版本变动,我尽量按照新的风格去写的代码,所以,这个部分也可以看作一个 LangChain 的课中课

有了OpenAI API 和 LangChain 作为基础,我们就可以开启应用构建之旅了。我们会借助 LangChain 介绍一些常见的 AI 应用如何开发,重点会介绍两种常见的应用类型:RAG 和 Agent。RAG(Retrieval-augmented generation,检索增强生成)帮助模型扩展了自己的知识面,了解更多它在训练时还不知道的东西,而 Agent 则可以扩展模型能力的边界,比如,让它去做超越语言的事情。

如果说不同的应用类型是在帮助你补充欠缺的知识,那么在后一部分,我会讲到一些工程实践帮你提前规避一些问题,我会谈到如何实现记忆(让大模型更了解用户)和缓存(节省使用大模型的成本),以及统一接入(使用统一接口调用不同的模型)。

模型能力

在模型能力部分,我们会看到更多大模型,尤其是开源大模型。基于大模型的应用开发,一个关键问题是成本,一方面,如果所有请求都必须通过闭源模型,则成本会居高不下,另一方面,很多开源大模型能力越来越强,某些模型的表现不亚于闭源模型,比如 Meta 出品的 Llama 系列,很多情况下,我们完全可以使用开源模型进行替代。

在这个部分,我们还会涉及到大模型的微调,同 RAG 类似,微调是另外一种帮助大模型扩展知识面的技术,不同的是,RAG 是把知识补充到提示词里,而微调则是在模型上动了手脚。RAG 和微调各有千秋,RAG 成本更低,微调效果更好(如果做得好的话),AI 应用常常根据自己的需要选择其中一个。不过,某些项目会选择将二者都包含其中。

在这个部分的最后,我想务虚一下,谈谈我们应该以何种态度对待日益发展的大模型。

在这个专栏的所有内容学完之后,你将对围绕大模型构建应用开发的图景有了一个完整的认识。在面对一个可能用到 AI 的需求时,你就可以大胆地将它接过来,自信地开启自己的 AI 开发之旅。

daotu

不过,或许你会问,AI 领域变化如此之快,我今天学会的东西明天可能就会过时,比如,今天这个大模型好,明天就会发布一个新的大模型超越这个大模型。在这门课里,我会尽量地把重点放在那些可能长期有效的东西上,比如,我讲解的提示词用法基于的是大模型技术的,只要大模型的基础不变,它就是有效的,至于在某个具体的模型上的表现,则不是我关注的重点。

写在最后

最后,还是要做一个自我介绍。我叫郑晔,一个写代码超过二十年的程序员,做过与软件开发相关的各种工作:编代码、带团队、做咨询、写开源……

我已经在《极客时间》上写了四个专栏,把自己对于软件开发方方面面的思考总结在其中。

这门课与我之前课程最大的差异是,之前的内容几乎都是行业里的共识,而这门新课则是正在进行时。

自从 ChatGPT 问世之后,我便很快进入到 AI 应用的开发之中。我是一个有二十多年工作经验的程序员,实话说,很多后涌现的技术是不足以打动我的,因为我很少能看到这些技术带来编程模式的转变,但这次不一样,诚如我前面所说,程序的执行规则不再是完全的硬编码,这给我带来的震撼是巨大的。

一个普通程序员如何入门 AI,其实是我在最开始接触 AI 应用开发时问自己的一个问题,也是我这段时间在开发之余不断思考的问题。

我很希望有人能在我入门的时候,告诉我应该怎样学,既然没有人用这种角度讲过,当我费尽心力走过来之后,我就把这些内容总结一下,一方面,当作我阶段学习的总结,另一方面,给后来者搭起一座桥梁,降低进入 AI 世界的门槛。一如我的其他课程,我希望这门课也能成为你进一步学习的起点,在学完之后,你能有勇气面对更复杂的 AI 世界。

当我写下这些文字时,AI世界依然在剧烈变化着,我实在不敢说这些内容是否会有陈旧过期的情况,所以,我也只能抱着一颗交流的心去开启这门新课。如果你在学习的过程中,发现一些地方你会有更值得推荐的做法,请不吝赐教。

来吧,我们一起奔向 AI 时代,让我们成为 AI 时代的构建者!

精选留言(15)
  • 张申傲 👍(2) 💬(3)

    开篇词打卡~ 我也是从互联网后端开发,转型到 AI 应用开发,更多感受到的是编程范式上的转变。 希望跟着老师共同学习进步,迎接 AI 的黄金时代!

    2024-11-19

  • Seachal 👍(1) 💬(1)

    郑老师,自从听了您的《10x 程序员工作法》之后,其他几门课也跟着订阅了。您的课程不仅内容丰富,讲解方式也特别接地气,让我受益匪浅。期待您的新课程能再次刷新我的认知,让我的技能更上一层楼![

    2024-11-16

  • Demon.Lee 👍(1) 💬(3)

    嘿嘿,我来了,郑老👍

    2024-11-05

  • ningfei 👍(0) 💬(1)

    2025我也要跟紧队伍了

    2025-02-14

  • Aaron Liu 👍(0) 💬(1)

    跟着老师学ai,提升思维和工作效率,here we go

    2025-01-23

  • 水里的天空 👍(0) 💬(1)

    作为一个老程序员,跟着老程序员学习

    2025-01-22

  • 追梦 👍(0) 💬(1)

    开篇打卡,最近越来越感受到大模型的威力,它已经在并将持续深刻地改变我们的软件架构设计

    2025-01-02

  • 青鸟飞鱼 👍(0) 💬(1)

    来了,大佬

    2024-12-24

  • CPF 👍(0) 💬(1)

    赞b( ̄▽ ̄)d

    2024-12-23

  • westfall 👍(0) 💬(1)

    测试可以学吗?

    2024-11-27

  • Sch0ng 👍(0) 💬(1)

    瞌睡来了个枕头,刚好需要, 甜~

    2024-11-25

  • 晴天了 👍(0) 💬(1)

    看到就直接订了, 不为其他, 就为郑老师这个金字牌子.

    2024-11-18

  • hao-kuai 👍(0) 💬(1)

    看到老师的课果断预定

    2024-11-14

  • 行与修 👍(0) 💬(1)

    郑老师边学边输出的学习方式和AI一样值得学习!

    2024-11-10

  • ooboqoo 👍(0) 💬(1)

    郑老师的课程全买了。最喜欢 《10x 程序员工作法》,推荐给了很多同事。这门《程序员的 AI 开发第一课》学习了几讲,依然干货满满:易懂、都讲到点子上、逐步更新中内容新,可以边学边用。

    2024-11-10