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

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

61449e05ff679a95da3fc5b56ef995ad.jpeg

痛点

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

可如今的编程实践,早已不是小作坊式的单打独斗,不用「一切从头开始」。大部分情况下,我们都在巨人的肩膀上前行 —— 利用他人编写的基础代码,根据我们的独特需求进行调试,来达成目标。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 帮助我们编写程序的例子。

05eab7684b7ec6491fffacd4c1dd94c7.jpeg

只不过,彼时这些工具要么用起来比较麻烦,要么磨合程度还不够,所以效果并不是非常理想。你让 AI 做一些功能单一的程序出来,效果尚可;一旦涉及到框架比较复杂的情况,AI 编写代码能力往往就捉襟见肘了。

c92c5df4af5d5c435725c8ff95e70245.jpeg

好在,随着技术的进步和软件的打磨,现在 AI 自动阅读文档样例编写符合你需求代码的能力,已经显著提升了。咱们这一篇文章,就为你介绍一下具体实现方法。

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

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

相关文章

【Pytorch】计算机视觉项目——卷积神经网络TinyVGG模型图像分类(如何使用自定义数据集)

目录 一、前言二、工作流程回顾三、详细步骤流程1. 环境配置2. 数据准备数据集下载数据存储结构&路径查看图片 3. 数据转换4. 自定义数据集(Custom Dataset )4.1 方法一:使用ImageFolder加载数据集信息查看张量转图片创建DataLoader 4.2 …

Java Web学习笔记12——JavaScript字符串

String&#xff1a; String字符串对象创建方法有两种&#xff1a; 方式一&#xff1a; var str new String("Hello String"); 方式二&#xff1a; var str "Hello String"; 常见的属性和方法&#xff1a; <!DOCTYPE html> <html lang"…

SwiftUI中ContentUnavailableView的使用(iOS 17、tvOS 17推出的新组件)

iOS 17为SwiftUI带来了一个新的组件ContentUnavailableView&#xff0c;它允许我们向用户呈现一个空状态&#xff0c;而不需要创建自定义错误或者无内容视图。 ContentUnavailableView易于使用&#xff0c;可自定义&#xff0c;并且具有用于空搜索状态的预定义视图。 建议在无…

【C语言】详解函数(下)(庖丁解牛版)

文章目录 1. 前言2. 数组做函数形参3. 函数嵌套调用和链式访问3.1 嵌套调用3.2 链式访问 1. 前言 详解C语言函数(上)的链接&#xff1a;http://t.csdnimg.cn/EGsfe 经过对函数的初步了解之后,相信大家已经对C语言标准库里的函数已经有初步的认知了&#xff0c;并且还学会了如…

设计模式-工厂方法(创建型)

创建型-工厂方法 简单工厂 将被创建的对象称为“产品”&#xff0c;将生产“产品”对象称为“工厂”&#xff1b;如果创建的产品不多&#xff0c;且不需要生产新的产品&#xff0c;那么只需要一个工厂就可以&#xff0c;这种模式叫做“简单工厂”&#xff0c;它不属于23中设计…

nvme-cli常见命令分析

一、背景 nvme-cli命令常常用于获取或者设置SSD参数&#xff0c;比如常见的nvme list&#xff0c;nvme id-ctrl等&#xff0c;都是获取SSD的基本信息&#xff0c;也有nvme admin-passthru用于读取或者设置自定义命令。作为使用者&#xff0c;我们并不知道nvme-cli源码怎么实现…

光波长 深入程度

UV深入程度&#xff08;UVC&#xff0c; UVB&#xff0c; UVA&#xff09;https://mp.weixin.qq.com/s?__bizMzkwNTM0Njk3MA&mid2247483934&idx1&sn92d1ba67ead404e7714af11ec0526786&chksmc0f868ebf78fe1fd0610493e6f49a5d90835a20a829a900746906cda12f2fa12…

ultralytics-极市平台打榜

ultralytics 应用教程 ultralytics简介 UltralyticsYOLOv8YOLOv8 基于深度学习和计算机视觉领域的尖端技术,在速度和准确性方面具有无与伦比的性能。其流线型设计使其适用于各种应用,并可轻松适应从边缘设备到云 API 等不同硬件平台。链接 安装教程 作为第三方python包直接…

hcia datacom学习(12):vlan间路由

