ChatGPT 寫一個WordPress 插件僅需5分鐘

不要把重點放在它上面,但我有點嚇壞了。作為一項實驗,我要求 ChatGPT 編寫一個插件,以節省我妻子管理網站的時間。我寫了一個簡短的描述,而 ChatGPT 寫了整件事:用戶界面、邏輯等等。

不到五分鐘。

有影響。我們將在幾分鐘內解決這個問題。首先,讓我向您介紹一下經歷和發生的事情。

需求 line-randomizer-paypal-demo-wordpress-2023-01-31-23-41-28

ChatGPT 編寫了生成此 UI 並處理這些行的插件。

大衛格維茲/ZDNET

我的妻子是一個基於 WordPress 的電子商務網站的所有者,該網站專註於一種流行的愛好。她還為她網站的客戶開設了一個非常活躍的 Facebook 群組。每個月她都會隨機生成一份名單,然後使用該隨機名單為 Facebook 群組製作一個虛擬的輪子旋轉動畫。她一直在使用 Internet 上的一個網站,該網站可以很好地隨機化行,但收費高於導出列表的價值。

當我看著她努力恢復隨機名稱時,我想如果我寫一個快速的 WordPress 插件我們可以安裝在她的網站上可能會有所幫助。她每天都在儀錶板中,因此將其用作工具會很有幫助。

但即使是一個簡單的插件也需要我幾天的時間來編寫,包括用戶界面元素和邏輯代碼,這些天我已經忙於項目了。

然後我想到了 ChatGPT。媒體上有一些關於ChatGPT 作為編程工具的討論,所以我決定試一試。

提示 code

ChatGPT 的輸出(來自我的第一個最基本的提示)

大衛格維茲/ZDNET

讓 ChatGPT 生成任何東西的關鍵是精心編寫的提示。在編程的情況下,將其視為經理或客戶。你必須清楚地描述你需要什麼才能得到你想要的。我從一個非常基本的提示開始,只是想看看它是否有效。這是我使用的提示:

編寫一個 PHP 8 兼容的 WordPress 插件,它提供一個文本輸入欄位,可以將行列表粘貼到其中,以及一個按鈕,當按下該按鈕時,列表中的行隨機化並在第二個文本輸入欄位中顯示結果。

一分鐘之內,它生成了您在右側看到的代碼。我把生成的代碼複製到一個.php文件中,放到和.php文件同根目錄的文件夾里,壓縮,上傳到她的伺服器。有效。

當我把它拿給我的妻子看時,她適當地留下了深刻的印象和驚訝。但隨後齒輪開始轉動,她要求一個新功能:確保重複的名字不是並排的。

對於她的應用程序,她有時需要多次在列表中包含某人的名字。但她不想讓那些重複的人聚在一起。

我修改了原來的提示,添加了以下附加條件:

…確保沒有兩個相同的條目彼此相鄰(除非沒有其他選項)…提交的行數和結果中的行數彼此相同。

我加入了「除非沒有其他選擇」這個短語和相同的計數要求,因為我想確保所有的名字都被包括在內,我擔心它會優先考慮沒有兩個名字並排的需要保留所有名稱。

大約 30 秒後,我有了一個新插件。我把那個上傳到伺服器並試了一下。它有效,但輸出包含一些空行。所以我將這個條件添加到我之前的提示中:

……沒有空行……

到現在為止,我已經習慣了總是不到一分鐘的周轉時間。又一次上傳和測試,再次成功。

我想要最後一個功能,只是為了確認已經處理了多少行。我希望插件顯示輸入和輸出欄位的行數。這是提示添加:

…在第一個欄位下,顯示文本說明「要隨機化的行:」以及源欄位中的非空行數。在第二個欄位下,顯示文本說明「已隨機化的行:」以及目標欄位中的非空行數。

這主要是有效的。運行前,輸出欄位顯示一行。但是一旦隨機化過程完成,它就會在兩個欄位中顯示準確正確的行數。

代碼質量

總的來說,代碼質量是乾淨的。我只提供原始回復,否則它不適合這篇文章。該程序正確生成了 WordPress 標題塊並為插件編寫了儀錶板用戶界面,以及插件的處理邏輯。

它確實將我的摘要行放在欄位上方,儘管我在下面指定了,但這並不是什麼大問題。客戶可能會從人工承包商那裡得到同樣的錯誤,然後需要一些返工來修復。

編碼有效,但它沒有包含 WordPress 編程的所有最佳實踐。例如,它沒有清理用戶輸入。WordPress 社區對清理輸入非常嚴格,因此黑客無法在欄位中填充可能損壞站點的數據——而這段代碼沒有這些。

