2026年11月08日 欢迎访问 读到
首页 / 小说书库 / AI辅助编程实战 / 正文
点评
第6章 ChatGPT和其他通用LLM

本章将深入探讨一些被广泛采用的LLM,它们同样具备编写代码的能力。虽然这些模型可能不具备专业辅助编程模型的所有功能,例如与IDE的集成、全面的安全保障措施,以及用于防止模型训练代码泄露的保护机制,但它们在编程领域的应用仍然具有划时代的意义。此外,这些模型在软件规划和头脑风暴方面也显示出巨大的潜力。

本章将详细介绍ChatGPT、Gemini和Claude等知名的聊天机器人,包括它们的设置方法、成本结构、所拥有的创新功能,以及如何有效利用这些工具来最大化它们的效用。

ChatGPT(Chat Generative Pretrained Transformer)于2022年11月30日公开发布。尽管OpenAI作为背后推手并没有在营销上进行大规模宣传,但ChatGPT凭借卓越的性能迅速赢得广泛关注。实际上,OpenAI没有必要进行额外宣传。ChatGPT强大的实力足以让它在短时间内声名鹊起。

在推出后的短短5天,ChatGPT就吸引了100万用户。仅仅几个月的时间,ChatGPT的用户规模就急剧增长至1亿,成为互联网历史上用户规模增长最快的平台。

OpenAI的策略制定者Sandhini Agarwal指出:“对我们所有人来说,有这么多人开始使用ChatGPT确实是一个惊喜。我们在模型上投入了大量的精力,但有时会忘记它们给外界带来的震撼。”

截至2023年9月,ChatGPT的访问量已超过15亿次,收入也从2022年的2800万美元激增至12亿美元。然而,这一增长并不仅仅由ChatGPT自身驱动,OpenAI的API业务也在快速增长。

接下来,我们将简要介绍OpenAI的成长背景。OpenAI成立于2015年,其得到了硅谷重量级人物的支持,包括Elon Musk、Sam Altman、Greg Brockman、Ilya Sutskever、John Schulman和Wojciech Zaremba。他们计划投入高达10亿美元的资金来推动OpenAI的发展。

OpenAI最初是一个非营利组织,拥有浓厚的学术氛围,员工大多是数据科学和人工智能领域的博士。OpenAI的使命是实现通用人工智能(Artificial General Intelligence,AGI),也就是让机器在大多数重要任务中超越人类的智能。OpenAI的目标包含利他主义元素:利用AGI造福更广泛的人群,并避免任何可能造成伤害或赋予少数人过多权力的应用。

早期的OpenAI专注于研究并分享其研究成果。OpenAI曾与其他机构合作,公开其专利和代码。然而,开发尖端的生成式AI系统的成本是巨大的。

为了维持其宏伟愿景并吸引合适的人才,OpenAI在2019年转型为一家营利性公司。这使他们能够合法地从风险投资基金和战略投资者那里筹集资金,同时也能够为员工提供激励。同年,微软公司投资了10亿美元。在随后的几轮投资中,微软公司的总投资额达到约30亿美元。2023年4月,微软公司进一步加大投资力度,对OpenAI投入高达100亿美元的资金。

OpenAI的GPT-4在代码生成方面表现出卓越的多功能性,这得益于其广泛而多样化的训练数据。这种广泛的训练让GPT-4在多个专业和学术基准测试中的表现达到与人类相媲美的水平,而且在大多数编程语言中,GPT-4的表现都优于其前身GPT-3和GPT-3.5。这一成就主要归功于GPT-4在理解和执行自然语言中的复杂指令,以及生成更深入的技术或创意作品方面的能力得到显著增强。此外,GPT-4拥有的32K上下文窗口也是其成功的关键因素之一。

特别值得一提的是,在针对特定代码生成基准的评估中,集成了Reflexion框架的增强版GPT-4在HumanEval基准测试上的通过率高达88%,这一成绩明显超过基础版本的GPT-4,后者的通过率为67%。这一结果表明,经过适当的改进,GPT-4完全有能力在代码生成任务中展现出顶尖水平。

在与Codeforces平台上的竞技编程场景进行比较时,GPT-4的得分为392分,相较于GPT-3.5的260分有所提高。尽管GPT-4在竞技编程领域取得了显著进步,但其得分仍然位于倒数5%的行列。这说明GPT-4虽然在编程竞赛方面已经取得长足的进步,但要达到与人类技能相匹敌的水平,仍有很长的路要走。

本节将向你展示ChatGPT的高级版本——ChatGPT Plus,它是一个每月需要付费20美元的订阅服务。ChatGPT Plus具有如下功能。

始终在线

即使在高峰时段,所有用户都在使用ChatGPT时,ChatGPT Plus用户也能获得优先访问权。

快速回复

对于ChatGPT Plus用户,所有的响应都变得更迅速。这意味着可以更快地获得答案,享受更流畅、更愉快的聊天体验。

优先体验新功能

当有令人兴奋的新功能或升级推出时,ChatGPT Plus用户将有机会率先尝试。

访问最新模型

ChatGPT Plus用户可以访问OpenAI最新的模型,从而始终处在技术进步的最前沿。

图6-1展示了ChatGPT的界面。

在界面的左上方,将鼠标指针悬停在下拉菜单上,便可以选择所需的模型或访问插件商店。

在界面的左侧,用户可以通过单击按钮快速创建新的聊天会话。

界面的底部展示了用户配置文件。在这里,用户可以查看ChatGPT计划、更改个人设置和添加自定义说明。

用户还可以根据个人喜好更改界面的主题,选项包括系统默认及深色和浅色模式。

在底部的输入框中输入提示,即可与ChatGPT进行互动。

图6-1 ChatGPT的界面

接下来我们尝试一下ChatGPT的功能。首先,输入以下提示来创建代码。

提示:编写一个计算数字阶乘的Python代码片段。

ChatGPT的响应如图6-2所示。

图6-2 ChatGPT创建了一个Python代码片段来响应提示

然后输入以下提示询问是否有其他可以创建这段代码的方法。

提示:创建这段代码的另一种方法是什么?

ChatGPT提供了另一种代码建议,即迭代法。如果你不知道迭代法,可以继续聊天。如图6-3所示,聊天会话记录在界面左上方。ChatGPT将聊天标记为“计算数字阶乘”。如果需要,可以单击旁边的图标进行重命名。当然,还有一个删除图标用于删除会话。

图6-3 ChatGPT在界面左上角记录聊天会话

如果想要创建一个新的会话,单击界面顶部的铅笔图标,就会出现一个空白的聊天界面。

请记住,每个会话都是相互独立的。如果你在后续添加的会话中向ChatGPT询问它为阶乘计算创建的代码,ChatGPT将不知道具体是什么内容。

另外一个需要注意的地方是聊天会话的上下文窗口。上下文窗口决定了模型能“记住”多少之前的对话或文本内容,并用于生成连贯且与上下文相关的回复。对于GPT-3.5,上下文窗口为16K;但对于GPT-4,上下文窗口为32K。

如果想删除所有聊天主题,可以单击界面左下角的个人资料,选择Settings & Beta(设置和测试版),然后单击Delete all chats(清除所有聊天)旁边的Delete all(清除所有)按钮。

在ChatGPT中,想访问和管理自己的数据,你需要单击界面左下角的个人资料,然后选择Settings & Beta,你将看到关于ChatGPT数据的多种管理选项。

关闭聊天记录和模型训练

如果关闭聊天记录,则新的聊天记录不会被用于训练AI模型,也不会显示在侧边面板的历史记录中。OpenAI会将所有聊天记录保留30天,之后永久删除。

分享聊天记录

你可以将有趣的话题转为链接并与其他人分享。

下载聊天数据

选择这个选项后,你将收到一封包含所有ChatGPT对话的电子邮件。

有时,ChatGPT会在生成文本的过程中停止。当出现这种情况时,通常会弹出Continue(继续)按钮。单击该按钮将继续生成文本。如果没有按钮弹出,你可以输入提示Continue Output(继续输出)。如果生成的文本没有达到你的要求,可以单击Stop Generating(停止生成)按钮。

ChatGPT在iOS和Android设备上都得到了支持,这使得用户在移动平台上也能享受到与网页版ChatGPT相似的体验。虽然移动版ChatGPT目前尚未集成插件等高级功能,但它依然保留了核心的聊天功能。

对于那些不喜欢在小屏幕上输入文字的用户,移动版ChatGPT提供了一个便捷的解决方案——语音聊天。用户可以在设置中找到并打开New Features(新功能)选项,选择加入语音聊天功能。一旦启用,用户只需要单击主屏幕右上角的耳机图标,就可以开始与ChatGPT进行语音交流。

移动版ChatGPT的语音系统非常先进,它支持5种不同的语音选项,用户可以根据个人喜好选择其中一种进行对话。这一功能的实现归功于一个名为Whisper的生成式AI文本转语音模型,它能将文本转换为自然流畅的语音并输出。

此外,移动版ChatGPT还提供了一个创新的功能——照片分享。用户可以随时随地拍摄照片,无论是物体、地标还是代码,并通过应用与ChatGPT分享,从而丰富聊天内容。移动版ChatGPT内置的绘图工具还能让用户在聊天时突出显示图片的特定部分。

在ChatGPT中,自定义指令功能让用户能够根据特定的需求来调整机器人的回复方式。这个功能的存在意味着用户不再需要在每次与机器人交流时都重新微调回复或构思新的提示,从而大大节省时间。

设置自定义指令时,需要回答以下两个问题。

ChatGPT:为了提供更好的回复,你希望ChatGPT了解你的哪些信息?

ChatGPT:你希望ChatGPT如何回复?

下面是示例。

ChatGPT:为了提供更好的回复,你希望ChatGPT了解你的哪些信息?

开发者:我是一名开发者,我所在的团队遵循Python代码PEP 8风格指南。我们重视代码的简洁性、可读性,并坚持最佳实践。我通常从事数据处理和分析工作,在编写高效、结构合理的代码方面经常需要帮助。

ChatGPT:你希望ChatGPT如何回复?

开发者:我希望ChatGPT提供符合PEP 8风格指南的Python代码片段。ChatGPT应优先考虑代码的可读性和最佳实践。在提出解决方案时,我希望ChatGPT能解释为什么推荐某种特定的方法,以及这种方法是如何与PEP 8风格指南保持一致的。如果ChatGPT能指出与当前任务相关的常见陷阱或错误,并提供规避这些缺陷和错误的提示,我将不胜感激。

ChatGPT的训练数据截至2023年4月,这对开发者来说可能存在一定的局限性。由于代码库、框架和工具的更新换代速度极快,2023年4月之后推出的新特性或功能可能不会被ChatGPT知晓。

在使用ChatGPT时,一个实用的技巧是使用必应浏览功能。通过这个功能,你可以实时搜索互联网,获取最新的信息和答案。

以尝试新框架LangChain为例,自2022年年底推出以来,LangChain已经得到显著的发展和改进。LangChain旨在简化LLM在应用开发中的集成过程,这有可能非常适合你的需求。

为了增强ChatGPT对LangChain当前状态的了解,你可以激活“使用必应浏览”功能,并在提示中加入“Use Internet for this response”(使用互联网进行回复)的请求。以下是一些提示范例,用于获取LangChain的一般信息。

提示:介绍LangChain框架及其主要功能。使用互联网进行回复。

提示:在互联网上查找有关LangChain入门的介绍性资源或文档。

提示:在互联网上查找使用LangChain框架构建的应用示例。

提示:查找与LangChain框架相关的最新更新或版本。使用互联网进行回复。

在回答上述提示时,ChatGPT确实提供了相当有用的答案。例如,对于第一个提示,ChatGPT给出了LangChain的5个主要功能和模块,如图6-4所示。

图6-4 使用必应浏览功能帮助ChatGPT研究LangChain框架的主要功能和模块

你还可以更改响应的输出格式,例如下面的提示。

提示:请用一个表格来展示回答。

ChatGPT的响应如图6-5所示。

当使用必应浏览功能时,ChatGPT可能需要几秒到1分钟甚至更长时间来生成回复。在某些情况下,ChatGPT可能暂时无法响应并显示错误信息,这时你可能需要尝试好几次才能获得答案。这种不稳定性是你在使用ChatGPT时需要注意的问题。

图6-5 ChatGPT将回复转换为表格形式

在使用必应浏览功能时,输出结果通常会附带一个指向信息源的网络链接。单击该链接以验证信息的真实性和准确性是一种明智的做法。你应该审慎对待ChatGPT提供的所有内容,特别是当回复的内容可能来自社交媒体帖子等非可靠信息源时。

幸运的是,你可以指示ChatGPT专注于从特定类型的信息源获取信息。表6-1提供了一些有用的提示和建议,以帮助你更有效地使用这一功能。

表6-1 指示ChatGPT使用特定信息源的方法

下面的示例展示了ChatGPT为LangChain创建代码的能力。这是一个针对简单程序的提示。

提示:编写一个使用LangChain框架的Python程序。它需要具备以下功能。

1. 接收用户关于特定主题的输入。

2. 允许用户选择要创建的内容类型:博客文章或社交媒体帖子。

3. 利用LangChain访问OpenAI API,并根据用户输入的主题生成博客文章或社交媒体帖子。

然而,当笔者尝试在ChatGPT中实现这一功能时,结果并不尽如人意。虽然ChatGPT能够提供基本的Python代码结构,这是意料之中的,但它在处理LangChain的代码时却出现了问题。ChatGPT在导入LangChain库时犯了错误,并且遗漏了一些必要的步骤。此外,ChatGPT未能展示如何正确调用OpenAI API。

尽管如此,使用必应浏览功能对于解决日常问题和获取一般信息仍然非常方便。

软件开发是一个包含多个步骤的复杂过程,涵盖规划、编程和测试等环节。在这一过程中,重复性的编程任务尤为令人头疼——它们不仅枯燥乏味,还极其耗时。开发者常常发现自己陷入了编写常规代码、调试错误和审查代码的循环中,这些工作虽然重要,却并非软件开发中最具乐趣和创造性的部分。

AI工具(如ChatGPT)能够为这些单调乏味的软件开发问题提供解决方案。在接下来的内容中,我们将深入探讨这些工具在软件开发中的一些应用。

正则表达式(Regular Expression,简称regex)是一种强大的文本处理工具。你可以把它们想象为一种高级的查找和替换功能,用于识别字符串中的特定模式。但挑战在于,学习regex就像学习一种全新的语言,它由各种符号和命令组成,这可能会让人觉得相当棘手。要记住所有复杂的斜杠、点、括号及其他看似神秘的组合,确实会让人感到困惑。有时,你可能觉得自己需要一个解码器才能理解这些表达式。

例如,考虑如下正则表达式。

^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[@$!%*?&])[A-Za-z\d@$!%*?&]{8,}$

这个正则表达式用于验证强密码,确保密码至少包含8个字符,且包括至少一个大写字母、一个小写字母、一个数字和一个特殊字符。

编写这样的正则表达式可能看起来并不那么有趣。但是,ChatGPT可以在这方面提供帮助,以下是一些常见示例。

提示:请生成一个用于验证标准电子邮件地址的正则表达式。电子邮件地址应该以字母或数字开头,之后可以跟点号、连字符或下画线。紧接着是@符号,其后应有字母或数字字符或点号,最后是一个长度为2~6个字符的域名。

regex模式:^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,6}$

提示:请生成一个正则表达式以验证URL。有效的URL应起始于http或https,随后紧跟“://”。域名部分应由字母、数字字符及点号组成。域名之后可以跟一个可选的路径,该路径以“/”开头,并且可以包含字母或数字字符、斜杠、点号或连字符。此外,URL可以选择性地以“/”结束。

regex模式:^(https?:\/\/)?([\da-z.-]+)\.([a-z.]{2,6})([\/\w.-]*)*\/?$

提示:请生成一个正则表达式以验证符合MM/DD/YYYY格式的日期。应确保月份在1~12的范围内,日期在1~31的范围内,年份则在1900~2000的范围内。

regex模式:^(0[1-9]|1[0-2])\/(0[1-9]|[12][0-9]|3[01])\/(19|20)\d\d$

提示:请生成一个正则表达式以验证IPv4地址。应确保每个8位组是0和255之间的数字,并且各8位组通过点号分隔。

regex模式:^(25[0-5]|2[0-4]\d|[0-1]?\d\d?)\.((25[0-5]|2[0-4]\d|[0-1]?\d\d?)\.){2}(25[0- 5]|2[0-4]\d|[0-1]?\d\d?)$

ChatGPT还可以解读正则表达式。例如下面的提示。

提示:下面这个正则表达式有什么用?^(\(\d{3}\)\s?|\d{3}[-.])\d{3}[-.]\d{4}$

ChatGPT的回应是:这个正则表达式用于匹配北美电话号码的格式。

入门代码(Starter Code)是指最初的代码片段或模板,它为项目提供了一个稳固的起点。它不仅可以显著节省开发时间,还能作为一种有效的学习工具。对于编程初学者,研究和探索入门代码有助于理解编程概念和工作机制。此外,入门代码还有助于维持项目中代码的一致性,这在需要团队成员遵循统一编码标准的大团队中尤为重要。

例如下面的代码。

const express = require('express');

const app = express();

const port = 3000;

app.get('/', (req, res) => {

 res.send('Hello, World!');

});

app.listen(port, () => {

 console.log('Server running at http://localhost:${port}');

});

上述代码展示了如何使用Express.js构建一台基础的Web服务器,这是一个清晰而简洁的示例。Express.js作为一个流行的Web框架,以简洁著称。这段代码虽然简单,但涵盖了创建基本Web服务器所需的核心元素,非常适合作为入门代码。表6-2列举了一些入门代码的提示范例。

表6-2 入门代码的提示范例

README文件本质上是项目的介绍信。通过这个文件,你可以快速了解项目的核心内容:项目的用途、工作原理以及如何使用项目。README文件通常命名为README.md,使用Markdown格式编写,以确保文件既美观又易于阅读。在项目的仓库主页上,README文件总是被显眼地展示出来。

一个写得好的README文件至关重要,它能够帮助所有访问项目的人迅速把握项目概览。无论是想要使用项目的用户还是希望为之贡献代码的开发者,README文件都为他们理解项目奠定了基础,使项目更加易于理解和上手。同时,它还规定了项目的规则和期望,为参与者提供了明确指导。

编写README文件并非易事。你必须在提供所有必要细节与保持内容简洁之间找到平衡。专注于技术的开发者可能会忽略一些重要部分,因为他们可能没有意识到,对他们来说显而易见的细节对其他人来说可能并不那么明显。

编写一个好的README文件确实需要一定的写作技巧,而这并不是开发者的强项。随着项目的不断发展和变化,保持README文件不断更新也是一个挑战,这就是所谓的“既要……又要……”的情况。

