开发文档 RAG 的 GPTs 如何更高效地帮你 AI 编程?

news2024/12/25 9:06:56

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

某些看似门槛很高的专业技能,在 AI 冲击下居然那么脆弱。

219bf1c287ef5c2ac8e4ccd5d46a3cf9.jpeg

需求

自从有了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 的最新教程,地址在这里。

422d576f98d2d72c0baf858187138c13.jpeg

我让 GPT-4 访问这个链接来学习。

3d018d609b4e49c7584bdb9dac06075c.jpeg

看起来,它掌握了你给定的这一页上面的内容。但是,你让它具体编程,对不起,它还是不会。因为它只看过这一页而已。

908245ae1d061673251ff425cba8ce29.jpeg

这里我翻译一下 ChatGPT 的回答:

为了查看使用 FastAI 进行表格协同过滤的最新文档和示例程序,您可以访问 FastAI 文档网站。遗憾的是,我无法直接转录或根据其内容创建示例程序。然而,FastAI 的文档是全面的,包括您可以参考以开发自己的协同过滤模型的示例和代码片段。您可以通过访问 FastAI 文档找到相关信息和示例。

这…… 我用你说?!这就是我在之前使用 GPT-4 编程的时候,经常遇到的窘境。

好在,我们现在有了 GPTs 。根据之前《如何用 GPTs 构建自己的知识分身?(进阶篇)》一文的介绍,你应该已经了解,在构建 GPTs 的时候,你可以给它上传知识库。想想看,一个定制 GPT 有 GPT-4 自带的编程能力,又了解了某个软件包的最新 API 文档,那岂不是如虎添翼?

可是,我们该如何整理知识库,上传给 ChatGPT 呢?

最为简单粗暴的方法,是我们手动打开全部的文档页面,然后分别拷贝粘贴到一个新的文件里,再把它保存上传。不过,这显然不是个好方法。且不说将来文档还要更新,单让我做这一次,我都觉得不胜其烦。

幸好,我发现了有开发者帮助咱们解决了这个痛点。这篇文章,咱们就来介绍一下利用这款工具帮助咱们构建开发文档 RAG 增强 GPTs ,并且实际检验一下它辅助编程的效果。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1814670.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

计算机信息安全技术课后习题答案

计算机信息安全技术课后习题答案 计算机信息安全技术(第2版)付永刚 部分习题答案 第一章 计算机信息安全技术概述 选择题 关于访问控制服务的描述中,正确的是( A ) A. 可控制用户访问网络资源 B.可识别发送方的真实身…

STM32无法烧写程序的故障排除

如果你在使用STM32微控制器时遇到无法烧写程序的问题,可以按以下步骤进行故障排除: 1. 确认硬件连接 检查电源:确保STM32板子正确供电。调试器连接:确认ST-LINK调试器或其他编程工具与STM32开发板的连接无误,尤其是S…

将web项目打包成electron桌面端教程(二)vue3+vite+ts

说明:我用的demo项目是vue3vitets,如果是vue2/cli就不用往下看啦,建议找找其他教程哦~下依赖npm下载不下来的,基本换成cnpm/pnpm/yarn就可以了 一、项目准备 1、自己新创建一个,这里就不过多赘述了 2、将需要打包成…

windows上修改Podman的镜像配置源加速

目录 前言解决办法1. 打开window的Powershell 2. 修改registries.conf3. 重启podman即可 扩展内容1. 国内镜像源地址2. 阿里加速地址 前言 今天在电脑上准备通过podman安装mysql,结果执行安装命令后,网络不通没法下载镜像。 解决办法 将默认镜像源修改…

AI 大模型训练中,通常会采用哪些方法?(输入篇)

大家好 某种程度来说大模型训练的核心算法就是300到400行代码,如果真正理解了并不难。下面我将带大家分析常规大模型训练有几个阶段以及在训练中一般会用到哪些方法。 由上图可以看出,大模型训练主要有四个阶段:预训练、有监督微调、奖励建模…

C++11:可变参数模板 emplace_back

可变参数模板 基本概念&#xff1a;C 的参数模板是 C11 引入的特性&#xff0c;它允许模板接受可变数量的参数 // Args是一个模板参数包&#xff0c;args是一个函数形参参数包 // 声明一个参数包Args... args&#xff0c;这个参数包中可以包含0到N个模板参数。 template <…

Vue21-列表排序

一、需求 二、解决方式 <body><div id"root"><h2>人员列表</h2><input type"text" placeholder"请输入" v-model"keyword"><button click"sortType 1">年龄升序</button><b…

uniapp地图导航

我们只需要给图标加一个点击事件 我这里的数据都是动态的&#xff0c;想测试的朋友可以写固定值 然后跳转之后首先会调到选择软件导航 点击导航之后会显示使用哪个app 最后我们选择之后将会直接跳转到app进行导航

spring boot3登录开发-邮件验证码接口实现