作為後來的測試,我確實指示 Ai 對輸入進行清理,它確實……在某種程度上。它清理了 PHP 函數內的輸入,但在 HTML 中調用 PHP 時沒有清理輸入。那肯定會給黑客留下一個空缺。

它還將插件的菜單項放入「設置」中。我可能會把它放在「工具」下,或者為該功能提供自己的菜單項。由於我沒有指定應從何處調用它,我認為 ChatGPT 將菜單項放在它調用的位置是一個可行的決定。

我在提示中添加了最後一個要求,要求 AI 為插件命名:

編寫一個名為「Robo Randomizer」的 PHP 8 兼容 WordPress 插件,它……

奇怪的是,人工智慧給了我一個完全不同的插件,生成一個提供短代碼而不是儀錶板界面的插件。讓我向非 WordPress 用戶解釋一下,因為它很有趣。

當寫這樣的東西時,您可以在網站上將其提供給訪問者(稱為前端)或登錄到網站儀錶板以維護端(後端)的人。在我最初的一組提示中,我沒有指定前端或後端,但 AI 寫了我想要的東西,這是一個後端,工具的儀錶板界面。

但最後一次,它決定將插件編寫為前端工具,使其通過簡碼執行。在 WordPress 中,您可以在帖子中嵌入一個短代碼(類似於 [隨機化行]),它將在插件中運行代碼。AI 生成的最後一個版本給了我這樣一個簡碼,它允許向網站訪問者展示隨機化行功能。

在此之後,ChatGPT 有點失去了線索。我無法將其他功能添加到原始插件中,而 ChatGPT 主要只是重複生成短代碼版本。顯然,代碼維護不是 ChatGPT 的核心優勢。

啟示

顯然,這是一個簡單的插件。這大約是我在加州大學伯克利分校任教時給我的第一年編程學生布置的作業的大小。它與我為 50,000 多個用戶維護的更大、更大的開源 WordPress 插件的複雜性相去甚遠。

上周,當我第一次使用 ChatGPT 為我的妻子構建 quickie 插件並發布推文時,我社交媒體上的記者予以了反對。以下是他們的一些擔憂:

是邪惡的嗎?有人擔心人工智慧會在插件中嵌入惡意(或至少是促銷)信息,而非程序員用戶永遠不會知道。但事實是,如果你不是編碼員並且看不懂代碼,即使你與另一個人簽訂合同,你也不會真正知道裡面有什麼。這一切都歸結為信任聲譽,或者讓您信任的人查看代碼。就我實驗中生成的代碼而言,它是乾淨的。

它是最好的嗎?在這裡,人們再次以與人類編碼員不同的標準來支持 AI 的代碼。我是一個優秀的程序員,但我的代碼有錯誤。它不是最好的……至少一開始不是。但是對於人類來說,代碼會隨著時間的推移變得更好。我不確定 AI 是否可以採用現有代碼、改進它、調試它並增強它。然而,有時事情只需要是功能性的。他們是否是精英中的精英並不總是那麼重要。足夠好往往是足夠好。它生成的代碼足夠好。

它會減少人類編程演出的數量嗎?幾乎毫無疑問。我討厭看到一台機器搶走任何人的工作(尤其是如果它是我可能想要的)。人工智慧絕對是快速簡單項目的一個選擇,無論是寫作還是編程。毫無疑問,人們的薪水將受到影響。

幾十年來我一直在研究人工智慧。我做了一篇關於人工智慧的論文。但即使有所有這些背景,高質量生成人工智慧的激增也讓我吃驚。也就是說,我們現在關注的是「足夠好」的生產力水平。不幸的是,這正是許多客戶的要求。

但是——至少現在——ChatGPT 和它的朋友們不能像這樣寫超級深入的分析文章,因為它們反映的是觀點、軼事和多年的經驗。雖然他們可能會為更大的編碼項目編寫子常式和函數,但他們就是無法編寫主要的編碼項目。

例如,去年我不得不與一家主要的 API 提供商舉行 20-30 次會議,以便將他們的服務集成到我的服務中。這些會議中的大多數將業務問題與技術要求和許可政策混為一談。我拒絕任何 AI 去忍受、理解這種官僚主義情況的細微差別並滿足合作夥伴的要求,然後能夠生成每個人都能同意的代碼模塊。

所以,是的,我為我妻子「製作」的插件有多好讓我有點吃驚。但人工智慧在接受經驗豐富的開發人員和作家的作品之前還有很長的路要走——只要客戶想要經驗豐富的開發人員和作家創作的那種作品。我的朋友們,我確實擔心這一點。

相關文章