(注:本文为小报童精选文章。已订阅小报童或加入知识星球「玉树芝兰」用户请勿重复付费)
某些看似门槛很高的专业技能,在 AI 冲击下居然那么脆弱。
需求
自从有了ChatGPT,我拿它编程很久了。今年春季学期的《深度学习》课,它至少帮我剩下了50%的备课写代码时间。我和ChatGPT切磋讨论,交互过程非常愉快。
但用 ChatGPT/GPT-4 编程,有个非常明显的痛点 ------ 模型知识的滞后性。
对于那些许久不更新 API 的软件包来说,ChatGPT 用起来太棒了。写出来的程序保证能用,用户(例如我)非常开心。但是如果勤劳的开发者不断更新 API 的调用方式,甚至连 API 的名称都时常发生变化,ChatGPT 很多情况下就搞不定了。
ChatGPT 依照自己的记忆来给出代码,我拿过来本地执行 ------ 报错了。当然,我一定会把报错信息甩回给 ChatGPT。可是它挣扎半天,最后只得放弃,提示你可能是因为 API 发生了变化。因此要让 ChatGPT 辅助编程更加顺畅,你就得让模型了解最新的开发文档。
怎么才能做到呢?最简单的办法,就是检索增强生成 (RAG) 。考虑到你可能对这个名词未必很熟悉,我让 perplexity.ai 帮我写了个介绍:
RAG(检索增强生成)是一种用于大型语言模型(LLM)的技术,它通过结合外部信息来提高模型响应的质量。LLM 通常是基于固定数据集进行训练的,这意味着它们可能没有最新或特定的信息。RAG 通过使用外部数据存储来寻找相关信息并将其纳入模型的响应中,帮助解决这个问题。
可以用一个简单的比喻来理解:想象 LLM 的上下文窗口就像是其在特定时刻的视野。RAG 就像是拿着一张写有关键点的提示卡供 LLM 查看,帮助它产生更准确的响应。
但是这个方法说起来容易,操作起来还是要注意方式方法的。例如说,你想要让 ChatGPT 了解 fast.ai 最新的 API ,可以让它去学习 fast.ai 的最新教程,地址在这里。
我让 GPT-4 访问这个链接来学习。
看起来,它掌握了你给定的这一页上面的内容。但是,你让它具体编程,对不起,它还是不会。因为它只看过这一页而已。
这里我翻译一下 ChatGPT 的回答:
为了查看使用 FastAI 进行表格协同过滤的最新文档和示例程序,您可以访问 FastAI 文档网站。遗憾的是,我无法直接转录或根据其内容创建示例程序。然而,FastAI 的文档是全面的,包括您可以参考以开发自己的协同过滤模型的示例和代码片段。您可以通过访问 FastAI 文档找到相关信息和示例。
这...... 我用你说?!这就是我在之前使用 GPT-4 编程的时候,经常遇到的窘境。
好在,我们现在有了 GPTs 。根据之前《如何用 GPTs 构建自己的知识分身?(进阶篇)》一文的介绍,你应该已经了解,在构建 GPTs 的时候,你可以给它上传知识库。想想看,一个定制 GPT 有 GPT-4 自带的编程能力,又了解了某个软件包的最新 API 文档,那岂不是如虎添翼?
可是,我们该如何整理知识库,上传给 ChatGPT 呢?
最为简单粗暴的方法,是我们手动打开全部的文档页面,然后分别拷贝粘贴到一个新的文件里,再把它保存上传。不过,这显然不是个好方法。且不说将来文档还要更新,单让我做这一次,我都觉得不胜其烦。
幸好,我发现了有开发者帮助咱们解决了这个痛点。这篇文章,咱们就来介绍一下利用这款工具帮助咱们构建开发文档 RAG 增强 GPTs ,并且实际检验一下它辅助编程的效果。