如何让 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 …

大型ERP设计-业务与功能指引:委托加工二(有偿供料)

委托加工二(有偿提供材料) 前言:在对ORACLE和SAP的核心模块功能全面解读的基础上,给出大型ERP设计的建议-业务与功能指引,企业选型、开发大型ERP软件的公司和ERP顾问可以参考。模块包括财务、计划与制造、供应链、项目…

Android AAudio——C API创建AudioTrack(六)

虽然 AAudio 试图提供一种直接的硬件访问途径,但在某些场景下,如处理兼容性问题、使用系统服务(如 AudioFlinger)或者在某些设备上,使用 AudioTrack 可能是最有效或最合适的途径。这并不违背 AAudio 的初衷,因为它的目标是提供高性能的音频处理,而不是避免使用系统服务。…

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;并且具有用于空搜索状态的预定义视图。 建议在无…

【考研数学】基础到强化如何衔接? 强化阶段该怎么用书?

我的个人经验在强化阶段之前&#xff0c;只需要基本题型都掌握就足够了。 就比如1800基础篇的习题&#xff0c;你盖住答案自己能做对八九成&#xff0c;那就进入强化绝对够够的了。&#x1f609; 强化的时候&#xff0c;你的正确率可能骤降到三四成&#xff0c;但是完全不用慌!…

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

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

C++面试经验分享

C面经 文章目录 C面经智能指针**内存泄露与智能指针****智能指针有什么类型&#xff0c;各自的原理有什么区别 / 解释下智能指针的实现原理****shared_ptr怎么实现多指针指向同一个地址****引用计数如何保证不同类实例的指针之间共享同步****循环引用会在什么情况下产生&#x…

MATLAB基础应用精讲-【数模应用】二元Logit分析(补充篇)(附python和R语言代码实现)

目录 几个高频面试题目 Logistic与多重线性回归区别 什么情况下用Logistic回归 算法原理

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

创建型-工厂方法 简单工厂 将被创建的对象称为“产品”&#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包直接…

深入探讨Python高级技术

Python作为一种广泛应用的编程语言,以其简洁、易读和强大的功能著称。在高级应用中,Python不仅在数据科学、人工智能和自动化等领域大放异彩,还在性能优化、异步编程和元编程等方面表现出色。本文将深入探讨Python高级技术,包括但不限于性能优化、多线程与多进程编程、异步…

c#通过sqlsugar查询信息并日期排序

c#通过sqlsugar查询信息并日期字段排序 public static List<Sugar_Get_Info_Class> Get_xml_lot_xx(string lot_number){DBContext<Sugar_Get_Info_Class> db_data DBContext<Sugar_Get_Info_Class>.OpDB();Expression<Func<Sugar_Get_Info_Class, b…

RuoYiConfig新增一个路径存储用户头像

/** 上传头像路径 */ private static String userAvatar; public static String getUserAvatar() {return userAvatar; }public void setUserAvatar(String userAvatar) {RuoYiConfig.userAvatar userAvatar; } /*** 获取头像上传路径*/ public static String getUserAvata…

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

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

IP、掩码、网关、DNS1、DNS2到底是什么东西,ping telnet测试

IPV4里面的IP、掩码、网关、DNS1、DNS2到底是什么东西?请用通俗的大白话来解释,让农民都能看懂 好的,我来尝试用大白话解释一下IPV4里面的IP、掩码、网关、DNS1、DNS2是什么东西。 首先,我们可以把互联网想象成一个巨大的农村,每个家庭(电脑或设备)都需要有一个地址,这…

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;在服…