⛰️个人主页: 蒾酒 &#x1f525;系列专栏&#xff1a;《spring boot实战》 目录 写在前面 上文衔接 接口设计与实现 1.接口分析 2.实现思路 3.代码实现 1.定义验证码短信HTML模板枚举类 2.定义验证码业务接口 3. 验证码业务接口实现 4.控制层代码 4.测试 写…

带你走进信息安全软件架构

汽车行业网联化以及网络安全风险日益突出&#xff0c;汽车网络攻击&#xff0c;漏洞日益增加&#xff0c;危害防不胜防。汽车信息安全逐步受到重视&#xff0c;网络安全相关法律法规陆续颁布。在这样的背景下&#xff0c;AUTOSAR 组织也发布了有关信息安全模块和 Crypto Stack(…

【ARM Coresight Debug 系列 -- ARMv8/v9 软件实现断点地址设置】

请阅读【嵌入式开发学习必备专栏 】 文章目录 ARMv8/v9 软件设置断点地址断点地址软件配置流程代码实现 ARMv8/v9 软件设置断点地址 在ARMv8/9架构中&#xff0c;可以通过寄存器 DBGBVR0_EL1 设置断点。这个寄存器是一系列调试断点值寄存器中的第一个DBGBVRn_EL1&#xff0c;其…

Chromium源码阅读:深入理解Mojo框架的设计思想,并掌握其基本用法(1)

Mojo简介 Mojo 是一个运行时库的集合&#xff0c;提供与平台无关的通用 IPC 原语抽象、消息 IDL 格式以及具有针对多种目标语言的代码生成的绑定库&#xff0c;以便于跨任意进程间和进程内边界传递消息。 Mojo 分为清晰分离的层&#xff0c;子组件的基本层次结构如下&#xff…

GraphQL(7):ConstructingTypes

1 使用GraphQLObjectType 定义type&#xff08;类型&#xff09; 不使用ConstructingTypes定义方式如下&#xff1a; 使用ConstructingTypes定义方式如下&#xff1a; 更接近于构造函数方式 var AccountType new graphql.GraphQLObjectType({name: Account,fields: {name: …

微软Win10 21H2/22H2六月更新补丁KB5039211来了!附完整更新日志

系统之家于6月12日发出最新报道&#xff0c;微软为 Windows 10 用户发布了六月的安全更新补丁KB5039211。对于 21H2 版本的用户&#xff0c;系统版本号将升级至 19044.4529&#xff1b;而对于 22H2 版本&#xff0c;版本号则提升至 19045.4529。此次更新的亮点在于增强了系统的…

批量放大PNG图片至指定像素,画质优先,轻松提升图片品质与视觉体验!

在数字化时代&#xff0c;图片已经成为我们生活和工作中不可或缺的一部分。然而&#xff0c;很多时候我们面临着这样的问题&#xff1a;手头的Png图片尺寸太小&#xff0c;无法满足我们的需求&#xff1b;或者想要将图片放大&#xff0c;却又担心画质受损。别担心&#xff0c;现…

深度学习实战79-ChatTTS实现有感情有笑声的语音,无法分辨是人还是机器的语音

大家好,我是微学AI,今天给大介绍一下深度学习实战79-ChatTTS实现有感情有笑声的语音,本地部署运行,难以分辨是人还是机器的语音。ChatTTS是文本转语音模型,例如LLM助手对话任务。它支持英文和中文两种语言。ChatTTS模型代码已经开源,但是很多人启动不起来,会遇到各种的问…

R可视化:R语言基础图形合集

R语言基础图形合集 欢迎大家关注全网生信学习者系列&#xff1a; WX公zhong号&#xff1a;生信学习者Xiao hong书&#xff1a;生信学习者知hu&#xff1a;生信学习者CDSN&#xff1a;生信学习者2 基础图形可视化 数据分析的图形可视化是了解数据分布、波动和相关性等属性必…

深入浅出通信原理 | 通信系统中的性能指标评估

微信公众号上线&#xff0c;搜索公众号小灰灰的FPGA,关注可获取相关源码&#xff0c;定期更新有关FPGA的项目以及开源项目源码&#xff0c;包括但不限于各类检测芯片驱动、低速接口驱动、高速接口驱动、数据信号处理、图像处理以及AXI总线等 本节目录 一、通信系统中的性能指…

数据结构与算法笔记:基础篇 -递归树:如何借助树来求解递归算法的时间复杂度?

概述 我们都知道&#xff0c;递归代码的时间复杂度分析起来很麻烦。在《排序(下)》哪里讲过&#xff0c;如何用递推公式&#xff0c;求解归并排序、快速排序的时间复杂度&#xff0c;但是有些情况&#xff0c;比如快排的平均时间复杂度的分析&#xff0c;用递推公式的话&#…

远程主机强迫关闭了一个现有的连接redis

引言 在使用 Redis 进行开发和运维过程中&#xff0c;我们可能会遇到 Redis 连接被远程主机强制关闭的情况。本文将介绍造成这种情况的原因&#xff0c;并给出一些处理方法和建议。 远程主机强制关闭连接的原因 远程主机强制关闭连接通常是由于网络不稳定、连接超时、Redis 配…