我们又要被人工智能取代了吗?
使用 Dalle-2 生成的图像,本文涉及另一个 AI
我们在 2021 年 10 月看到了 GitHub Copilot 的发布,整个开发社区都为之疯狂。
有些人声称我们很快就会失业,而其他人,比如我,认为虽然这个工具很有趣,但离替代品还很远。是的,它可以提供更好的自动完成功能,但它无法为您创建完整的应用程序。
所以我们很安全。
或者我们是这么想的。
几周前,我们看到了 Chat GPT 的发布,整个开发社区再次疯狂。但这次他们是对的吗?
我尝试了人工智能,并要求它构建相当于“Hello world”的网络开发:一个待办事项应用程序。
让我们看看它是怎么做到的。
要求
这是我对聊天机器人的提示和我得到的答案:
can you give me the code to create a to-do app that allows me to edit the items and store them in a database? Please use React for the front-end and next js for the back-end
那是我最初的提示,关键问题在那里以粗体显示:
待办事项应用
编辑项目的能力
将数据存储在数据库中
使用 React 和 Next
现在,这是我得到的:
import React, { useState } from ‘react’
import { useRouter } from ‘next/router’
function ToDoApp() {
const [items, setItems] = useState([]) // useState to store the to-do items
const router = useRouter()
// handle form submission
const handleSubmit = (event) => {
event.preventDefault()
const form = event.target
const input = form.querySelector(‘input’)
// add the new to-do item to the array of items
setItems([…items, input.value])
input.value = ”
}
// handle item removal
const handleRemove = (index) => {
// create a new array without the item at the specified index
const newItems = items.filter((item, i) => i !== index)
setItems(newItems)
}
return (
To-Do App
{items.map((item, index) => (
-
{item}
Remove
))}
)
}
export default ToDoApp
好的,这不是我要求的。
是的,我有一个待办事项应用程序,使用 React 和 Next,但是,它没有使用数据库,事实上,它使用的是内存存储。而且它不允许我编辑项目。那我们再问一遍。
can you modify that code to add support for a cloud database?
好的,现在我只是引用了“那个代码”,并添加了“云数据库”支持。我特地试图含糊其辞,因为人类很容易理解这一点,但人工智能需要保留对当前对话的参考并记住我们在说什么。
瞧,我要求的代码:
import React, { useState } from ‘react’
import { useRouter } from ‘next/router’
import firebase from ‘firebase/app’
import ‘firebase/database’
function ToDoApp() {
const [items, setItems] = useState([]) // useState to store the to-do items
const router = useRouter()
// initialize Firebase
if (!firebase.apps.length) {
firebase.initializeApp({
apiKey: ”,
databaseURL: ”
})
}
// get a reference to the Firebase database
const database = firebase.database()
const itemsRef = database.ref(‘items’)
// handle form submission
const handleSubmit = (event) => {
event.preventDefault()
const form = event.target
const input = form.querySelector(‘input’)
// add the new to-do item to the Firebase database
itemsRef.push({
text: input.value
})
input.value = ”
}
// handle item removal
const handleRemove = (itemId) => {
// remove the item from the Firebase database
itemsRef.child(itemId).remove()
}
// useEffect to fetch the to-do items from the Firebase database
useEffect(() => {
itemsRef.on(‘value’, (snapshot) => {
const items = snapshot.val()
const newItems = []
for (let item in items) {
newItems.push({
id: item,
text: items[item].text
})
}
setItems(newItems)
})
}, [])
return (
To-Do App
{items.map((item) => (
-
{item.text}
Remove
))}
)
}
export default ToDoApp
它为我选择了 Firebase,它甚至为我写了占位符来输入我的凭据。
还是做到了?
这段代码有效吗?
到目前为止,结果给我留下了深刻的印象,我并没有真正期待这种程度的细节。
但在测试代码时,我发现了几个明显突出该机器人缺点的问题。
问题 #1:它缺少import。愚蠢的错误,我知道,我们人类一直在制造它们,但代码缺少useEffect钩子的导入。
问题 #2:它从未指定要使用的 firebase npm 包的版本。也许那是我的错,但是一个简单的npm install firebase产生了一个与代码不兼容的版本。所以我问机器人:我应该为那个例子使用什么版本的 firebase npm 包?
我得到了一个有趣的答案:
我的意思是,它能够理解我的问题的上下文,并提供了一个(几乎)有效的答案。该代码确实与该版本的 firebase 兼容,因此我可以尝试一下。
但是当前的 Firebase 版本是 9,而不是 7,这就有问题。
解决了这些问题后,我就能够测试该应用程序并使其正常运行。
哦,是的,我仍然缺少“编辑”按钮。这是我要求的,因为没有多少教程涵盖应用程序的这一部分。他们通常坚持添加和删除项目。
那么这里出了什么问题?
Chat GPT的缺点
不要误会我的意思,Chat GPT 非常棒。
再加上 Dalle-2 和 MidJourney,这是我尝试过的最有趣、最先进的 AI 软件。
但它不会取代开发人员。
为什么?由于我上面强调的两个问题。如果您还没有接受它,那么该机器人只是从用于训练它的文章中吐出内容。
因此,它并没有为自己创建应该完美无缺的代码,而是简单地向我展示了其他作者所写的内容。不仅如此,它还向我显示有错误的过时内容。
那是因为它无法验证它是否确实给了我我所要求的。相反,它会猜测(成功率很高)我在找什么,然后给我看起来像的东西。
换句话说,在目前的状态下,Chat GPT 只有在用于训练它的内容经过验证并由其他人保持更新时才有用。
使用 Chat GPT 对我们开发者有什么影响?
我们只是在寻找另一种可能对我们的日常工作派上用场的工具。
如何?
现在,当你遇到问题时,你会在谷歌上输入问题,10 次中有 8 次你会登陆 StackOverflow。
现在,您将能够直接在 Chat GPT 上输入问题,它很可能会为您提供来自 SO 或一些排名靠前的文章的最佳答案。
您应该盲目信任 Chat GPT 返回的代码吗?
不行,还是得动脑筋。对不起,不对不起。
但它会给你一个快速的开始。
换句话说,Chat GPT 唯一能做的(至少现在)是执行更快的谷歌搜索。
哪一个,不要误会我的意思,随着我们每天执行谷歌搜索的次数,它很可能会派上用场。
也就是说,Chat GPT 确实会给你一个答案,根据它的算法,这是最适合你的答案。但是剩下的呢?你自己的喜好呢?
Chat GPT 将隐藏所有其他选项,有效地增加它认为对用户有效的少数选项。
这对内容创作者和寻找选择和替代品的人来说有多好?那是你来决定的。
每个人都讨厌 Copilot,他们也应该讨厌 Chat GPT 吗?
Copilot已经收到了一些诉讼,因为它在没有正确注明作者姓名的情况下给出受版权保护的代码。
Chat GPT 也会发生同样的情况吗?毕竟,正如您已经看到的那样,该机器人正在返回来自(我认为是)其他创作者的内容,而没有适当地注明他们的姓名。
当然,聊天目前是免费使用的,所以我认为不存在任何法律问题,但是一旦他们开始收费(这已经发生在 Dalle-2 上),他们就会引发法律纠纷,不是吗?
毕竟,他们实际上是在向您收取可在网上免费获得的内容的费用,并且没有注明适当的作者。
Chat GPT 不会取代开发人员。
它充其量只会简化您的搜索过程,并帮助您更快地找到问题的答案。
也就是说,如果它进入付费计划后不会因法律问题而关闭。
你怎么看?您会将 Chat GPT 集成到您的开发工作流程中吗?