那个开发商ChatGPT,我对它爱恨交加。
现在有很多关于人工智能的文章,所以我会尽量简短。
太长别读:
使用ChatGPT编写代码就像你手下有一个初级开发人员。他们可以在那里获得80%的代码,但你几乎需要查看每一行。
场景
我不得不承认,有很多方法可以使用ChatGPT来帮助编写代码。其中一些可能更好,另一些可能更差。
例如,我听说很多人用它作为搜索引擎。我个人觉得这有点可疑。通过搜索找到留档甚至答案并不难。我使用Kagi,这有助于减少绒毛。相反,使用ChatGPT,你怎么知道答案是否正确?
另一方面,有很多人使用它作为美化的自动完成。比如Github Copilot。我可以看到这很有用。
我选择的场景是:
转换我的代码从chacra用户界面到尾翼。
为什么?
- 这两种技术都有大量的资源,尤其是顺风(当然还有超文本标记语言)。它应该有大量的数据可以使用。
- 创建一个程序来做到这一点是很有可能的。虽然可能有很多边缘案例,但功能本身很简单。chakra-用户界面受到顺风的启发,因此它继承了一堆可以轻松转移的东西。
- 这是我需要做的事情。所以这是一个其他人可能会遇到的真实用例。
快速工程是一件苦差事
环顾这个领域,提示好似乎是获得好结果或平庸结果的区别。我在这方面不是最好的,但我做了一些研究并尽了最大努力。
我确保使用多个提示使其处于良好状态。只有在它似乎知道它应该只转换我的代码时才粘贴我的代码。
老实说,这部分可以改进。在UI和交互之间,使用起来相当麻烦:
- 它可能需要一些时间才能达到理想的状态
在我思考该写什么,然后等待它的回复并完成写作之间,做这项工作变得很烦人
- 这是不一致的
你不能总是重复使用相同的提示是没有帮助的。ChatGPT有一些随机性,所以我不得不每次都调整提示。复制粘贴以前有效的提示没有帮助。
- 很容易就能脱离理想状态
如果是一次性的,上面的内容很好。但是我发现人工智能很容易在第一次代码转换后忘记一切。我相信我重复最多的成功是3次。除此之外,它返回了完全不相关的东西,比如解释我的代码是做什么的。
- 令牌是一个相当有限的因素
由于其令牌限制,它只能生成这么多代码。您可以检查这里的令牌器,看看它是如何计算令牌的。它对代码不太友好。下面是它的一个输出示例。每种不同的颜色代表一个令牌。
因此,我必须将转换拆分为多个步骤。否则,生成将在中途停止。告诉它继续大部分时间都不起作用。结合上面的要点,这很快就变成了一件苦差事。
总而言之,我得到的感觉是我不想写英语。如果我已经必须写一些东西,我宁愿直接写可以工作的代码。
我可以看到快速工程是未来的一项关键技能。类似于知道如何搜索是当今世界的一项关键技能。
输出还不错
尽管付出了很多努力,ChatGPT确实输出了一些令人印象深刻的代码。以下是原始代码和结果之间的一些比较:
如你所见,它做得很好。
好的
- 这个结构被改造得很好
除了细节,超文本标记语言结构与原版非常相似。间距被去掉了,但整体布局保持不变。 - 文本内容没有改变
内容本身处理得很好。尽管我必须仔细检查所有内容,但没有一个被更改。唯一的例外是那些源自JS的内容。
坏蛋
- 它有随机的班级
有的是什么都不做的课,有的改了,有的是无效的顺风课。 - 有很多微小的差别
UI看起来就像一个库刚刚升级,有人忘记迁移代码。在这种情况下,这是因为ChatGPT随机更改了类的值。例如,将3padding为4,或将font-weight从粗体更改为正常。细节都错了。 - 有一半时间都不管用
上面的截图是我可以直接比较的。实际上,结果要么不完整,要么错误到我不得不进行许多更改才能使其工作。正因为如此,我无法将其并排比较。由于代码无法运行,我根本无法与之进行比较。
这就像审查PR而不是编写代码
最棒的是,我有一些东西可以做。谢天谢地,这项工作本身非常简单。很容易发现错误。chacra用户界面和顺风的类之间的映射几乎是一对一的。这只是因为语法不同而乏味。
但这种方法更类似于审查PR。我必须扫描整个代码以确保一切都正确完成。
乍一看,它看起来不错。但是一旦你使用它并密切关注它,就会有很多陷阱。它带来了这种虚假的安全感,一旦我发现所有的缺陷,我就有点沮丧。
其中很大一部分是从其他代码库中插入的代码。它看起来并不可怕,但这不是我想要的。
甚至还有一些令人震惊的变化,比如将标题从h2改为h1。我只能假设它是因为内容才这样做的。
感觉就像一个初级开发人员把什么东西放在一起,没有测试他们的代码。现在我不得不审查和修复它,而不能告诉他们自己修复它。这太糟糕了。我已经有了在工作中审查PR的解决方案。现在我也必须为自己的项目做这件事?不用了,谢谢!
充满希望的未来
虽然我认为它还没有接近那里,但我确实认为人工智能在未来的某个时候会对发展有所帮助。答案是否是LLM,谁知道呢。
代币限制不断增加
我已经推迟完成这篇文章足够长的时间了。在此期间,有很多关于增加代币限制的公告。虽然我不确定它是公开的、付费的还是其他的,但很高兴看到这一点。
随着时间的推移,提示用户体验应该变得更容易
有了ChatGPT的插件和更好的集成,像记忆状态和一致性这样的问题应该会得到改善。希望这将降低从ChatGPT获得有用输出所需的工作量。
与此同时,我手动完成了迁移的另一半。是不是更快了?谁知道呢。感觉差不多。但是手动编写确实感觉好多了。