ChatGPT不仅简化了编写README文件的过程,还能提供内容丰富的文本。假设你刚刚创建了一个搜索食谱的应用程序,你可以使用以下提示来生成README文件。

提示:为我的“食谱搜索器”项目撰写README文件。该项目采用Vue.js进行开发,旨在根据用户手头的食材帮助他们找到相应的食谱。用户需要输入他们手头的食材,应用程序将返回一个他们能用这些食材制作的食谱列表。要启动应用程序,只需要复制源码仓库,执行命令npm install,在.env文件中插入API密钥,然后执行npm start命令即可。

根据这个提示,ChatGPT会创建一个包含项目介绍的README文件,其中包括功能介绍、入门指南、使用说明、贡献方式、许可证和致谢等部分。

对于README文件中的某些内容,ChatGPT会做出一些假设,比如假定项目采用MIT许可证。你可以通过提供更多的项目细节来引导ChatGPT,以生成更符合项目需求的README文件。

如果你不知道使用哪种开源软件许可证,请查看choosealicense网站。该网站可帮助你选择合适的开源软件许可证。

跨浏览器兼容性是指确保网站或Web应用程序能够在各种不同的浏览器中正常工作的能力。这一能力至关重要,因为用户访问网站或应用程序时可能会使用Chrome、Firefox、Safari、Edge等浏览器,而这些浏览器各自有着不同的版本和特性。

表6-3列出了一些关于浏览器兼容性的提示,以应对跨浏览器兼容性方面的挑战。

表6-3 关于浏览器兼容性的提示范例

在终端,与计算机系统交互的指令被称为bash命令。这些命令可以执行多种任务,包括移动文件、查看系统状态等。

对于UNIX/Linux操作系统的新手,掌握bash命令可能会显得有些困难。某些命令的语法可能难以理解,需要时间来熟悉。要精通bash命令,应持续学习和实践。此外,由于bash命令种类繁多,每种命令都带有自己的选项和变体,这进一步增加了学习的复杂性。尽管互联网上的许多资源可以提供帮助,但即使是经验丰富的专业人士,也可能难以记住那些不常用或新学的命令。

不过,ChatGPT可以作为你的bash命令虚拟助手,帮助你更有效地使用这些命令。以下是一些提示范例。

提示:如何使用bash命令按修改时间排序列出目录中的所有文件?

提示:计算文件内行数的bash命令是什么?

提示:如何使用一个命令创建一个目录并导航到该目录?

提示:如何将命令输出重定向到文件?

提示:搜索系统中正在运行的特定进程的命令是什么?

提示:如何使用bash命令将目录压缩成ZIP文件?

提示:使用什么bash命令来更改文件的权限?

GitHub Actions是GitHub内置的一个持续集成和持续部署(Continuous Integration and Continuous Deployment,CI/CD)的平台,它让开发者能够在自己的软件仓库中直接配置、定制并执行软件开发工作流程。本质上,GitHub Actions的工作流程是一系列定义在工作流文件中的自动化任务。这些自动化任务由不同的作业(job)构成,每个作业执行特定的任务,比如执行命令、设置环境或执行特定的操作。它们使用YAML语法编写,并在特定的触发事件(如代码推送、问题创建或定时调度)发生时自动启动。

通过GitHub Actions,开发者可以在GitHub上直接进行代码构建、测试和部署,这使得软件开发过程更加高效和自动化。此外,GitHub Actions支持共享和重用action,甚至允许定制其他开发者创建的action,这对于团队协作和共享自动化软件开发的最佳实践非常有帮助。

ChatGPT可以帮助你创建GitHub Actions工作流模板。以下是一些提示范例。

提示:创建GitHub Actions工作流模板,使用Hugo构建和部署一个静态网站,然后将这个静态网站部署到GitHub Pages。

提示:为一个使用Maven的Java项目生成GitHub Actions工作流模板,其中包含编译代码、运行测试和打包应用程序的步骤。

提示:创建GitHub Actions工作流模板,用于容器化应用程序,其中包含构建Docker镜像,以及将Docker镜像推送到Docker Hub并部署到Kubernetes集群的步骤。

提示:为React Native移动应用程序生成GitHub Actions工作流模板,其中包含安装依赖项、构建应用程序,以及将APK上传到指定Google Drive文件夹的步骤。

ChatGPT插件是利用了OpenAI LLM功能的迷你应用程序,它们为用户打开了与外部数据库和应用程序交互的大门,让用户在iOS或Google Play上拥有了自己的小型应用程序商店。

在开始使用ChatGPT插件之前,你需要确保已经启用了这一功能。首先进入“个人资料”界面,然后选择Settings(设置)菜单,最后选择Beta Features(测试版功能)命令。

将鼠标指针悬停在界面顶部的GPT-4图标上,从下拉菜单中选择Plugins(插件)命令,便可以浏览和访问众多可用的插件。单击“插件”按钮后,你将看到类似于图6-6所示的界面,你可以根据需要选择和激活不同的插件来扩展ChatGPT的功能。

图6-6 ChatGPT插件商店

下面我们尝试使用Codecademy插件的功能。首先单击“安装”按钮进行Codecademy插件的安装。安装完成后,移至界面顶部,单击向下箭头按钮,然后单击Codecademy图标以激活Codecademy插件。

Codecademy插件提供如下两大核心功能。

·个性化课程推荐:Codecademy插件允许用户根据自己的学习目标和经验水平搜索特定的课程或学习路径。例如,对AI和ChatGPT感兴趣的用户可以向Codecademy插件询问相关的课程推荐。Codecademy插件将根据用户的需求提供一份课程列表,里面包括课程描述以及课程是免费还是付费的信息。

·技术文档快速索引:Codecademy插件作为技术文档的快速索引工具,为用户提供了更详细的文档和文章链接。

为了测试Codecademy插件的文档功能,可以使用以下提示。

提示:解释JavaScript数组的最佳文档或文章是什么?

ChatGPT的响应如图6-7所示。顶部的图标表明系统正在访问Codecademy插件,随后的文字显示了关于该主题的多份资源。紧接着ChatGPT提供了一些最相关的文档链接,以帮助用户快速找到所需的信息。

图6-7 Codecademy插件响应关于JavaScript数组资源的请求

Sheldon Niu是AskYourDatabase插件的创意发起人。他经常利用ChatGPT编写SQL语句,但这个过程往往烦琐且效率低——每次都需要向ChatGPT解释整个数据库的架构,并复制和粘贴输出结果到终端后再执行。这激发他产生了一个想法:“如果ChatGPT能够直接与数据库进行交互,那将会怎样?”正是这个想法促使他开发了AskYourDatabase插件。

借助AskYourDatabase插件,用户可以便捷地通过ChatGPT创建数据库模式原型。它简化了数据库查询过程,使得用户能够轻松地与数据库进行交互。更棒的是,用户可以绕过那些需要复杂设置的传统商业智能工具,直接通过自然语言与数据库进行沟通,极大地提升了工作效率。

Mark Zahm是一位开发者,他成立了自己的AI咨询公司。为了帮助开发者在使用GitHub和GitLab仓库时提升效率,他开发了Recombinant AI插件。这个插件使得ChatGPT能够把握整个程序的核心要点,并过滤不必要的细节。如此用户可以更有效地掌握自己的代码,无论是进行调整、分析还是将新想法融入软件中。Mark将这个插件形容为“会话式IDE”,这一描述非常准确地概括了其功能。

以下是Recombinant AI插件的一些应用示例。

·执行传统任务,例如存储代码片段或编程提示。

·利用项目和文件系统,创建复杂的任务列表和CoT提示,帮助用户组织和规划开发工作。

·保存关于最新代码库的重要信息,确保用户能够及时获取和应用新技术。

可以对ChatGPT进行个性化定制,这个过程称为自定义GPT。定制过程非常简便快捷,通常只需要几分钟即可完成。

例如,可以为软件开发风格指南创建一个GPT,其中包含一些基本原则。例如,如何命名变量以确保每个人都能理解和使用正确的代码缩进方法,以及团队应遵循的特定编程模式或实践。

创建这样一个模板的目的是保持代码库的统一性和整洁性,使每个人都能更容易地阅读和理解代码。在大型项目中,统一的编码风格可能是确保项目可维护性的关键。

统一编码风格可能带来的问题是,新加入的成员可能会感到困惑,尤其当他们已经习惯了不同的编程方式,突然之间又需要适应新的标准时。

GPT在这种情况下可以提供巨大帮助。首先在ChatGPT主界面的左上角选择Explore(探索)菜单,然后选择Create a GPT(创建一个GPT)命令。如图6-8所示,你会看到两个面板。

图6-8 使用GPT生成器创建自定义GPT

左侧面板用于创建GPT,而右侧面板是预览区。为了使GPT与软件开发风格指南相匹配,你可以使用以下提示。

提示:创建一个强制执行软件开发风格指南的系统。

ChatGPT将引导你开始创建GPT。虽然初始提示可能不够具体,但ChatGPT会通过提出问题来收集更多必要的信息。它会首先建议一个GPT名称,比如“Code Stylist”。

接下来,ChatGPT会利用DALL·E 3来创建GPT的个人资料图像,你也可以选择上传自己的图像。之后,它会询问关于编程语言、最佳实践、指南、规则、应避免的事项等更详尽的信息。例如,你可以指定使用Python语言,并提供一些特定的要求。

在左侧面板的顶部选择Configure(配置)选项卡,上传你的软件开发风格指南文档。这样当你在右侧面板中测试GPT时,如果要求编写代码,GPT就会自动采用Python语言并遵循你设定的规则。

完成设置后,单击右上角的保存图标来保存你的GPT。保存成功后,它将出现在ChatGPT的主界面上。单击GPT图标即可开始使用它。

OpenAI还为自定义GPT创建了应用商店。在ChatGPT主界面的左上方选择Explore GPTs(探索 GPT)命令,即可进入应用商店。

在应用商店中,你会发现很多编程类别。以下是一些可用的GPT示例。

·GPTavern:这是一个创新平台,旨在通过一种称为prompt-gramming的独特方法来教授编程。它提供二十多个快捷键来简化编程,并提供75个入门项目来帮助用户学习编程。该平台是互动式的,允许用户提问、上传图片、访问命令菜单和README文件以获得指导。

·DesignerGPT:由Pietro Schirano开发,专门用于创建和托管美观的网站。

·Screenshot To Code GPT:由godofprompt.ai提供,允许用户上传网站截图,然后转换成简洁的HTML、Tailwind和JavaScript代码。

·Mindmap/Diagram/Chart-PRO BUILDER:由pyxl.ai提供,旨在帮助用户进行代码和数据库的可视化。它允许用户使用拖放编辑器创建流程图、图表和序列,以理解和组织复杂的数据结构。

·Code Guru:由Ryan J. Topps开发,提供一系列服务,包括审查代码、编写拉取请求、生成和优化函数、编写测试以及对现有代码进行注释等。

在ChatGPT的主界面上选择Actions(操作)菜单,即可在你的GPT中包含第三方API。

尽管Google在人工智能领域早有涉猎并进行了重大投资,但对于生成式AI的兴起,Google似乎尚未做好准备。Google对于踏入这一新兴技术领域持谨慎态度——担心准确性问题以及由此可能对公司利润丰厚的广告业务造成的影响。然而,到了2023年初,Google的股价遭遇下跌,这促使情况发生变化。Google决定采取行动,推出了自己的生成式AI产品——Bard。起初,Bard遭遇了一些挑战,但它随后逐渐找到自己的节奏,并在Google的多个应用中发挥作用,Google的股价实现反弹。

到了2024年2月,Google将Bard更名为Gemini,并推出了其高级版本——Gemini Advanced。Gemini Advanced提供两个月的免费试用期,之后每月收费19.99美元。Gemini采用了Google最先进的LLM——Ultra 1.0,Google称“它能够帮助你处理更高级的编程场景,成为你思维的共鸣板,并协助你评估不同的编程方法”。

Google还为Android和iOS平台推出了移动版的Gemini。在移动版Gemini中,用户可以通过打字、语音或图像与LLM进行互动。图6-9展示了Gemini的用户界面。

图6-9 Gemini的用户界面

与ChatGPT类似,界面左侧设有一个聊天会话列表。如果用户希望隐藏这个列表,只需要单击界面顶部的汉堡包图标即可。对于任何一个聊天会话,用户都可以通过单击会话旁边的小图标来重命名或删除聊天。另一个非常实用的功能是,用户可以将经常需要参考的聊天记录固定在易于访问的位置。

像Excel和Google Sheets这样的生产力增强应用程序,并不仅限于处理电子表格,它们还拥有各自的编程语言来扩展功能。以Excel为例,它配备了Visual Basic for Applications (VBA),这是一个功能强大的编程系统,允许用户编写自己的脚本和程序。VBA非常适合自动化常规任务、创建自定义函数以及进行数据分析。Excel还内置了许多现成的功能,如数据透视表(PivotTables)和Power Query,并且支持与Power BI集成,以实现高级的数据可视化和分析。

Google Sheets可以与Google Apps Script配合使用,后者可以看作JavaScript的一个变体。Google Apps Script使在Google Sheets中执行与Excel类似的任务成为可能。此外,Google Sheets还能与Google Drive和Gmail等其他Google应用无缝集成。Google Sheets提供了一套即用型功能,用户可以在Google Workspace Marketplace上探索和使用不同的插件以增强其能力。由于Google Sheets完全基于云,因此它非常适合你与他人协作,是Web应用程序和团队项目的可靠选择。

那么,Gemini在这样的背景下能提供什么帮助呢?可以利用Gemini来解释公式——即使是相当复杂的公式也能解释。以下示例展示了如何使用Gemini来解释Excel或Google Sheets中的公式。

提示:解释Excel公式SUM(OFFSET(A1,1,0,COUNT(A:A),1))。

对于Gemini,理解上述公式完全没有问题。

另一个示例是创建VBA脚本。下面是一些实用的提示范例。

提示:如何使用VBA在Excel中创建自定义表单来输入用户登录详情?

提示:你能帮我编写一个Excel VBA脚本,用密码保护特定数据吗?

提示:我需要用VBA代码来验证Excel用户登录表中的电子邮件地址和日期格式。你能提供帮助吗?

提示:能否使用VBA从Excel自动发送电子邮件通知,获取有关用户登录信息的更新情况?

