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