我有一个新的初级开发人员,它有点糟糕

178 阅读6分钟

那个开发商ChatGPT,我对它爱恨交加。

现在有很多关于人工智能的文章,所以我会尽量简短。

太长别读:

使用ChatGPT编写代码就像你手下有一个初级开发人员。他们可以在那里获得80%的代码,但你几乎需要查看每一行。

场景

我不得不承认,有很多方法可以使用ChatGPT来帮助编写代码。其中一些可能更好,另一些可能更差。

例如,我听说很多人用它作为搜索引擎。我个人觉得这有点可疑。通过搜索找到留档甚至答案并不难。我使用Kagi,这有助于减少绒毛。相反,使用ChatGPT,你怎么知道答案是否正确?

另一方面,有很多人使用它作为美化的自动完成。比如Github Copilot。我可以看到这很有用。

我选择的场景是:

转换我的代码从chacra用户界面尾翼

为什么?

  • 这两种技术都有大量的资源,尤其是顺风(当然还有超文本标记语言)。它应该有大量的数据可以使用。
  • 创建一个程序来做到这一点是很有可能的。虽然可能有很多边缘案例,但功能本身很简单。chakra-用户界面受到顺风的启发,因此它继承了一堆可以轻松转移的东西。
  • 这是我需要做的事情。所以这是一个其他人可能会遇到的真实用例。

快速工程是一件苦差事

环顾这个领域,提示好似乎是获得好结果或平庸结果的区别。我在这方面不是最好的,但我做了一些研究并尽了最大努力。

我确保使用多个提示使其处于良好状态。只有在它似乎知道它应该只转换我的代码时才粘贴我的代码。

老实说,这部分可以改进。在UI和交互之间,使用起来相当麻烦:

  • 它可能需要一些时间才能达到理想的状态

在我思考该写什么,然后等待它的回复并完成写作之间,做这项工作变得很烦人

  • 这是不一致的

你不能总是重复使用相同的提示是没有帮助的。ChatGPT有一些随机性,所以我不得不每次都调整提示。复制粘贴以前有效的提示没有帮助。

  • 很容易就能脱离理想状态

如果是一次性的,上面的内容很好。但是我发现人工智能很容易在第一次代码转换后忘记一切。我相信我重复最多的成功是3次。除此之外,它返回了完全不相关的东西,比如解释我的代码是做什么的。

  • 令牌是一个相当有限的因素

由于其令牌限制,它只能生成这么多代码。您可以检查这里的令牌器,看看它是如何计算令牌的。它对代码不太友好。下面是它的一个输出示例。每种不同的颜色代表一个令牌。

Tokenizer

因此,我必须将转换拆分为多个步骤。否则,生成将在中途停止。告诉它继续大部分时间都不起作用。结合上面的要点,这很快就变成了一件苦差事。

Continue error

总而言之,我得到的感觉是我不想写英语。如果我已经必须写一些东西,我宁愿直接写可以工作的代码。

我可以看到快速工程是未来的一项关键技能。类似于知道如何搜索是当今世界的一项关键技能。

输出还不错

尽管付出了很多努力,ChatGPT确实输出了一些令人印象深刻的代码。以下是原始代码和结果之间的一些比较:

Comparison 1

Comparison 2

如你所见,它做得很好。

好的

  • 这个结构被改造得很好
    除了细节,超文本标记语言结构与原版非常相似。间距被去掉了,但整体布局保持不变。
  • 文本内容没有改变
    内容本身处理得很好。尽管我必须仔细检查所有内容,但没有一个被更改。唯一的例外是那些源自JS的内容。

坏蛋

  • 它有随机的班级
    有的是什么都不做的课,有的改了,有的是无效的顺风课。
  • 有很多微小的差别
    UI看起来就像一个库刚刚升级,有人忘记迁移代码。在这种情况下,这是因为ChatGPT随机更改了类的值。例如,将3padding为4,或将font-weight从粗体更改为正常。细节都错了。
  • 有一半时间都不管用
    上面的截图是我可以直接比较的。实际上,结果要么不完整,要么错误到我不得不进行许多更改才能使其工作。正因为如此,我无法将其并排比较。由于代码无法运行,我根本无法与之进行比较。

这就像审查PR而不是编写代码

最棒的是,我有一些东西可以做。谢天谢地,这项工作本身非常简单。很容易发现错误。chacra用户界面和顺风的类之间的映射几乎是一对一的。这只是因为语法不同而乏味。

但这种方法更类似于审查PR。我必须扫描整个代码以确保一切都正确完成。

乍一看,它看起来不错。但是一旦你使用它并密切关注它,就会有很多陷阱。它带来了这种虚假的安全感,一旦我发现所有的缺陷,我就有点沮丧。

其中很大一部分是从其他代码库中插入的代码。它看起来并不可怕,但这不是我想要的。

甚至还有一些令人震惊的变化,比如将标题从h2改为h1。我只能假设它是因为内容才这样做的。

感觉就像一个初级开发人员把什么东西放在一起,没有测试他们的代码。现在我不得不审查和修复它,而不能告诉他们自己修复它。这太糟糕了。我已经有了在工作中审查PR的解决方案。现在我也必须为自己的项目做这件事?不用了,谢谢!

充满希望的未来

虽然我认为它还没有接近那里,但我确实认为人工智能在未来的某个时候会对发展有所帮助。答案是否是LLM,谁知道呢。

代币限制不断增加

我已经推迟完成这篇文章足够长的时间了。在此期间,有很多关于增加代币限制的公告。虽然我不确定它是公开的、付费的还是其他的,但很高兴看到这一点。

随着时间的推移,提示用户体验应该变得更容易

有了ChatGPT的插件和更好的集成,像记忆状态和一致性这样的问题应该会得到改善。希望这将降低从ChatGPT获得有用输出所需的工作量。

与此同时,我手动完成了迁移的另一半。是不是更快了?谁知道呢。感觉差不多。但是手动编写确实感觉好多了。