2025-06-07 06:21来源:本站
关于ChatGPT的一个更有趣的发现是,它可以编写非常好的代码。去年我第一次测试了它,当时我让它写一个WordPress插件,我妻子可以在她的网站上使用。ChatGPT做得很好,但它是一个非常简单的项目。
如何用ChatGPT写简历| Excel公式|论文|求职信
那么,如何使用ChatGPT编写代码作为日常编码实践的一部分呢?下面是一个简短的总结:
ChatGPT既可以生成有用的代码,也可以生成不可用的代码。为了获得最佳效果,请提供清晰和详细的prom分。
ChatGPT擅长于协助特定的编码任务或例程,而不是从头开始构建完整的应用程序。
使用ChatGPT查找并选择适合特定用途的正确编码库,并参与交互式讨论以缩小选项范围。
要小心关于人工智能生成代码的所有权,并始终验证代码的可靠性。不要盲目相信生成的输出。
将与ChatGPT的交互视为对话。完善你的问题吧基于AI的反应让Nses更接近期望的输出。
现在,让我们更深入地探索ChatGPT。
关于ChatGPT和编码有两个重要的事实。首先,人工智能实际上可以编写有用的代码。
第二种是它可能完全迷路,掉进兔子洞,追逐自己的尾巴,产生不可用的垃圾。
我很不容易才发现这一点。在我完成WordPress插件之后,我决定看看ChatGPT能走多远。
我为Mac应用程序写了一个非常仔细的提示,包括对用户界面元素、交互、设置中提供的内容、它们如何工作等的详细描述。然后,我将提示信息提供给ChatGPT。
ChatGPT响应了大量的文本和代码。然后,它中途停止了。当我要求它继续时,它吐出了更多的代码和文本。我一次又一次地请求continue,它却产生了越来越多的代码。但是…没有一个是可用的。它没有确定代码应该放在哪里,如何构建项目,而且——当我仔细查看生成的代码时——它遗漏了我要求的主要操作,只留下简单的文本描述,说明“程序逻辑到这里”。
经过大量的重复测试,我清楚地认识到,如果您要求ChatGPT交付一个完整的应用程序,它将失败。这种观察的必然结果是,如果您对编码一无所知,并且希望ChatGPT为您构建一些东西,那么它将失败。
ChatGPT的成功之处在于帮助那些已经知道如何编写代码的人构建特定的例程并完成特定的任务。不要要求在菜单栏上运行应用程序。但是,如果您要求ChatGPT提供在菜单栏上放置菜单的例程,然后将其粘贴到项目中,则该工具会做得很好。
另外,请记住,虽然ChatGPT似乎拥有大量特定于领域的知识(通常如此),但它缺乏智慧。因此,该工具可能能够编写代码,但它将无法编写包含非常具体或复杂问题的细微差别的代码,这些问题需要深入的经验才能理解。
使用ChatGPT演示技术,编写小型算法,并生成子例程。您甚至可以让ChatGPT帮助您将一个更大的项目分解成多个块,然后您可以让它帮助您对这些块进行编码。
因此,考虑到这一点,让我们看看ChatGPT如何帮助您编写代码的一些具体步骤。
第一步是决定您将向ChatGPT提出什么要求——但还没有向它提出任何要求。决定你想要你的函数或例程做什么,或者你想要学习什么来整合到你的代码中。决定要传递到代码中的参数以及想要输出的内容。然后看看你将如何描述它。
想象一下,你付钱给一个人类程序员来完成这项任务。你是否给了那个人足够的信息来完成你的任务?或者你太含糊了,你付钱的人更有可能问问题,或者交出一些与你想要的完全无关的东西?
这里有一个例子。假设我想要能够总结任何网页。我想给它一些类似这篇文章的东西,并得到一个经过深思熟虑和适当的简短总结。作为输入,我将指定一个网页URL。作为我的输出,它是一个带有摘要的文本块。
继续上面的例子,提取网页数据的一种非常老派的方法是在HTML段落标签之间找到文本。
但随着人工智能工具的兴起,使用人工智能库进行智能提取和总结更有意义。ChatGPT最擅长的地方之一(这也是一个您可以轻松验证以避免其权威但错误的行为模式的领域)是查找库和资源。
OpenAI (ChatGPT的制造商)向GPT-3和GPT-4引擎出售API访问权限,这些引擎将完全满足我们的需求。但是在这个例子中,让我们假设我们不想支付交易费用。
因此,让我们看看如何与ChatGPT交互,以了解如何在PHP中运行的项目中免费使用这样的工具。
我从一个提示符开始,该提示符旨在引出有关哪些库将提供我想要的功能的信息。库(对于那些不是程序员的人来说)是程序员可以访问的代码体,它为特定目的做了很多繁重的工作。现代编程的很大一部分是寻找和选择正确的库,所以这是一个很好的起点。
在这种情况下,我正在查看由其他人编写的用于总结文本的代码块。这是我的第一个提示:
这个提示正是我想要的,包括提到OpenAI的产品。我认为OpenAI在这里会做得很好,但对于这个假设的项目,我不想为API费用做预算。所以。我会缩小问题范围:
ChatGPT用它的答案来对冲它的赌注。它是这样说的:“是的,这10个人工智能库都是开源的,可以免费使用。然而,其中一些可能有使用限制,或者需要付费才能访问额外的功能或资源。”因此,在此基础上,我澄清了我的疑问:
注意,这是一场对话。我不需要再问最初的问题。我只是在以同样的方式深入研究,如果我手边有一位专家,我可能会寻求澄清。在本例中,ChatGPT给了我八个库选择,但是没有一个提到我计划使用的PHP语言。所以,这是下一个提示:
它返回了三个库,但我不确定每个库是做什么的。另一个问题:
我还是不确定,所以我澄清了我的使用计划,然后问:
我得到的答案清晰而有希望:“sumi是专门为文本摘要设计的,它的任务是创建一个摘要,从一段文本中捕获最重要的信息。”所以,现在是时候看看在PHP中使用sumi所涉及的内容了。关于这个项目的最后一个问题:
在您的计算机上随意操作,并将这些提示粘贴到您的ChatGPT实例中。注意,在第一步中,我决定了我将在哪个程序模块上获得帮助。然后,在这一步中,我与ChatGPT进行了对话,以决定使用哪个库以及如何将其集成到我的项目中。
这可能看起来不像编程,但我向你保证它是。编程不只是将几行代码喷到页面上。编程就是要弄清楚如何将所有不同的资源和系统集成在一起,以及如何与解决方案的所有不同组件进行通信。在这里,ChatGPT帮助我进行了集成分析。
顺便说一句,我很好奇谷歌的Gemini AI(前身为Bard)是否能以同样的方式提供帮助。Gemini实际上不能编写代码,但它确实通过ChatGPT的响应对编程的规划方面提供了一些额外的见解。所以,不要犹豫,使用多种工具来三角定位你想要的答案。这是一个故事:双子座vs. ChatGPT:双子座能帮你写代码吗?自从我写了那篇文章之后,Google为Gemini添加了一些编码功能,但它们并不是那么出色。你可以在这里读到:我测试了Google Gemini的新编码技能。事情进展得并不顺利。最近,我深入研究了Gemini Advanced。它仍然没有通过很多测试。
接下来是编码。
好的,让我们暂停一下。本文的标题是“如何使用ChatGPT编写代码”。它会的。但我们真正做的是让ChatGPT编写示例代码。
让我们明确一点:除非您正在编写一个非常小的函数(如ChatGPT为我妻子编写的行排序/随机器),否则ChatGPT将无法编写您的最终代码。首先,你必须维护它。ChatGPT在修改已经写好的代码方面很糟糕。糟糕的是,它做不到。因此,要获得新代码,您必须要求ChatGPT生成新代码。正如我之前发现的,即使您的提示实际上是相同的,ChatGPT也可能以非常意想不到的方式改变它所提供的内容。
因此,底线是:ChatGPT不能维护您的代码,甚至不能调整它。
这个限制意味着你必须自己做。正如我们所知,一段代码的初稿很少是最终的代码。因此,即使您希望ChatGPT生成最终代码,它也只是一个起点,您需要完成它,将其集成到更大的项目中,测试它,改进它,调试它,等等。
但这并不意味着示例代码毫无价值——远非如此。让我们看一下我根据前面描述的项目编写的提示符。这是第一部分:
我告诉ChatGPT应该使用的编程语言。我也告诉它输入,但在这样做的同时,提供了两个站点作为示例,以帮助ChatGPT理解文章的风格。老实说,我不确定ChatGPT是否忽略了这一点指导。接下来,我将告诉它如何完成大部分工作:
这与我指导员工的方式非常相似。我想让那个人知道他们不仅仅局限于苏梅。如果他们需要其他工具,我希望他们使用它。
我还指定了一个大致的单词数,以便为我想要的摘要创建边界。该例程的后续版本可能会将该数字作为参数。最后我说出了我想要的结果:
生成的代码非常简单。ChatGPT调用了另一个库(Goose)来检索文章内容。然后,它将该摘要以50个单词的限制传递给Sumy,然后返回结果。但是,一旦编写了基础代码,就只需要进行编程并添加调整、自定义传递给两个库的内容以及交付结果。
有一点很有趣。当我最初在2023年初尝试这个测试时,ChatGPT使用2021年以后的URL创建了对它编写的例程的示例调用。当时,也就是2023年3月,ChatGPT的数据集只到2021年。现在,ChatGPT知识库扩展到2023年12月底。但我的观点是,ChatGPT编造了一个它不可能知道的示例链接:
我在路透社的网站和Wayback Machine上都查了这个网址,都不存在。永远不要认为ChatGPT是准确的。总是仔细检查它给你的一切。
现在不行,至少现在还不行。ChatGPT的编程水平与有才华的一年级编程学生相当,但它很懒(就像那个一年级学生一样)。该工具可能会减少对入门级程序员的需求,但在目前的水平上,我认为它只会使入门级程序员(甚至更有经验的程序员)编写代码和查找信息更容易。它确实节省了时间,但它能单独完成的编程项目很少——至少现在是这样。在2030年?谁知道呢。
问就是了。你在上面看到了我如何使用交互式讨论对话框来缩小我想要的答案。当您使用ChatGPT时,不要期望一个问题神奇地为您完成所有工作。但是使用ChatGPT作为一个助手和资源,它会给你很多非常有用的信息。
当然,测试这些信息——因为,正如OpenAI的联合创始人约翰·舒尔曼(John Schulman)所说,“我们最担心的是事实,因为这个模型喜欢编造东西。”
地狱,不!但是你也不能相信人类程序员写的代码。我当然不相信我写的任何代码。代码产生于代码编写过程中,这个过程存在着令人难以置信的缺陷。bug总是存在的。在发行之前,你需要测试,测试,再测试。然后,选择几个受害者进行alpha测试。然后在更广泛的用户群体中进行测试。
即便如此,还是会有漏洞。仅仅因为AI在编码并不意味着它可以编写无bug的代码。不要相信。总是检查。但你仍然无法让它完全没有虫子。这就是宇宙的本质。
回想一下,我总是建议你把聊天机器人想象成一个有点不合作的学生或下属员工。如果那个人给你的代码不能工作,你会怎么做?你会把他们送回去,指示他们再做一遍,把它做好。这就是您应该使用ChatGPT做的事情(我已经用4和40进行了测试)。我只是说:“那没用。请再试一次。”
人工智能就是这么做的。它经常给我同一个问题的不同变体。我偶尔重复了四五次,直到我得到了一个可行的答案。但有时候,人工智能也会失去创意。其他时候,再试一次的答案完全(我的意思是完全)与你的要求无关。当你发现你已经达到了AI在问题上保持理智的能力的边缘时,你就必须自己做好准备并编写代码。但10次中有9次,尤其是面对基本的编码或界面编写挑战时,AI都能成功完成任务。
详细的。从这个角度来看:你给解释留下的空间越多,AI就越会走自己的路。当我在编程时向ChatGPT提供提示以帮助我时,我想象我正在将编程任务分配给我的一个学生或为我工作的人。
我是否给了对方足够的细节,让他开始创作初稿,还是说他会问我一大堆额外的问题?更糟糕的是,这个人会不会因为缺乏指导而走向完全错误的方向?不要在这里偷懒。ChatGPT可以为您节省数小时甚至数天的编程时间(对我来说确实如此),但前提是您一开始就给它提供有用的说明。
事实证明,目前还没有很多判例法能明确回答这个问题。美国、加拿大和英国要求受版权保护的东西必须是由人类手工创造的,所以由人工智能工具生成的代码可能不受版权保护。根据培训代码的来源和使用结果代码的方式,还存在责任问题。
ZDNET对这个话题进行了深入研究,与法律专家进行了交谈,并撰写了以下三篇文章。如果你担心这个问题(如果你正在使用AI来帮助编写代码,你应该担心),我建议你阅读一下它们。
谁拥有代码?如果ChatGPT的人工智能帮助你编写应用程序,它还属于你吗?
如果你使用人工智能生成的代码,你的责任风险是多少?
一个棘手的问题:谁拥有人工智能生成的代码、图像和叙述?
大多数人。我测试了常见的现代语言,比如PHP、Python、Java、Kotlin、Swift、c#等等。但后来,我让这个工具用晦涩的黑暗时代语言编写代码,比如COBOL、Fortran、Forth、LISP、ALGOL、RPG(报告程序生成器,而不是角色扮演游戏),甚至是IBM/360汇编语言。
为了锦上添花,我给了它这样的提示:
PDP 8/e是我的第一台电脑,ChatGPT实际上给了我使用前面板开关切换程序的说明。我被打动了,高兴极了,同时又有点害怕。
是的,很多都可以在没有代码的情况下完成。查看我关于这个主题的整篇文章:当我意识到ChatGPT Plus将改变我的业务的时候。
我还写了一篇关于生成图表和表格的文章:如何使用ChatGPT制作图表和表格
但有趣的是。在上面的文章中,我要求ChatGPT Plus“制作一个世界人口排名前五的城市的条形图”,它做到了。但是你想要代码吗?试着问:
通过添加“in Swift”,您指定了编程语言。通过指定数据来自何处并强制ChatGPT Plus包含库,它知道引入程序所需的其他资源。这就是为什么从根本上说,在人工智能的帮助下编程需要你了解编程的知识。但如果你这样做了,那很酷。因为三句话就可以得到一大块带注释的代码。酷,不是吗?
我们没有OpenAI关于这个问题的确切细节,但我们对ChatGPT如何训练的理解可以为这个问题提供一些启示。请记住,编程语言的方言和实现(以及它们的小怪癖)的变化要比完整的语言本身快得多。这一现实使得ChatGPT(以及许多编程专业人员)很难跟上潮流。
因此,我将解决以下两个假设:
辩证变化越近,ChatGPT知道a的可能性就越小关于它,还有
一种语言越受欢迎,它可能从更多的训练数据中学习,因此它就越准确。
底线是什么?ChatGPT是一个非常有用的工具。只是不要给它赋予超能力。然而。
你可以在社交媒体上关注我每天的项目更新。一定要关注我的推特账号@DavidGewirtz, Facebook账号Facebook.com/DavidGewirtz, Instagram账号Instagram.com/DavidGewirtz, YouTube账号YouTube.com/DavidGewirtzTV。