如何使用ChatGPT編寫代碼

圖片1.png關於ChatGPT更有趣的發現之一是它可以編寫非常好的代碼。我在二月份測試了這個,當時我要求它編寫一個我妻子可以在她的網站上使用的 WordPress 插件。它做得很好,但這是一個非常簡單的項目。

如何使用ChatGPT寫簡歷| Excel 公式 |散文|求職信

如何使用 ChatGPT 編寫代碼作為日常編碼實踐的一部分?這就是我們要在這裡探索的內容。

ChatGPT 擅長哪些類型的編碼?

關於 ChatGPT 和編碼有兩個重要事實。首先,它實際上可以編寫有用的代碼。第二是它可能會完全迷路,掉進兔子洞,追著自己的尾巴,並產生絕對無法使用的垃圾。

我發現這很困難。完成 WordPress 插件後,我決定看看 ChatGPT 能走多遠。我為 Mac 應用程序編寫了非常仔細的提示,包括用戶界面元素、交互、設置中提供的內容、它們如何工作等的詳細描述。然後我將其輸入 ChatGPT。

ChatGPT 以大量文本和代碼進行響應。然後它在代碼中間停止了。當我要求它繼續時,它吐出了更多的代碼和文本。我在繼續之後請求繼續,它轉儲了越來越多的代碼。但是……都沒有。它沒有確定代碼應該放在哪裡,如何構建項目,而且——當我仔細查看生成的代碼時——它遺漏了我要求的主要操作,只留下簡單的文本描述,說明“程序邏輯放在這裡。 ”

經過一系列重複測試後,我很清楚,如果你要求 ChatGPT 提供完整的應用程序,它將會失敗。這一觀察的一個推論是,如果您對編碼一無所知並希望 ChatGPT 為您構建一些東西,那麼它就會失敗。

ChatGPT 的成功之處(而且做得非常好)在於幫助那些已經知道如何編碼的人構建特定的例程並完成特定的任務。不要要求在菜單欄上運行應用程序。但是,如果您要求 ChatGPT 提供一個例程,將菜單放在菜單欄上,然後將其粘貼到您的項目中,那就會很順利。

另外: 如何使用 ChatGPT 創建應用程序

另外,請記住,雖然 ChatGPT似乎擁有大量特定領域的知識(而且經常如此),但它缺乏智慧。因此,它可能能夠編寫代碼,但無法編寫包含需要深厚經驗才能理解的非常具體或複雜問題的細微差別的代碼。

使用 ChatGPT 演示技術、編寫小型算法並生成子例程。您甚至可以讓 ChatGPT 幫助您將更大的項目分解為多個塊,然後您可以要求它幫助您對這些塊進行編碼。

因此,考慮到這一點,我們來看看如何使用 ChatGPT 編寫代碼的一些具體步驟。

ChatGPT 如何幫助您編寫代碼

1. 縮小並明確您的要求

第一步是決定您要向 ChatGPT 詢問什麼——但還沒有詢問任何內容。決定您希望函數或例程執行什麼操作,或者您想要了解什麼並將其合併到代碼中。決定要傳遞到代碼中的參數以及想要輸出的內容。然後看看你將如何描述它。

想像一下,您正在付錢給一名人類程序員來做這件事。您是否向該人提供了足夠的信息來完成您的任務?或者你是否太含糊,而你付錢的人更有可能提出問題或提交與你想要的東西完全無關的東西?

這是一個例子。假設我希望能夠總結任何網頁。我想向它提供類似這篇文章的內容,並得到一個經過深思熟慮且適當的簡短摘要。作為我的輸入,我將指定一個網頁 URL。作為我的輸出,它是帶有摘要的文本塊。

2. 使用 ChatGPT 探索庫和資源

繼續上面的示例,提取網頁數據的一種非常古老的方法是查找 HTML 段落標記之間的文本。

但隨著人工智能工具的興起,使用人工智能庫進行智能提取和總結變得更有意義。 ChatGPT 擅長的地方之一(也是您可以輕鬆驗證以避免其權威但錯誤的行為模式的領域)是查找庫和資源。

OpenAI(ChatGPT 的製造商)出售對 GPT-3 和GPT-4引擎的 API 訪問權限,這將完全滿足我們的需求。但在這個例子中,假設我們不想支付交易費用。

因此,讓我們看看與 ChatGPT 的交互,以了解如何在 PHP 中運行的項目中免費使用這樣的工具。

我從一個提示開始,旨在引出有關哪些庫將提供我想要的功能的信息。庫(對於那些不是程序員的讀者來說)是程序員可以訪問的代碼體,它可以為特定目的完成大量繁重的工作。現代編程的一個重要部分是尋找並選擇正確的庫。所以這是一個很好的起點。

