专栏名称: 玉树芝兰
思考教育、写作和互联网。 我已委托“维权骑士”(rightknights.com)为我的文章进行维权行动。
目录
相关文章推荐
中科院物理所  ·  鱼儿性别紊乱,秃鹫肾衰竭,这个杀手还要制造多 ... ·  15 小时前  
中科院物理所  ·  当天上的垃圾越来越多 ·  2 天前  
中科院物理所  ·  这一家子个个是毒王,可还是没能逃离你的餐桌 ·  2 天前  
51好读  ›  专栏  ›  玉树芝兰

如何让 AI 自动阅读文档样例,编写符合你需求的代码?

玉树芝兰  · 公众号  ·  · 2024-06-05 18:42

正文

(注:本文为小报童精选文章。已订阅小报童或加入知识星球「玉树芝兰」用户 请勿重复付费


痛点

我本科读的计算机专业。当时编程,讲究的就是个扎实。例如哈夫曼编码用来压缩解压文件,那真的是自己一行行代码写过来的。更不用说汇编语言这种课,都没有什么捷径可走,得下笨功夫。

可如今的编程实践,早已不是小作坊式的单打独斗,不用「一切从头开始」。大部分情况下,我们都在巨人的肩膀上前行 —— 利用他人编写的基础代码,根据我们的独特需求进行调试,来达成目标。GitHub 上汇集了全球无数开发者精心打造的框架和软件包,直接调用就好,这让开发工作变得非常便捷。

然而,这种大规模协作开发方式也带来了一些挑战。例如,你需要先仔细阅读框架开发者们编写的文档和样例,才能知道如何正确调用这些框架。如果你凭空想象来随意写代码调用类对象和函数,结果往往是一连串的错误。不过,有的项目功能虽强,文档写得却着实难以恭维,读来不仅晦涩,而且文档涵盖功能不齐全。这时候,你还得深入源码去查看某些文档中没有涉及的功能该如何实现。

更麻烦的是,这些框架和软件包是不断变化的。很多时候,开发者为了统一调用方式或提升效率,会对接口进行各种调整。一个函数可能从一个包移动到了另一个包,调用方式和参数也都可能发生变化。在某个工具框架快速演进时期,这种更改的频率非常高,周期可能以小时,乃至分秒来计算。

原本可以运行的代码,突然报错了。你原先也只能上 Stack Overflow 查找问题的答案。很多人兴许会告诉你这是版本升级的原因,于是你需要参考文档进行调整。

对懒人来说,无论是通读文档、样例甚至源码,还是不断调整代码以适应框架更新,都是非常繁琐的事情。

有没有什么方法可以让我们根据这些文档和源代码,让 AI 自动进行代码编写和修改呢?

这是我们长久以来的期盼,而从前确实没有什么好办法来实现。不过自从有了 ChatGPT 为代表的 AI 大语言模型,我们就看到了希望 —— 期盼它能够智能地帮助我们进行代码生成和改进。可惜要解决 AI 自适应编程问题,想单独依靠 ChatGPT 们自身训练获得的知识与能力,无异于痴人说梦。

我们都知道,大语言模型的训练有一个周期。本文写作时(2024 年 6 月)我们看到的 GPT-4o 已经是很新的模型了,可实际上它训练用的知识也截止在 2023 年。即使它包含了大量你需要的 GitHub 项目,GPT-4o 所掌握的知识对你的实际应用来说也不够新。它可能会写出过时的代码,当你运行最新版本框架时,会产生一系列的冲突和错误。

聪明的人们早就开始寻找解决方案。例如,我想要让 ChatGPT 学会某一个函数的调用方法,就可以把它最新的文档和样例提供给 ChatGPT。

只不过,很多框架(例如 fast.ai, CrewAI 等)所包含的文件有许多,且相互依赖。只学会了某个函数的最新样例,不足以让 AI 编出正确的代码。

怎么办呢?

我们于是就需要把某些 Github 项目库的全部内容,都交给 ChatGPT,让它来学习。在《 开发文档 RAG 的 GPTs 如何更高效地帮你 AI 编程? 》一文中,我给你介绍了用 gpt-crawler 爬取 llamaindex 这个项目的全部文档,然后让 ChatGPT 帮助我们编写程序的例子。







请到「今天看啥」查看全文