Re: [討論] 用AI寫code產生的疑問
AI(GPT)用於Coding的實務心得
作者是虎尾科大資工系陳國益教授,經同意後轉載文字內容,原連結於下:
https://www.facebook.com/kuoyichen/posts/10230748453674915
在上週前往華新麗華授課時,有工程師問到:若有要接手的大型專案,應如何透過AI協助,加速對專案的理解速度,或是快速產生手冊、API列表等,傳統上要花非常多時間交互閱讀理解才能完成的工作?
經過數天的測試,ChatGPT(GPT-4)確實能夠在理解、修改大型程式專案提供有效的協助,其步驟與指令說明如下:
在接手大型專案時,常會發生程式碼繁多、文件不齊全的狀況,閱讀跨檔案的大量程式碼,不但耗時耗力,更常發生掛一漏萬的狀況。此時,ChatGPT能夠有效的協助,包括直接修改、整理API與參數、建立說明文件。
在處理多檔案的大型專案時,因為檔案之間的變數符號連結互有相關,因此首先要能夠讓ChatGPT閱讀所有專案檔案,在此我們以一個GitHub上的俄羅斯方塊專案為例,該專案包括三個主要python檔案,分別為block.py、constants.py、tetris.py,如下所示
因為要在同一個對話session中,讓ChatGPT讀取各個檔案的所有程式碼,因此建議以
GPT-4進行,較有餘裕(有25000個token可供使用),讀入程式碼時指令後半段的summary
in 10 words是為了避免ChatGPT對單一程式解釋過長,影響之後我們實際要做的事,指令如下所示:
read block.py as follows, summary in 10 words
貼上整個 blocky.py 的程式碼
read constants.py as follows, summary in 10 words
貼上整個 constants.py 的程式碼
read tetris.py as follows, summary in 10 words
貼上整個 tetris.py 的程式碼
當ChatGPT閱讀完所有程式碼後,我們就可以直接下指令,請其調整關鍵參數,例如調整初始方塊速度,指令如下:
modify the program to start speed as 5
ChatGPT會提供修改位置與函式,複製程式碼後即完成修改,如下所示:
除了直接修改程式之外,也可請ChatGPT針對此專案撰寫使用手冊,AI會針對全部匯入的專案程式碼,進行整理並撰寫手冊,指令如下:
write a manual for this program
因應之後開發需求,我們也可以要求ChatGPT整理專案中所使用到的API列表,並以表格方式呈現,AI便會將整個專案中全部API整理為表格供參考,指令如下:
write the API list and description for this program with a markdown table
在大型專案中,各個關鍵參數的位置及其意義極為重要,但一般來說需要自行閱讀、筆記、梳理後才能知道各個關鍵參數的意義。我們可以請ChatGPT針對此專案,列出所有參數、標示位置、說明用途,並以表格方式呈現,可以大幅降低接手大型專案的難度與成本,指令如下:
show all parameters, description and its location in this program as a
markdown table
透過請ChatGPT(GPT-4)閱讀所有程式碼作為先備知識之後,AI就可以變成一個徹底瞭解專案程式架構的助理,不論是直接修改程式,或對程式進行分析報告都沒問題,經測試,在GPT-4的單一對話session 25000 token限制下,同時閱讀十個程式檔案(平均300行)均十分順暢,也能夠跨檔案理解參數與函式之間的符號關連,確實是協助工程師接手大型專案的利器。
示例用專案位置:(https://github.com/benycze/python-tetris)
_
圖片詳見原文連結內。
再也不怕連註解都不寫的前任了?
--
AI_Art AI藝術與創作板 歡迎各方前來討論AIGC創作與相關議題!
AI情報屋營業中
噗浪:https://www.plurk.com/Zaious
IG :https://www.instagram.com/zaious.design/
日曆:https://zaious.notion.site/zaious/22c0024eceed4bdc88588b8db41e6ec4
--
炫技當網紅成分多於實用,例如API List 這樣的表格,連參
數說明都沒有,根本就不能實用。
javadoc 懶人版?
把公司的程式碼貼給ChatGPT,感覺遲早有一天會出大事,跟
把公司專案直接放公開GitHub上差不多了。
開源的才能貼出去吧
把程式碼送給OpenAI 哪間公司允許員工這麼搞?
it's cool and hip so it's ok
300行...看向那個3000行的method,好想去給原作者蓋布袋
出事了你有辦法負責的話你就用啊@@
推四樓
26
首Po相信對新技術具有敏銳度的各位, 在這幾個月都有使用過AI來幫忙寫code, 但在使用過程中不經有一個問題一直迴盪在我的腦海中: 「AI幫我快速生成一個feature的模板, 我在修改的過程中就像在做code review,3
幾個未來可能的 cases: 當工程師工作開始都提早完成了,會有以下幾種發展 1-0: 裝忙不要被老闆發現 or 更早下班 1-1: 老闆接更多工作 1-2: 砍人,更少工程師做更多工作14
其實很多新技術在早期和成熟後相比你會感覺他的應用是完全顛覆最初想法的 例如 web 仔最熟稔的 web 好了,網路泡沫時代前大家對電子商務 的觀點是在網路上的一個廣告頁,每個網站就像一間街邊店一樣,透過網址 這串虛擬地址你可以造訪網路上的任何一間店,找到你要的資訊,更容易媒合實體交易 當時的 web 就是一本電話簿的概念18
這篇展示ChatGPT的威力與限制。 他問Bing如何raycast一個有displacement map的geometry. 原po問到最後,答案是不可能或給錯誤的程式。 下面有人回答他把原po的問提去問ChatGPT4,說得到很好的解決。2
今天剛好在它版討論AI寫Code,晃過來看到這邊也在聊, 小弟是個很久沒專注在Coding的前低階工程師,所以這篇文大神前輩們看看笑笑就好 主要來丟幾的AI Coding工具,這邊的朋友有興趣可以去玩玩看, 直接叫GPT4寫Code真的不會是個好用的方法。3
事實上未來沒有寫code這種東西 我們會在當下才會認為應該是這樣 而未來根本沒有所謂的寫code 而是跟AI說你要解決什麼問題 它就幫你解決這樣48
跟本文可能不相干 昨天公司一場面試 是線上面試 在考線上coding的時候 對方可能也不知道他打code的軌跡我們是看的到的 就看到問題那個區塊被全選複製 過幾分鐘後對方答案突然行雲流水全部打出來3
回覆應該會變得很長所以特地開一篇。 在專案規模越變越大的時候怎麼去處理祖傳代碼? 從人類既存的軟體史來說這些祖傳代碼幾乎沒有修好的可能性,從這個方向由AI做出發點來討論。 專案本身的複雜度正比於 BUG 的發生率,而 BUG 的發生通常是錯誤的抽象造成的結果。 所以AI可以處理嗎?不行,因為是人類在提需求時就已經有問題了。
41
[請益] 發現同事反組譯自己程式碼怎辦自己寫了一個較有技術價值的專案(是自己主動寫的,非經主管指示)並已經用在公司 內部環境,但發現同事反組譯了自己的程式碼,參考了很多關鍵程式碼片段以 及設計的方式,寫了一個功能一模一樣的程式,還刻意變造讓人以為不是抄襲來的, 比如將if else對調,稍作一些沒意義的修改,各位發現之後會怎麼做? 跟主管講呢?還是當作沒這回事.....20
[請益] 公司請人如何看待ChatGPT?就是原本想轉換新程式語言, 原本推算會有很多東西要學, 但剛好ChatGPT騰空出世, 一開始想用ChatGPT來學 結果發現因為知道需求,23
[請益] coding style差太多怎辦?大家好 小弟上上份工作快離職前 聽到新進的同事說 他都習慣把程式寫成一個一個小的function 後來離職我花了一點時間學習設計模式8
[心得] 用 ChatGPT 幫忙整理 Code Changes部落格: GitHub: 相信大家對 ChatGPT 不會很陌生,這是目前在生成式人工智慧 (AIGC: AI Generated Content) 內的當紅炸子雞,然而 ChatGPT 對於軟體工程師有什麼影響呢?能否透過 ChatGPT 改善團隊流程或協助開發?而我現在想到最直接的就是用 ChatGTP 幫忙寫 Git7
[心得] ChatGPT協助軟體開發的指令集近來寫程式時大量試用ChatGPT 剛好使用golang開發side project, 所以在各種情況下遇到的問題,都試著問ChatGPT 真的覺得超好用的! 網頁好讀版:附上心智圖、完整範例(有些範例太長,PPT沒有辦法完整呈現)5
Re: [問卦] chatGPT是不是會消滅一堆文組職業?現在 vs code 已經可以整合 GPT-3 的 API 了。 直接選擇一段程式碼,讓 AI 自動生成註解; 或是反過來,先寫註解讓 AI 產生程式。 也可以直接跟AI聊天。 不分文理組,大家都可以洗洗睡了。6
Re: [討論] 用AI寫code產生的疑問我和同事們不久前有討論過如何透過 ChatGPT 來建立應用或是優化工作流 例如協助我們翻譯語系檔案等等 這個過程中,我們希望 AI 的結果可以整合進自動化工具裡面 所以我們將語系檔案分批餵給 ChatGPT API,再要求他回傳指定的 JSON 結構,結果超極 滿意4
Re: [討論] 用AI寫code產生的疑問先講結論,軟體工程師做的事情以及定義從 1946 年 ENIAC 開始就不斷地在改變。 所以接下來改變的還是會是工程師的定義,也許依照人力資源規劃還是會有各種 工程師職階,但是做的事情和現在應該不會一樣。 順帶一提,目前的 GPT 其實還沒辦法完成很多開發工作,所以也許一兩年大家都摸清- 我認為要先釐清楚一點,要做AI的模型並非只能透過Python, 大家都用Python原因在於AI套件都已經由國外的大神做好了, 甚至有些套件都事先訓練好資料,提供weight檔案,可以直接使用應用在某些專案, 若只是要用這些AI套件,使用Python非常方便 Python的優點: