共计 5084 个字符,预计需要花费 13 分钟才能阅读完成。
LV4260/Getty Images
ChatGPT 不仅能生成流畅的文本,还能编写相当不错的代码。它可以编写 WordPress 插件、简历、Excel 公式、论文以及求职信等等。
那么,如何在日常编码练习中使用 ChatGPT 来编写代码呢?以下是一个快速总结:
- ChatGPT 可以生成有用和无用的代码。为了获得最佳效果,请提供清晰详细的提示。
- ChatGPT 擅长协助完成特定的编码任务或例程,而不是从头开始构建完整的应用程序。
- 使用 ChatGPT 查找并选择适合特定用途的编码库,并进行互动式讨论以缩小选择范围。
- 注意 AI 生成的代码的所有权,并始终验证代码的可靠性。不要盲目信任生成的输出。
- 将与 ChatGPT 的交互视为对话。根据 AI 的回复来完善您的问题,以更接近所需的输出。
ChatGPT 可以完成哪些类型的编码?
关于 ChatGPT 和编码,有两个重要的事实。首先,AI 实际上可以编写有用的代码。其次,它也可能完全迷路,陷入死胡同,并生成毫无用处的垃圾。
如果你要求 ChatGPT 提供一个完整的应用程序,它可能会失败。如果你对编码一无所知,并且希望 ChatGPT 为你构建一些东西,它也会失败。
ChatGPT 成功的地方——并且做得非常好——是帮助已经知道如何编码的人构建特定的例程并完成特定的任务。不要求它编写一个在菜单栏上运行的应用程序,而是可以要求它提供一个在菜单栏上放置菜单的例程,然后将其粘贴到你的项目中,这样它就能做得很好。
另外,请记住,虽然 ChatGPT 看起来拥有大量的特定领域知识,但它缺乏智慧。因此,该工具可能能够编写代码,但它将无法编写包含针对需要深刻经验才能理解的非常具体或复杂问题的细微差别的代码。
使用 ChatGPT 演示技术、编写小型算法并生成子例程。你甚至可以让人工智能帮助你将更大的项目分解成块,然后你可以让它帮助你编写这些块的代码。
如何使用 ChatGPT 编写代码
第一步是决定你要向 ChatGPT 提问什么。决定你希望你的函数或例程做什么,或者你想了解哪些内容并将其融入你的代码中。确定你要传递给代码的参数以及你希望获得什么结果。然后看看你将如何描述它。
想象一下,你正在付钱给一个人类程序员来完成这项任务。你是否给了那个人足够的信息来完成你的作业?还是你太含糊了,你付钱给的人更有可能提出问题或交出与你想要的东西完全无关的东西?
以下是一个示例。假设我希望能够总结任何网页。我希望将类似本文的内容输入它,并得到一个经过深思熟虑且合适的简短摘要。作为我的输入,我将指定一个网页 URL。作为我的输出,它是一个包含摘要的文本块。
继续上面的示例,一种非常古老的提取网页数据的方法是找到 HTML 段落标签之间的文本。但随着 AI 工具的兴起,使用 AI 库来进行智能提取和总结更有意义。ChatGPT 擅长的地方之一是查找库和资源。
OpenAI(ChatGPT 的制造商)出售对 GPT-3 和 GPT-4 引擎的 API 访问权限,这些引擎将完全实现我们想要的功能。但在本示例中,假设我们不想支付交易费用。
因此,让我们看看如何与 ChatGPT 交互,以了解如何使用这种工具,免费,并在 PHP 项目中运行。
我从一个旨在引发有关哪些库将提供我想要的功能的信息的提示开始。库是一组代码,程序员可以访问它,它可以为特定目的完成许多繁重的工作。现代编程很大一部分是查找和选择正确的库,因此这是一个很好的起点。
在本例中,我正在查看其他人编写的代码块,这些代码块将总结文本。这是我的第一个提示:
描述十个不同的开源 AI 库(以及它们使用的语言),我可以使用它们来生成任何网页主要核心内容的摘要,忽略任何广告或嵌入式材料。
这个提示给了我想要的一切,包括对 OpenAI 产品的提及。我认为 OpenAI 在这里会做得很好,但对于这个假设的项目,我不想为 API 费用预算。所以,我将缩小问题范围:
这些库中有免费的吗?
ChatGPT 在回答时有所保留。以下是它所说的:“是的,所有十个 AI 库都是开源的,并且可以免费使用。但是,其中一些库可能有限制使用次数,或者需要付费才能访问其他功能或资源。”因此,根据这一点,我澄清了我的查询:
这些库中哪些库没有使用次数限制,也不需要任何额外的付费或许可?
请注意,这非常像一场对话。我不必重新询问最初的问题。我只是在深入挖掘,就像我可能会在身边有一个专家,并且正在寻求澄清一样。在本例中,ChatGPT 为我提供了八个库选择,但没有一个提到我打算在其中编码的 PHP 语言。因此,以下是我的下一个提示:
在这 8 个库中,我可以在 PHP 中使用任何一个吗?
它返回了三个库,但我不知道每个库的功能。因此,又一个问题:
Sumy、Gensim 和 NLTK 之间有什么区别?
我仍然不确定,所以我澄清了我的使用计划,然后问:
如果我想创建网页新闻文章的摘要,哪个库更有效?
我得到的答案清晰而有希望:“Sumy 专为文本摘要而设计,文本摘要的任务是从一段文本中创建包含最重要信息的摘要。”因此,现在是时候看看使用 PHP 使用 Sumy 包含哪些内容了。我问了这个项目这一部分的最后一个问题:
你能解释一下如何从 PHP 使用 Sumy 吗?
请随意在你的电脑上一起玩,并将这些提示粘贴到你的 ChatGPT 实例中。请注意,在第一步中,我决定要获得哪个程序模块的帮助。然后,在这一步中,我和 ChatGPT 进行了对话,以决定使用哪个库以及如何将其集成到我的项目中。
这可能看起来不像编程,但我向你保证它确实是。编程不仅仅是在页面上快速输入代码行。编程是弄清楚如何将所有不同的资源和系统整合在一起,以及如何与解决方案的各个组成部分进行通信。在这里,ChatGPT 帮助我进行了这种集成分析。
顺便说一句,我很好奇谷歌的 Gemini AI 是否可以以同样的方式提供帮助。Gemini 实际上无法编写代码,但它确实对编程的规划方面提供了一些额外的见解,这些见解超出了 ChatGPT 的回复。因此,不要犹豫,使用多种工具来对想要得到的答案进行三角测量。
接下来是编码。
好的,让我们在这里暂停一下。这篇文章的标题是“ChatGPT 编程实战指南:如何利用 AI 提高编码效率”。它会做到这一点。但我们真正在做的是让 ChatGPT 编写示例代码。
让我们明确一点:除非你正在编写一个非常小的函数,否则 ChatGPT 将无法编写你的最终代码。首先,你需要维护它。ChatGPT 在修改已经编写的代码方面很糟糕。也就是说它不会这样做。因此,要获得新代码,你必须让 ChatGPT 生成新的代码。即使你的提示几乎相同,ChatGPT 也可能以非常意想不到的方式改变它给你的内容。
因此,底线是:ChatGPT 无法维护你的代码,甚至无法调整它。
这种限制意味着你必须自己做。一段代码的第一稿很少是最终代码。因此,即使你期望 ChatGPT 生成最终代码,它实际上也只是一个起点,你需要将其完成,将其集成到更大的项目中,进行测试、改进、调试等等。
但这并不意味着示例代码毫无价值。让我们看看我根据之前描述的项目编写的提示。以下是第一部分:
编写一个名为 summarize_article 的 PHP 函数。作为输入,summarize_article 将传递到 ZDNET.com 或 Reuters.com 等新闻网站上的文章的 URL。
我正在告诉 ChatGPT 它应该使用的编程语言和输入,同时,我提供了两个站点作为示例,以帮助 ChatGPT 理解文章的风格。老实说,我不确定 ChatGPT 是否忽略了这条指导。接下来,我将告诉它如何完成大部分工作:
在 summarize_article 中,检索提供的 URL 上的网页内容。使用来自 PHP 内部和任何其他必要库的 Sumy 库,提取文章的正文,忽略任何广告或嵌入式材料,并将其总结为大约 50 个单词。确保摘要由完整的句子组成。如果需要,你可以超过 50 个单词来完成最后一个句子。
这与我指示员工的方式非常相似。我希望那个人知道他们并不局限于 Sumy。如果他们需要另一个工具,我希望他们使用它。
我还指定了大约的单词数,为我想要的摘要设置了边界。例程的更高版本可能会将该数字作为参数。然后我以我要的结果结束:
处理完成后,对 summarize_article 进行编码,使其以纯文本形式返回摘要。
生成的代码非常简单。ChatGPT 确实调用了另一个库(Goose)来检索文章内容。然后它将该摘要传递给 Sumy,并限制为 50 个单词,然后返回结果。但是,一旦编写了基础知识,只需进行一些编程,就可以返回并添加调整、自定义传递给两个库的内容,并提供结果。
David Gewirtz/ZDNET 的屏幕截图
值得注意的一点。ChatGPT 捏造了一个它不可能知道的示例链接:
https://www.reuters.com/business/retail-consumer/teslas-musk-says-fremont-california-factory-may-be-sold-chip-shortage-bites-2022-03-18/
我在路透社网站和 Wayback Machine 上检查了该 URL,它不存在。不要假设 ChatGPT 是准确的。始终仔细检查它提供给你的所有内容。
常见问题解答
ChatGPT 会取代程序员吗?
现在不会,至少现在还不会。ChatGPT 的编程水平相当于一个有天赋的大一编程学生,但它很懒。该工具可能会减少对初级程序员的需求,但就目前而言,它只会让初级程序员(甚至更有经验的程序员)更轻松地编写代码和查找信息。它绝对是一个省时工具,但它自己可以完成的编程项目很少,至少现在是这样。在 2030 年?谁知道呢。
如何在 ChatGPT 中获得编码答案?
直接问它。当你使用 ChatGPT 时,不要期望一个问题就能神奇地完成你所有的工作。但将 ChatGPT 作为助手和资源,它将为你提供许多非常有用的信息。当然,要测试这些信息,因为 ChatGPT 喜欢编造东西。
ChatGPT 生成的代码能否保证没有错误?
当然不能!但你也不应该相信人类程序员编写的代码。代码从代码创建过程中出来时,充满了缺陷。总会有 bug。在发布之前,你需要测试、测试,再测试。仅仅因为一个 AI 正在进行这种编码,并不意味着它可以编写无 bug 的代码。不要相信。始终验证。
在向 ChatGPT 询问编程问题时,我的描述应该有多详细?
要详细。这样想:你留给解释的空间越多,AI 就越有可能自己走自己的路。当我给 ChatGPT 提供提示来帮助我编程时,我假想我正在将一个编程任务分配给我的一个学生或为我工作的人。我是否给了那个人足够的信息来开始编写第一稿?
如果我使用 ChatGPT 编写代码,谁拥有代码?
事实证明,还没有很多案例法来明确回答这个问题。美国、加拿大和英国要求版权作品必须是人手创作的,因此 AI 工具生成的代码可能没有版权。还有关于责任的问题,这些问题取决于训练代码的来源以及生成代码的使用方式。
ChatGPT 了解哪些编程语言?
大多数。我测试了常见的现代语言,如 PHP、Python、Java、Kotlin、Swift、C# 等等。我还让该工具用晦涩的远古语言编写代码,如 COBOL、Fortran、Forth、LISP、ALGOL、RPG,甚至 IBM/360 汇编语言。
ChatGPT 能否帮助我完成数据分析和可视化任务?
是的,而且很多可以通过代码完成。通过指定编程语言、数据来源并强制 ChatGPT Plus 包含库,它知道要引入程序需要的其他资源。这就是为什么从根本上说,使用 AI 进行编程需要你了解编程方面的知识。
ChatGPT 如何处理给定编程语言的方言和实现之间的差异?
我们没有从 OpenAI 获得有关此问题的具体信息,但我们对 ChatGPT 训练方式的理解可以让我们对这个问题有所了解。请记住,编程语言的方言和实现的变化速度远远快于完整的语言本身。这种现实使得 ChatGPT 难以跟上。
因此,我将基于以下两个假设进行工作:
- 方言变化越新,ChatGPT 知道的可能性就越小。
- 一种语言的流行程度越高,它可能学习到的训练数据就越多,因此它的准确性就越高。
底线是什么?ChatGPT 可以是一个非常有用的工具。只是不要赋予它超能力。至少现在还不行。
ChatGPT 在编程领域展现出强大的潜力,可以辅助开发者完成各种编码任务。它可以生成代码、查找库、提供代码示例,甚至帮助你进行代码规划。虽然 ChatGPT 无法完全取代程序员,但它可以作为一种强大的工具,帮助开发者提高编码效率,简化工作流程,并探索新的编程可能性。相信随着技术的不断发展,ChatGPT 在编程领域的应用会越来越广泛,为开发者带来更多便利和惊喜。