虽然Gemini在响应提示方面表现出色,但在使用电子表格时,理解数据、公式和脚本之间的相互关系至关重要。掌握这些元素之间的关系可以帮助你构建功能强大且稳定的模型。当你更改数据中的某些内容时,这些变化会传递到相关的公式,并可能影响脚本的输出,最终导致结果发生重大变化,而这一切可能在你意识到之前就已经发生。

幸运的是,Gemini支持加载和分析Excel电子表格。你可以针对电子表格向Gemini提出问题,比如逐步探索数据和逻辑,或者强调数据或逻辑的特定方面。

假设你有一个包含图书销售数据的Excel电子表格,以下是一些可能的提示范例。

提示:你能展示如何在Excel中找到一位作者赚取的最高版税金额吗?

提示:我想在Excel中计算每本书的库存周转率。我应该使用什么公式?

提示:我如何在Excel中创建一个库存短缺警报,以根据补货水平提示何时补货?

提示:如何在Excel中计算好评(评分达到4分及以上分数)图书的占比?

Gemini能够理解20多种计算机编程语言。让我们通过以下提示来看看Gemini的编程能力。

提示:生成一个将摄氏温度转换为华氏温度的TypeScript函数。

Gemini的响应如图6-10所示。

图6-10 Gemini对创建TypeScript函数的请求的响应

在图6-10所示界面的右上角,有一个Show drafts(显示草稿)选项。启用这个功能后,你将能够查看Gemini给出的3个版本的回复。这些回复能够为你完成编程任务提供更丰富的思路和选择。

与ChatGPT一样,Gemini的回复中包括了代码清单,你可以直接复制其中的代码。Gemini还提供了代码解释。

图6-11显示了处理响应的几种方法。

图6-11 单击底部的图标,即可使用不同的选项处理Gemini的响应

处理选项如下。

评价

通过单击大拇指图标进行“赞成”或“反对”,对响应的质量提供反馈。

修改回复

单击筛选器图标,可以选择调整回复的长度、复杂度、风格,让回复变得更简洁、更详尽、更通俗易懂或更专业。

分享

可以将回复以公开链接方式共享,还可以将回复导出到Google文档或保存为Gmail草稿。

仔细检查回复

单击Google公司LOGO,Gemini将审查回复的准确性,还有可能提供支持链接。

早在2021年,Dario和Daniela兄妹就成立了自己的初创公司Anthropic。他们曾是OpenAI的核心人物。然而,他们想要创建一个与众不同的生成式AI平台,愿景是让AI更安全,比如尽量减少偏见。他们的想法最终孕育出宪法人工智能(Constitutional AI)的概念。

Anthropic的LLM具有很强的编程技能。它的一个Python编程测试在Codex HumanEval上的得分率高达71.2%。

Claude作为Anthropic旗下的一款产品,一大优势是拥有高达100000个token的上下文窗口,这意味着它可以处理大型代码清单。它还支持上传PDF等文件。

图6-12展示了Claude的初始界面。

图6-12 Claude的初始界面

在界面的顶部,可以输入提示并且最多上传5个文件。界面的中间是活动列表,按活动发生的天数分组。

假设输入以下提示。

提示:你能编写一个反转字符串的JavaScript函数吗?

Claude的响应如图6-13所示。

图6-13 Claude对编写一个JavaScript函数的请求的响应

本章带领大家探索了一些LLM,如ChatGPT、Gemini和Claude,并展示了它们所具备的一系列令人印象深刻的功能,包括代码生成、插件支持、实时搜索互联网和处理大量信息等。虽然这些模型目前还不能完全替代专业的编程工具,但它们在加速软件开发进度方面已经展现出巨大的潜力。随着LLM的持续优化和升级,我们有理由相信,它们将为AI编程领域带来一波又一波令人瞩目的创新和突破。

[9]图6-4中的回答是作者写作此书时LangChain的主要功能和模块。翻译此书时,LangChain已经有很多的更新,译者得到的答案与图6-4并不一致。你在阅读此书时,想必差异更大。如果你希望得到中文回复,可以尝试如下提示。 英文提示:Tell me about the LangChain framework and its primary features in Chinese. Use Internet for the response. 中文提示:介绍LangChain框架及其主要功能。使用互联网进行回复。 译者使用以上两种提示得到了相同的中文回复。——译者注

目录
加书签
详情
加书架
打赏
投票
自动滚动
设置
夜间

评论 0条

加载中...

设置

阅读主题
正文字体
字体大小
18
页面宽度
滚动速度
5
语音朗读
翻页模式
💎

余额不足

您的水晶或能量余额不足,请充值后再试。

立即前往充值

🎫 投月票

1 张月票 = 1.00 水晶。感谢支持!

🎁 打赏作品

打赏将直接扣除水晶余额,鼓励作者创作。