我喜欢聊天 GPT。很多。这是我用过的最好的数字写作助手。
不过,如果我使用 ChatGPT 的时间教会了我任何东西,那就是 ChatGPT 并不是一个出色的作家。我不担心我的工作。如果我使用 ChatGPT 从头开始编写 Python 程序的经验可以说明问题,那么程序员也不必担心。
但你应该注意。
有前途的失败
一段时间以来,我一直在考虑构建一个终端应用程序来练习打字,所以我决定试一试 ChatGPT 来构建它。
这是我的提示:
ChatGPT 的程序出奇地接近我想要的:
“好评”
令人印象深刻的是,ChatGPT 在这里得到了多少。代码运行无误。它使准确度计算正确,并以每分钟字数计算原始速度。出于所有实际目的,它是一个功能性的打字分析应用程序。
但它没有按照我的要求为用户输入着色:
代码再次运行。这是一个示例执行:
这不是我想要的,但它越来越接近了。我告诉 ChatGPT,该程序没有按预期运行,并重申应在用户键入文本时将颜色应用于文本。
事情开始出轨:
看起来很合理,但行不通:
我花了半个小时试图让 ChatGPT 修复它的代码,但事情变得越来越奇怪。在关闭聊天之前,我让它知道我的感受:
但实际上,我印象深刻。就像我发现的生成文本一样, ChatGPT努力创建好的代码。但它捕获了我所要求的足够多的东西,它激发了一个新的攻击计划:
对较小的块进行操作。
富有成效的方法
直到现在,我都是作为一个没有编程知识的消费者与 ChatGPT 进行交互的。对于我的第二次尝试,我在解决问题方面发挥了更积极的作用,并为 ChatGPT 提供了更具体的说明。
我把程序分成几个函数。我已经知道如何将它们联系在一起,并且很想知道 ChatGPT 是否可以填补这些空白。
这让我很吃惊。根据我之前的谈话,我期望使用sys.stdin.read(1)
的解决方案。这是不正确的,但与我之前看到的错误类型一致。
还值得注意的是,ChatGPT 的实现不适用于 Windows 机器。我使用的是 mac,所以我保留了代码并继续:
不错!只需要一些颜色:
插入关于 f 弦的评论。
接下来,我让 ChatGPT 写了一个函数来计算总打字速度。这是我得到的:
这通过将键入的单词数除以所花费的时间来计算原始键入速度。但是,该指标忽略了单词的长度,并忽略了空格和标点符号等符号。这些都不会改变字数,但会影响打字速度。考虑到这一点,总速度将任何五个字符的序列视为一个单词。
这是 ChatGPT 编码中的一个缺陷,但可以通过简单的手动修复:
def typing_speed(text, start_time, end_time): words = len(text) / 5 minutes = (end_time - start_time) / 60 return words / minutes
我继续我想到的下一个功能:
这个对我来说真的很突出。一开始,主动添加的打印打字速度让我很反感。但后来它给了我一个主意。我改变了我的设计:
ChatGPT 拥有它现在需要的大部分内容。它能帮我完成程序吗?
accuracy()
函数有效,但可以简化。我可以手动做到这一点:
def accuracy(typed_list): correct = 0 for typed, expected in typed_list: if typed == expected: correct += 1 return correct / len(typed_list) * 100
我也从未见过 ChatGPT 像这样使用评论作为占位符。这是缩短引用先前聊天交互的长代码块的好方法。
我把它们放在一起并运行它:
不确定先生们的特征,但没关系。
正是我想要的。整个过程用了大约10分钟。
关于 ChatGPT 的思考
带走他们或离开他们。
- ChatGPT 很难连贯地生成长文本。这并不奇怪,因为它针对简短的聊天式交互进行了优化。
- 我怀疑大型语言模型是否能够自动生成大型、复杂的软件。但是,您可以引导模型构建相对复杂的东西。
- ChatGPT 代码就像一个专家初学者。它可以帮助您提高工作效率,但不可信任。
- ChatGPT 类模型的最佳用例是重构、重新格式化和改进小代码片段。我认为我的实验还表明 ChatGPT 可用于快速制作想法原型。
- 我不禁想知道是否会使用大型语言模型来改进从自然语言到机器语言的翻译,从而实现口语编程的新范式。
程序员的时代还没有结束。但情况正在发生变化。
原文: https://davidamos.dev/chatgpt-is-an-extra-ordinary-python-programmer/