不同vlan相当于不同网段&#xff0c;如果vlan间没有三层技术&#xff0c;那么它们就无法互相通信。 vlan间路由可以有3种方式&#xff1a; 1.直接使用路由器转发 *路由器本身不需要额外设置&#xff0c;只需配置端口ip作为网关即可。 *路由器不能处理带有vlan标签的数据帧&a…

springboot3 一些听课笔记(1)

文章目录 一、日志框架二、springboot 自动配置三 、springweb3.13.2 自己编写一个messageconvert3.2.2 如果我们想让其支持yaml格式呢&#xff1f; 一、日志框架 springboot底层 默认使用logbacksjf4j作为日志框架。 1、每个 starter 场景&#xff0c;都会导入一个核心场景 …

10_JavaWeb过滤器

文章目录 过滤器1.过滤器的实现1.1 实现过滤器1.2 配置过滤器1.2.1 过滤器的xml方式1.2.2 过滤器的注解方式 2. 过滤器的生命周期3. 过滤器链使用 过滤器 生活举例: 公司前台,停车场安保,地铁验票闸机 java中过滤仅仅是对请求做出过滤 客户端向服务器发出请求&#xff0c;在服…

Jail管理器AppJail的使用@FreeBSD

Jail的简介 Jail是FreeBSD操作系统中一个功能强大的安全机制&#xff0c;自FreeBSD 4.X版本起便投入使用&#xff0c;并且随着系统的发展&#xff0c;其功能、效率、稳定性和安全性得到了持续的强化。 Jail基于chroot的概念&#xff0c;通过更改一系列程序的根目录&#xff0…

基于包围盒的机械臂防碰撞算法matlab仿真

目录 1.课题概述 2.系统仿真结果 3.核心程序与模型 5.完整工程文件 1.课题概述 基于包围盒的机械臂防碰撞算法。在实际情况中&#xff0c;由于很多对象结构较为复杂&#xff0c;当目标对象与障碍物之间的包围盒相交的时候&#xff0c;而两个物体并不相交。这就需要进一步划…

js 一维数组转多维数组

效果图&#xff1a; //源数组const arrList [{"id": 1,"code": "001","name": "第一个","parentCode": "",},{"id": 2,"code": "00101","name": "第一…

springboot项目中第三方jar包打包进jar包

springboot项目中&#xff0c;如果手动引入了jar包&#xff0c;打包时不会将手动引入的第三方jar包打包进价包里&#xff0c;如何处理&#xff1f; 若第三方的jar包的lib和src同级&#xff0c;则maven打包时默认不会将lib下的jar包打包进jar包&#xff0c;处理方式有两种&#…

Golang | Leetcode Golang题解之第133题克隆图

题目&#xff1a; 题解&#xff1a; func cloneGraph(node *Node) *Node {if node nil {return node}visited : map[*Node]*Node{}// 将题目给定的节点添加到队列queue : []*Node{node}// 克隆第一个节点并存储到哈希表中visited[node] &Node{node.Val, []*Node{}}// 广…

nginx --- 反向代理|负载均衡 | 动静分离

目录 反向代理如何配置 1、反向代理实例一 2、反向代理实例二 ocation 指令说明 Nginx 负载均衡 负载均衡常用算法 应用场景 总结 Nginx实现动静分离 一、什么是动静分离 二、实现方案 三、配置Nginx动静分离 四、验证测试 反向代理如何配置 1、反向代理实例一 实…

视频怎么压缩变小?推荐三个压缩方法

视频怎么压缩变小&#xff1f;在数字时代&#xff0c;视频已成为我们日常生活和工作中不可或缺的一部分。然而&#xff0c;随着视频质量的提升&#xff0c;视频文件的大小也随之增加&#xff0c;这给存储和分享带来了不小的挑战。幸运的是&#xff0c;市面上有许多视频压缩软件…

2024首发!会声会影2024旗舰版,专业编辑新体验!

会声会影2024最新旗舰版是一款专业的视频编辑软件&#xff0c;它集成了多种高级功能&#xff0c;为用户带来极致的视频编辑体验。在这篇文章中&#xff0c;我们将详细介绍该软件的功能和特色&#xff0c;帮助用户更好地了解和使用它。 会声会影全版本绿色安装包获取链接&#…

【简单理解化】 内存函数及它的模拟实现

本文章谈论memcpy,memcmp,memmove,memset函数 目录 1.memcpy的使用和模拟实现 2.memmove的使用和模拟实现 3.memset的使用 4.memcmp函数的使用 1.memcpy的使用和模拟实现 该函数用于从源内存块复制指定数量的字节到目标内存块 1 void * memcpy ( void * destination, const voi…