结束语 与AI共同成长
你好,我是郑晔!
《程序员的 AI 开发第一课》终于写到了结束语,我长出了一口气。这大概是我写得最为忐忑的一个专栏。之前的几个专栏,我有足够的自信保证其内容的有效性,毕竟那些内容是我很多年的积累。而大模型的爆发,满打满算也就两年时间,很多东西还在快速变化之中。
如何在众多的内容中选择,我只能凭借自己对技术的感觉找出一条主线来讲解。我最初的写作目标是,我想让这个专栏成为自己在初学时希望拥有的学习资料,现在看来,至少这个目标我达成了。
一次费曼学习法实践
于我而言,这个专栏实际上是一次费曼学习法的实践。所谓费曼学习法,就是以教促学,用输出倒逼输入。费曼学习法来自于著名的物理学家理查德·费曼,他获得了 1965 年的诺贝尔物理学奖。在日常的教学和科研工作里,费曼非常擅长把一些复杂概念解释给初学者。
抛开高大上的概念,很多人有过的经历就是小时候给别人讲题。明明自己已经很清楚的一道题,你却很难给别人讲清楚。因为身边的小朋友总有些出其不意的思考角度,让他很难理解这道题。所以,你必须变换各种方式给他解释。
当你费心费力地给他解释清楚了,你会发现自己对这道题的理解加深了许多。这就是典型的费曼学习法的场景。你的教促成了你更好地学,虽然你在帮助小朋友,但更受益的人其实是你自己。在学生时代,我常常受益于此,我周边的同学经常问我问题,我也愿意给他们讲。当时我并不知道费曼学习法,但这种做法在潜移默化之中帮我提高了成绩。
这个习惯延伸到了我的工作之中。工作之初,我就习惯把自己学到的东西以各种方式输出,无论是写技术文章,还是做技术分享。当我尝试写一个东西时,我会发现自己对它的理解还是存在很多不足,这就倒逼我去了解更多,找到一个恰当的角度把它解释清楚。
如果说除了技术本身,哪项技能对我促进最多,大概就是费曼学习法,它让我能够有机会深入理解了许多技术。有些人之前看过我的技术文章,其实那些内容都可以算作我的学习笔记。
当我和极客时间的编辑探讨这个专栏的选题时,我心里并没有十足的底气,因为在我看来,我不是这个方面的专家。事实上,我也不认为谁是这个领域的专家,毕竟没有人在这方面有十年以上的开发经验。但我知道,我有一个强大的优势,就是费曼学习法。
我知道我可以把这些技术尽我所能地讲清楚,而更重要的是,这个专栏的写作过程会极大地提升我对这个领域的认识,因为我知道,我会在写作过程中进一步学习,所以,我心甘情愿地开始了这个专栏的写作。
根据最初的设计,这个专栏只有大约十篇左右的文章,这是基于我的开发经验总结出的大致要写的方向。当我开始了专栏的写作,专栏的大纲就开始扩展。为了写作这个专栏,我查了很多的资料,这些东西是我在开发过程中不需要深入了解的,但要写一个专栏,我就必须给它更丰满的羽翼。原本一篇写完的内容,很快就成了两篇,甚至三篇。
编辑同学最初曾担心我的大纲不足以撑起一个专栏的容量,慢慢地,她就不再有这种顾虑。在专栏上线的之前的一周,我又一次扩展了大纲,最终定格在 21 篇正文,甚至超过一个专栏 20 篇的计划。
写作这个专栏,最大的受益者无疑是我自己。随着写作的进行,关于 AI 应用开发的一切,在我心中变得越来越清晰。当我完成这个专栏的核心内容之后,一个 AI 应用开发的知识体系就在我的头脑中彻底形成了。今后再有任何新的知识,我都可以很好地把它放在这个知识体系内,我的学习速度也会比以前快上许多。
一个可延展的知识体系
这个专栏覆盖了 AI 应用开发的各种知识吗?当然没有。
应该说,这个专栏提供的是一个骨架。这个骨架还可以延展出很多的东西。我们来看两个例子——多模态和 Agent,多模态是在应用的表现形式上的延展,而 Agent 是在 AI 能力上的延展。
先来看多模态。简单理解,多模态是解决多种不同类型信息的处理,除了文字之外,还有图像、声音、视频等等。如果一个应用能够进行多模态处理,我们就可以用它完成更多的任务。比如,我们要做一个生成广告的应用,当我们把意图告诉应用,它可以生成相应的文案,还可以生成对应的宣传图片,这就需要多模态的能力。
虽然这是一个明确的方向,但目前为止,没有哪个模型可以很好地完成这一切,实现一个通用版本的多模态模型是一件有难度的事,因为目前的趋势是在每个单独的领域里,模型都在突飞猛进,一个功能全面的模型,很容易在每个单点上被表现更优异的后发模型替换掉。
不过,没有很好的多模态模型并不妨碍我们做一个多模态的应用,我们可以自己把不同的模型集成在一个应用中。在应用中实现多模态,其实就是在不同的阶段调用不同的模型完成对应的工作,我们有很多的办法去实现:
- 像前面说的广告应用,就是在文案阶段调用大语言模型生成文案,在图片阶段调用生图模型;
- 如果想在会话过程中生成图片,就把生图的过程当作一个工具,通过前面提到的过的 Agent 处理方式进行处理;
- 想实现与 AI 的对话效果,可以用语音识别把语音转成文字,发给大模型,再把生成的内容转成语音。
- ……
当你掌握了这个专栏里讲的所有内容之后,看到这里关于多模态的讨论,你应该会对如何完成这样的功能有一个大致的印象。
再来看 Agent。虽然我们在专栏内容中,用了三讲的篇幅讨论 Agent,但这三讲的内容只是最基础的内容,远远不能覆盖 Agent 各个方面。这个领域还在飞速发展着,人们正在尝试用 AI 解决各种实际的问题,这样,AI 就不会局限在聊天的场景。在各种探索中,最典型的场景就是利用 AI 进行开发。
在我看来,使用 AI 进行开发经过了三个阶段:从最初的把问题抛给 ChatGPT,到 Github Copilot 这类的工具完成一些简单的工作,比如代码补全,添加注释等,再到像 Cursor、Cline、Windsurf 这类的工具根据需求直接完成代码。
很明显,三个阶段一路走来,工具正从旁观的军师变成开发过程中的真正参与者,它们正在成为程序员的好帮手。如果说前两个阶段还比较简单,到第三个阶段基本上就是 Agent 技术施展拳脚的领域了。
如果你有兴趣了解它们的实现,我强烈推荐你去看看 Cline,因为它是开源的。其核心流程就是分析出要做什么,然后利用各种工具完成相应的工作,这里的工具就是各种对 IDE 的操作。没错,这就是我们在前面讲的 Agent 核心流程。
Agent 还有一个不断在发展领域是 Agent 开发框架。这里的难点并不是单独实现一个 Agent,而是如何构建一个使用 Agent 的工作流。
我在专栏内容里讨论了用 LangChain 如何实现一个 Agent。其实,在 LangChain 的体系中,它更希望我们使用 LangGraph,其核心就是在构建一个工作流。不过,在我看来,LangGraph 还是有些复杂,不是特别清晰。
一个相对比较清晰的 Agent 框架是 crewAI。它可以通过配置文件配置出一个个可以协同工作的 Agent,并定义出它们协作的工作流。另外一个后起之秀是 OpenAI 的 Swarm。它也是比较清晰简单的。不过,它是在我写作这个专栏期间才诞生的,还有很长一段路要走。
无论是哪个框架,它们都还处于一个发展的过程之中,所以,我也没有把它们纳入到专栏的讲解中。但这并不妨碍你可以很快地上手这些框架,因为通过这个专栏的讲解,你已经对 Agent 有了一个认识,而这些知识是你去学习其它内容的重要基石。
无论是多模态,还是 Agent,包括你我未来还要学习的很多 AI 相关的内容,都是可以从我们专栏的内容延展出去,这才是构建一个知识体系的价值所在。
《程序员 AI 开发第一课》要暂时告一段落了,但 AI 还在快速进化着,属于 AI 应用开发的知识还在不断地拓展,我们的知识体系也还需要不断地更新。不过,对你我来说,我们共同打造的这个专栏已经在我们心中种下了一棵小树苗。小树虽小,但足以支撑我们继续向前。我们未来的努力就是在为它提供养分,吸收了更多的营养之后,它会逐渐长大。愿你我与 AI 共同成长,给予它更多养分,让它长成参天大树!
这次就到这里吧!如果以后有机会,我会再来与你分享我对软件开发的理解。
最后,希望你花几分钟来填写一下结课问卷,我会参考同学的意见持续维护这个专栏。
- 张申傲 👍(1) 💬(1)
结束语打卡~感谢老师高质量的专栏! 与AI共同成长!
2025-02-14 - Shepard 👍(1) 💬(1)
2025年,看第三阶段agent的了
2025-01-02 - 拉可里啦 👍(0) 💬(1)
像 chatgpt,文心一言,通义千问这些产品,是不是都是 AI Agent
2025-02-12 - 像个孩子 👍(0) 💬(1)
利用春节假期走马观花过了一遍,对这个领域有了一个整体的认知,感谢郑大
2025-02-07 - 卓然 👍(0) 💬(1)
感谢郑大,对大模型的应用有了系统的认识,对自己工作也很有帮助
2025-02-03 - 蝈蝈 👍(0) 💬(0)
第一遍先整体泛读一遍,接下来,再实操一遍~
2025-02-21