在本例中,我正在查看其他人編寫的用於總結文本的代碼塊。這是我的第一個提示:

描述十個不同的開源人工智能庫(以及它們使用的語言),我可以使用它們生成任何網頁主要核心內容的摘要,忽略任何廣告或嵌入材料。

這正是我想要的,包括提及 OpenAI 的產品。我認為 OpenAI 在這裡會做得很好,但對於這個假設的項目,我不想為 API 費用做預算。所以我會縮小問題範圍。

這些都是免費的嗎?

ChatGPT 給出的答案是兩面下注。它是這樣說的:“是的,所有這十個人工智能庫都是開源的,可以免費使用。但是,其中一些庫可能有使用限制,或者需要付費才能訪問附加功能或資源。”因此,基於此,我澄清了我的疑問。

以下哪些庫沒有使用限制並且不需要任何額外的付款或許可?

請注意,這在很大程度上是一次對話。我不必重新問最初的問題。我只是以同樣的方式進行深入研究,就像我手頭上有專家並尋求澄清一樣。在本例中,ChatGPT 給了我八個庫選擇,但沒有一個提到我計劃編碼的 PHP 語言。因此,這是下一個提示:

在這 8 個庫中,我可以使用 PHP 中的任何一個庫嗎?

它返回了三個庫,但我不確定每個庫的作用。那麼另一個問題:

Sumy、Gensim 和 NLTK 之間有什麼區別?

我還是不確定,所以我明確了我的使用計劃,然後問:

如果我想創建網頁新聞文章的摘要,哪個庫會更好?

我得到的答案是明確且有希望的:“Sumy 是專門為文本摘要而設計的,其任務是創建一個摘要,從一段文本中捕獲最重要的信息。”所以,現在是時候看看將它與 PHP 一起使用時涉及到什麼了。我針對該項目的這一部分提出了最後一個問題:

您能解釋一下如何在 PHP 中使用 Sumy 嗎?

請隨意在您的計算機上進行操作並將這些提示粘貼到您的 ChatGPT 實例中。請注意,在步驟 1 中,我決定了要獲取有關哪個程序模塊的幫助。然後,在這一步中,我與 ChatGPT 進行了對話,以決定使用哪個庫以及如何將其集成到我的項目中。

這可能看起來不像編程,但我向你保證它確實是。編程不僅僅是在頁面上編寫代碼行。編程就是弄清楚如何將所有不同的資源和系統集成在一起,以及如何與解決方案的所有不同組件進行通信。在這裡,ChatGPT 幫助我進行了集成分析。

順便說一句,我很好奇 Google 的 Bard 是否可以以同樣的方式提供幫助。 Bard 實際上無法編寫代碼,但它確實通過 ChatGPT 的響應對編程的規劃方面提供了一些額外的見解。因此,請毫不猶豫地使用多種工具來三角測量您想要的答案。故事是這樣的:Bard vs. ChatGPT:Bard 可以幫助你編碼嗎?自從我寫那篇文章以來,Google 為 Bard 添加了一些編碼功能,但它們並不是那麼好。您可以在這裡閱讀:我測試了 Google Bard 的新編碼技能。進展並不順利。

接下來是編碼。

3.要求ChatGPT編寫示例代碼

好吧,我們在這裡暫停一下。本文標題為《如何使用ChatGPT編寫代碼》。它會的!但我們確實要求 ChatGPT 編寫示例代碼。等待。什麼?

另外:什麼是 GPT-4?這是您需要了解的一切

讓我們說清楚。除非您正在編寫一個非常小的函數(例如 ChatGPT 為我妻子編寫的行排序器/隨機化器),否則 ChatGPT 將無法編寫您的最終代碼。首先,你必須維護它。 ChatGPT 不擅長修改已經編寫的代碼。可怕的是,它沒有做到這一點。因此,要獲得新代碼,您必須要求 ChatGPT 生成新代碼。正如我之前發現的,即使您的提示幾乎完全相同,ChatGPT 也可能會以非常意想不到的方式改變它給您的提示。

因此,底線是:ChatGPT 無法維護您的代碼,甚至無法對其進行調整。

這意味著你必須自己做。眾所周知,一段代碼的初稿很少是最終代碼。因此,即使您期望 ChatGPT 生成最終代碼,它也確實是一個起點,您需要完成它,將其集成到更大的項目中,測試它,完善它,調試它,等等。

另外: 我要求 ChatGPT 寫一個簡短的《星際迷航》劇集。結果確實成功了

但這並不意味著示例代碼毫無價值。離得很遠。我們來看一下我根據之前描述的項目寫的一個提示。這是第一部分:

編寫一個名為summary_article 的PHP 函數。

作為輸入,summary_article 將被傳遞到 ZDNET.com 或Reuters.com 等新聞相關網站上的文章的 URL。

我告訴 ChatGPT 它應該使用的編程語言。我還告訴它輸入,但同時提供兩個站點作為示例,以幫助 ChatGPT 理解文章的風格。老實說,我不確定 ChatGPT 是否忽略了這一點指導。接下來,我將告訴它如何完成大部分工作:

在summary_article 中,檢索提供的URL 處的網頁內容。使用 PHP 中的 Sumy 庫和任何其他必要的庫,提取文章的主體,忽略任何廣告或嵌入材料,並將其總結為大約 50 個單詞。確保摘要由完整的句子組成。如有必要,您可以超過 50 個單詞來完成最後一句話。

這與我指導員工的方式非常相似。我想讓那個人知道他們不僅僅局限於蘇梅。如果他們需要其他工具,我希望他們使用它。

我還指定了大概的字數來為我想要的摘要創建界限。該例程的更高版本可能會將該數字作為參數。然後我最後說出了我想要的結果:

處理完成後,對 summarize_article 進行編碼,以便它以純文本形式返回摘要。

生成的代碼非常簡單。 ChatGPT 確實調用了另一個庫 (Goose) 來檢索文章內容。然後它將結果傳遞給 Summy(限制為 50 個字),然後返回結果。就是這樣。但是,一旦編寫了基礎知識,只需編程即可返回並添加調整、自定義傳遞給兩個庫的內容並交付結果。圖片2.png

一個有趣的注意點。 ChatGPT 使用 2021 年之後(當 ChatGPT 的數據集結束時)的 URL 創建了對其編寫的例程的示例調用。

我對照路透社網站和 Wayback Machine 檢查了該 URL,發現它不存在。 ChatGPT 剛剛編造出來。

常見問題解答

ChatGPT 會取代程序員嗎?

現在不行——或者至少現在還不行。 ChatGPT 的編程水平與才華橫溢的一年級編程學生的水平相同,但它很懶(就像那個一年級學生一樣)。它可能會減少對入門級程序員的需求,但在目前的水平上,我認為它只會讓入門級程序員(甚至是有更多經驗的程序員)編寫代碼和查找信息變得更容易。這絕對可以節省時間,但它可以獨立完成的編程項目很少——至少現在是這樣。 2030年?誰知道。

如何在 ChatGPT 中獲得編碼答案?

就問吧。您在上面看到了我如何使用交互式討論對話框來縮小我想要的答案的範圍。當您使用 ChatGPT 時,不要指望一個問題就能神奇地為您完成所有工作。但是使用 ChatGPT 作為幫助者和資源,它會給你很多非常有用的信息。當然,要測試這些信息——因為正如 OpenAI 聯合創始人約翰·舒爾曼 (John Schulman) 所說,“我們最關心的是事實,因為模型喜歡捏造東西。”

如果我使用 ChatGPT 編寫代碼,那麼誰擁有它?

事實證明,目前還沒有很多判例法可以明確回答這個問題。美國、加拿大和英國要求受版權保護的東西必須是由人手創建的,因此人工智能工俱生成的代碼可能不受版權保護。還存在基於培訓代碼的來源以及生成的代碼的使用方式的責任問題。 ZDNET 對此主題進行了深入研究,與法律專家進行了交談,並撰寫了以下三篇文章。如果您擔心這個問題(如果您正在使用人工智能來幫助編寫代碼,那麼您應該擔心),我建議您閱讀它們。

  • 誰擁有代碼?如果 ChatGPT 的 AI 幫助您編寫應用程序,它仍然屬於您嗎?
  • 如果您使用人工智能生成的代碼,您的責任風險是什麼?
  • 一個棘手的問題:誰擁有人工智能生成的代碼、圖像和敘述?

ChatGPT 知道哪些編程語言?

他們中的大多數。我嘗試這個時非常偏離主題。我測試了常見的現代語言,如 PHP、Python、Java、Kotlin、Swift、C# 等。但後來我讓它用晦澀的黑暗時代語言編寫代碼,如 COBOL、Fortran、Forth、LISP、ALGOL、RPG(報告程序生成器,而不是角色扮演遊戲),甚至 IBM/360 彙編語言。

作為錦上添花,我給出了這樣的提示:

編寫一個序列,在 PDP 8/e 前面板上以 ascii 閃爍燈顯示“Hello, world”

PDP 8/e 是我的第一台計算機,ChatGPT 實際上為我提供了使用前面板開關切換程序的說明。我印象深刻,很高興,但又有點害怕。

底線是什麼? ChatGPT 是一個非常有用的工具。只是不要賦予它超能力。然而。

相關文章

查看更多 >>

透過 HIX.AI 釋放 AI 的力量!