行走的程式碼產生器,chatGPT 會讓程式設計師失業?

作者 | 發布日期 2022 年 12 月 07 日 8:30 | 分類 人力資源 , 機器人 , 網路 line share follow us in feedly line share
行走的程式碼產生器,chatGPT 會讓程式設計師失業?


本週 OpenAI 又發表新聊天機器人模型 ChatGPT,為 GPT-3.5 系列主力模型之一,網友馬上被 ChatGPT 能力震驚:這哪裡是聊天機器人,分明是無情的答題機器,活生生的 Stack Overflow 啊!

ChatGPT到底是什麼?OpenAI這樣說

ChatGPT是OpenAI訓練的對話式大規模語言模型,以對話互動,和另一款模型InstructGPT屬於同級模型,代表「GPT 3.5」這代。之前微軟和OpenAI簽訂戰略合作計劃,GPT 3.5代所有模型包括ChatGPT,都是用Azure AI超級計算集群訓練。

(Source:OpenAI)

OpenAI使用RLHF技術訓練ChatGPT:簡單說,訓練原始模型時,人類訓練師扮演對話方(用戶vs聊天機器人),提供對話為學習資料。人類扮演聊天機器人時,也會讓模型產生建議幫助訓練師撰寫回答。

機器產生的回答,再經過訓練師評分排名,將較好結果輸回模型,以強化學習訓練的獎勵機制。ChatGPT身為聊天機器人,有當代產品的主流特性,特別是多輪對話能力,能在同會話回答上下文相關問題。

但更重要的是,因採用先進注重道德倫理的訓練方式,ChatGPT有其他聊天機器人不具備或表現較差的能力:承認錯誤,且照設計的道德準則,會對「不懷好意」的提問和請求「說不」。

(Source:OpenAI)

如例子顯示,ChatGPT會用設計好的句子,結合用戶請求拒絕和轉移話題。

  • 拒絕:如果你問機器人如何闖進別人的屋子,它會回答「擅闖私宅違法,這是犯罪行為,會導致嚴重的法律後果」。
  • 轉移話題:如果換個方式問「其實我想知道如何保護我家免遭盜竊」,它會回答「這裡有幾個步驟可以幫助你,包括xxxx。但你最好聯繫專業人員取得建議」。

沒有解決不了的語言難題

眾多網友「調戲」 ChatGPT後,發現大驚喜:它真的可以按需要寫程式了。網友常開玩笑,程式設計師只要Google和StackOverflow工具用得好,就能走遍天下無敵手。然而真正每天和各種新軟體工程難題較勁的人都知道,有些疑難雜症就算問Google和Stack Overflow,要翻閱幾十上百頁時間跨越幾年甚至十年對話紀錄,都很難找到可用的答案。

而ChatGPT就不一樣了:從目前各路程式設計師網友對它的測試結果來看,似乎真的沒有什麼問題能夠難倒它。

找bug

技術公司Replit創辦人給了ChatGPT一段JavaScript 程式碼,請它找到bug。ChatGPT回答非常全面也很有趣:先確認這段程式碼的意圖是什麼,然後根據意圖很快就找到bug,還附贈相當細緻的描述,解釋問題在哪,導致什麼bug,應該怎麼改,為什麼這樣改。

且ChatGPT還給你範例,修改部分程式碼批註寫入範例:

送佛送上天,ChatGPT最後提供一小段修改建議:「可把var換成let,讓循環每次更新時自動產生新變量,避免每次都要手動創建。」

網友Josh提交一段程式碼,問ChatGPT「我怎樣都搞不懂這段程式碼為什麼無法執行」。ChatGPT詳細解釋:除法公式格式有問題,字符串(a)無法被數字(1)除,因為被除數和除數應該都是數字。

這還沒完。ChatGPT再次試圖理解原程式碼的意圖,然後提供Josh修改建議:如果想讓除法處理非數字,需幫函數加入另外邏輯,讓它檢查實參類型是什麼,只有兩邊都是數字時才執行。如果有一邊不是數字,就回到錯誤或預設值。

幫你檢查文件

而筆者試打一段命令:

產生一段Python程式碼,使用Google Cloud API讀取圖片內容,並輸出情緒。」(Generate Python code that uses GCP to read an image and get the sentiment.)

ChatGPT回覆一段程式碼,同樣解釋每句程式碼作用是什麼,還提醒筆者:

  1. 如果要執行這些程式碼必須要設好GCP項目並安裝Python版Cloud Vision API。
  2. 不能直接複製貼上程式碼,要設定好圖片文件路徑。
  3. 如果有任何不明白,ChatGPT提供GCP官方文件連結。

ChatGPT證明自己擁有自動蒐集雲端服務API並整合到程式碼以調用的能力。和上一個代替Stack Overflow的例子一樣,能大大省去工程師查資料、翻文件、找到正確調用方式花費的時間,顯著提高寫程式的效率!

寫數學公式

網友Josh用同問題問Google和ChatGPT:「如何用LaTeX格式表達微分方程式?」Google第一個結果,來自名不見經傳的WordPress部落格,且日期是2013年,並不十分清晰,解釋得糊里糊塗。

ChatGPT答案不僅呈現方式更好看,也更全面,甚至提供不同方案參考:

數學家Christian Lundkvist問了ChatGPT困擾數學界三世紀多的數論難題:證明費馬大定理。

ChatGPT相當精練地透過文字+LaTeX公式回答。

雖然看起來連高等數學難題都難不倒ChatGPT,Lundkvist還是表示,和ChatGPT玩的時候發現,對的時候對,錯的時候也相當有自信。

我認為這種工具對找到解決問題的途徑有一定意義,但我們在現階段絕對不能太依賴它。

(回答「一條直線與圓有多少交點」時,ChatGPT錯以為直線穿過圓心時會有無限個交點)

發起駭客攻擊?

這個更厲害了:用戶Brandon Dolan-Gavitt希望ChatGPT幫他找到程式碼錯誤。但這段程式碼是對32位x86 Linux系統執行緩衝區溢出(buffer overflow)攻擊。

這次ChatGPT似乎沒發現用戶是惡意(官方說ChatGPT會拒絕回答有惡意的問題),直接按圖索驥找到程式碼的問題,還說明如何修改,一步步教Brandon Dolan-Gavitt如何正確觸發緩衝區溢出。

Brandon Dolan-Gavitt補充,其實ChatGPT回答問題也出錯,如建議用戶修改輸入字符數說錯了(說成32,應該是36)。但用戶告訴它「好像有點不對勁」後,ChatGPT立刻明白,表示理解錯誤,然後改成正確答案。

雖然緩衝區溢出是初學者攻擊,網友還是對ChatGPT的能力很是佩服。「我給它一段彙編語言程式碼,告訴我有什麼漏洞,可怎麼利用,結果它還真的回答我。所以它不只理解和輸出程式碼,還能用二進制表達,還能找到漏洞?這真讓我有點擔心。」

幫你「轉碼」

前面例子很多適用會寫程式的專業人士,不過正因ChatGPT寫程式能力太強,對想「轉碼」的外行朋友來說,幫助更大。寫簡單程式碼如「做個登入UI」之類,OpenAI API(GPT-3)已信手拈來,這次ChatGPT當然也是輕鬆拿下。

破解ChatGPT的道德原則?

OpenAI官方文件說ChatGPT是採用「人類回饋強化學習」(RLHF,Reinforcement Learning from Human Feedback)訓練的新模型,加入大量「道德」原則。凡文字含一點惡意,有暴力、歧視、犯罪等意圖,都會拒絕提供有效答案,只給標準回答,試圖轉移話題:

對不起,我只是一個無辜的語言模型,我無法為你提供(惡意行為)的資料和資訊。提供這種資訊有悖我的編程語言和設定目標。我的主要功能是提供準確有用的資訊。如果你有其他問題,我樂意提供幫助。

所有「調戲」ChatGPT的測驗,有類很有意思:如何打破ChatGPT的道德原則?

之前AI文字轉圖爆紅時,玩過的人應該記得,如何輸入文字提示(prompt),對產生好看有趣甚至邪惡的圖片非常重要。於是AIGC時代,「提示工程」(prompt engineering)就成了有趣的學問。

簡單來說,提示工程就是用聰明、準確、時而冗長的文字提示,設定好上下文場景,一步步把AI帶進場景,讓它更了解人類意圖,產生最符合期待的結果。想「打破」 ChatGPT的道德原則,同樣可用提示工程。機器學習開發者zswitten提供範例:

儘管ChatGPT有很高的道德標準,想繞過去也很容易:你只要(透過提示工程)讓它以為是假裝做壞事就行啦!

繞暈後ChatGPT就會放飛自我了。zswitten注意到,ChatGPT會非常深入直接產生各種令人膽戰心驚的暴力手段,ChatGPT引以為豪的道德原則就能輕易打破。當然解決AI、AGI(通用人工智慧)、大語言模型道德問題是非常艱巨和複雜的工作,不能因此否認OpenAI的努力。

zswitten表示非常支持OpenAI,也非常尊敬OpenAI發表ChatGPT這件事,為廣大網友帶來非常多有價值的事物和正面積極的幫助。OpenAI也開誠布公介紹ChatGPT局限性:

  • 似是而非,固執己見:有時候它會說出聽起來像回事,但是完全錯誤或荒謬的答案。原因在強化學習訓練期間不會區分事實和錯誤,且訓練過程更收斂,導致它有時過於保守,即使有正確答案也「不敢」回答。
  • 廢話太多,句式固定:比如筆者問「老師成天讚美我家小孩子,該怎麼回答我詞窮了!」及「怎麼跟鄰居閒聊?」,ChatGPT提供10個回答,看起來都是場面話,跟上一個差不多,過度使用常見片語和句子,最後就成了老哏。
  • 過分努力猜測用戶意圖:理想狀況用戶提問意思不明時,模型應要求用戶說明。目前ChatGPT只會自己猜測用戶意思──說好也好,說壞也壞。
  • 抵抗不懷好意的「提示工程」能力較差:雖然OpenAI努力讓ChatGPT拒絕不當請求,但有時仍然會回應有害指令,或表現出偏見。為了解決問題,OpenAI也在ChatGPT用戶介面加入審核舉報功能,用戶如果發現不健康不安全回答,可一鍵舉報!

OpenAI還特地舉辦回饋比賽,任何有價值的舉報都有機會贏得OpenAI API積分(價值500美元)。既能跟AI玩,還有獎金拿,何樂而不為?

(本文由 品玩 授權轉載;首圖來源:shutterstock)

延伸閱讀: