使用AI寫程式時,你是否也踩過這幾個雷區?正確運用AI寫程式的幾個做法

更新於 發佈於 閱讀時間約 10 分鐘

隨著人工智慧技術的普及,愈來愈多事情都可以交給AI來協助,寫程式當然也不例外;日前我看到臉書上有一位工程師在一篇貼文中,討論人工智慧的寫程式功能是否有可能取代人類工程師;但是底下的留言,卻好像有很多「意見」反對這些工程師。其中最多的敘述不外乎就是這一句:

你們工程師真的遇過「問了AI好多次都還是錯」的情形嗎?


raw-image


現在的AI雖然在補全程式碼邏輯、尋找語法錯誤等方面,表現已經可圈可點,但卻還是有一群人在抱怨它精度的問題;先姑且不論模型之間的不同造成的影響,我覺得其實可能是這些反對者沒有想過他們使用AI來人機協作的方式是否正確。

從我開始自己學習 Python 到現在,也才剛好滿半年的時間,但是我也遇過好幾次「詢問人工智慧好幾次都不如預期」的挫折;但是最後都發現問題其實不是出在人工智慧,而是傳達過程中不必要的假設與誤會,以及程式開發者自己的問題,諸如沒有保持良好的程式碼編輯習慣等。以下將綜合我實際遇過的事件與小範例,協助各位檢視與AI互動來編寫程式碼的過程。如果你也正在疑惑「為什麼請AI來寫程式都錯」的話,這篇文章也許可以協助你。

新手最容易踩到的四個雷區

雷區 1 :邏輯或拼字錯誤導致 AI 無法協助

raw-image

我曾經在某一間實作影像辨識的生物資訊公司實習過;當時我正在做的 Python 專案,目標是要能正確地將圖片中的四個重疊的區域找出來,並根據區域的面積等基礎資訊,輸出文字到圖片上以協助辨認。

所以,那一段程式碼中就包含了許多變數,再加上我當時並沒有對變數命名習慣的正確認知,於是就有兩個變數被我命名成只差在幾個英文字母(想像一下img_featimg_feta的差別)然後又反反覆覆使用了好幾次。

有次在檢查的時候,經驗豐富的前輩突然跟我說這些數據不符合預期,要求我從頭到尾再檢查一次。於是我從輸入圖片座標資訊的 JSON檔案、 Python 虛擬環境、程式碼裡的每個自訂函數,都請AI來協助檢查。由於我一開始並未察覺變數名稱有誤,所以也沒告訴AI這個問題;這樣檢查了好幾回後,輸出的數據不是沒有變,就是變得更偏離前輩預期的數據。最後迫於進度壓力的我,只好把每一行程式碼都跟自己解釋一次,就有點像跟自己Code Review那種感覺。

就是在這個時候,我發現有個變數怪怪的,跟我印象中應該在這裡的變數不一樣;把它的拼寫錯誤改回來,產出的數據終於讓前輩信服,我也才能安然度過那次危機。

上述是拼字問題;而邏輯問題也是AI會預設「你是對的」的一個環節。請看以下範例:

def is_prime(n):
if n < 2:
return False
for i in range(2, n):
if n % i == 1:
return False
return True

num = 9
if is_prime(num):
print(f"{num} 是質數")
else:
print(f"{num} 不是質數")

這是一個很經典的錯誤案例;開發者試著使用「餘數與整除」的概念來判斷一個數字是否為質數;這段程式碼可以正常輸出結果,但它輸出的內容是:「9 是質數」

然而,依據質數的定義, 9 因為是 3 的倍數,換言之它的因數不只有 1 與自身,還有 3 這個數字,所以不為質數。仔細看會發現這位開發者輸入的判斷條件是n % i == 1 ,表示只要 n 不小於 2 ,那麼 n 正好可以通過條件而回傳 True ,進而輸出「 9 是質數」的錯誤結論。

在這個案例中,其實只要將n % i == 1改為n % i == 0即可輸出「 9 不是質數」,但請AI除錯時,即使是這樣的錯誤,AI也會因為假設使用者的邏輯正確,在沒有特別提及的前提下直接跳過,造成明明錯誤近在咫尺,卻看不見的窘境。

AI 不會主動懷疑你的邏輯錯了,它只會幫你「沿著你的邏輯除錯」

雷區 2 :錯誤說明過於簡略,AI 難以判斷

想像一下:今天有個人突然拿了一支手機,跟你說:它壞掉了;但是完全沒有更多的錯誤描述、背景資料。你只能檢測一次,並在短時間內協助這位客戶找出所有潛在問題並完全修正。如果你抓不出問題,或是再要求更多的錯誤描述,客戶就直接一星負評,這樣的手機維修服務你要做嗎?

同樣的道理,把「修東西的人」換成AI、手機換成程式碼,應該就很好理解了。如果你直接貼上了一段程式碼,跟AI說「為什麼這段程式碼不能運行?」且沒有錯誤訊息、執行畫面、預期輸出等資訊,這樣AI也只能有幾分描述、猜幾分錯誤,結果就是抓不到你真正的問題。

AI 不會通靈,無法感覺到你螢幕上的錯誤訊息和你的心情

雷區 3 :將 AI 當成萬能的程式機器

現在沒有AI可謂萬萬不能,但是「有了AI也不是萬能」。

這篇文章所引述的臉書貼文,底下的留言吵成了戰場;原因大致是因為該位使用者(下文簡稱他『S君』)「只會用 GitHub Copilot 來讀取所有程式碼」;然後要求它寫了一些測試用的程式碼,並且「期待它會自己先內部執行過來驗證」;最後當AI「可能」因為傳達上沒有講清楚導致AI給的程式碼不完全正確,這時S君又請AI直接修改,後果就是整個邏輯直接被「砍掉重練」讓S君不開心。

雖然從S君留言中的有限資訊來看,我無法得知他的具體操作流程為何,但是這樣期待AI要做完整套的話,某種程度上也不切實際。

AI 是工具,不是你腦袋的替身。

雷區 4 :只複製貼上,忽略背後原理

之前我曾經在這篇文章中分享過我在大學做專題的事情:

AI時代下,生物學家和程式設計師為何不會被取代?

當時因為對 Python 的基礎認知不足,而且又有結果產出的某種壓力,造成我必須使用複製貼上的方式,快速完成程式碼的部分;但是後續我竟然發現:複製貼上的程式碼在參數設計的方面出現單位錯誤,造成產出結果不如預期。

想像一下:如果我這時候只會問AI「為何它只會跑出我不要的東西」然後完全也不知道函數的算式中,這些參數的實際意義,那麼就算AI能夠神準抓出問題並修正,我看到的也只有那張結果圖,但是卻完全不知道它的意義,這樣有學 Python 也等於沒學一般。

複製貼上有時也是最貴、最難償還的技術債

如何避免踩到新手地雷

秘訣 1 :釐清需求再撰寫程式碼

raw-image

撰寫程式碼本來就是為了解決我們遇到的問題、滿足我們的需求;不論是請 AI 協助或自己撰寫,了解你要解決的問題本質都是最重要的第一步。

現在的AI模型通常對於我們所用的自然語言,理解能力都已經十分優秀;所以如果連續五次,AI都沒有辦法解決你程式碼的問題,請先離開電腦,好好想一想寫這段程式碼、每一個函數、每一個變數的意義與目的。把它寫成一個脈絡,再一五一十告訴AI,遠比雞同鴨講要好。

秘訣 2 :主動提供錯誤位置與背景資訊

一段完整的程式碼,最多或包含這些部分:

輸入-處理-邏輯-主功能-輸出-環境
  • 輸入(例如讀取檔案)
  • 處理(例如欄位過濾、資料清理)
  • 邏輯(例如 if、for 等條件與流程)
  • 主功能(例如建模、繪圖、訓練)
  • 輸出(例如圖表、文字、csv 檔)
  • 環境(例如套件版本、作業系統)

當中假設是「輸入」這個環節出問題,例如檔案路徑錯誤之類,後果就是程式碼整段崩潰,然後跟你報告FileNotFoundError,最後沒有結果產出。

這時候我們看到的是「程式碼跑不出來」還是「錯在哪個環節」對於跟AI人機協作就至關重要清晰地給出問題可以讓 AI迅速地縮小問題範圍,避免使用AI幻覺做出不必要的錯誤假設,回答的精確度也就跟著提升。

以輸入的問題為例:

錯誤做法:「(貼上Traceback message)這段程式碼不能輸出,請檢查

正確做法:「我用 pd.read_csv 讀資料進來,但輸出欄位不是我預期的;我預期它應該是...(附上表格的截圖或是cat指令的結果)但是實際輸出是...,並且有Traceback訊息如下:(許多程式編輯工具都有複製完整錯誤訊息的功能,請善用)

再以環境的錯誤為例:

錯誤做法:「為什麼xxx套件不能在我的電腦上運行?

正確做法:「我的環境是 Python 3.10、WSL 2 Ubuntu 24.04 LTS,用的是 seaborn 0.12,不確定這個參數是否支援

秘訣 3 :不要害怕發問

我們也可以練習將AI當成你的共同開發者;試著向AI進行一場Code Review,詳細解釋這些程式碼的流程應該要如何運作;這樣AI就會第一時間檢查你說的邏輯是否有正確吻合你程式碼裡的內容。

如果真的因為進度壓力,沒有辦法先通盤了解所用的套件,它所包含每個參數的意義,那麼等AI生成完程式碼以後,當發現有問題(比如:主功能問題)時,除了比照上面的詢問方式之外,也可以詢問AI這個套件中參數的意義、把它們一一調高或調低會如何影響輸出之類。

總結

與 AI 溝通是在「協作」不是在「指派工作」

與其說 AI 是你的下屬,它更像是一位與你有合作關係的同事(或同學);你會如何不要為難彼此,就用那個原則去對待AI。再者,你越能清楚說出問題的背景、需求與症狀,它就越能精準幫你拆解問題。

還有一句話叫做「教學相長」,在我們花時間跟 AI 解釋你的問題、程式碼邏輯的同時,其實也是默默在培養我們寫程式、抓錯誤的能力與直覺。當這樣的能力慢慢變成你的直覺時,就算AI再準確,也可能沒有我們的反應要快。

有時候,錯誤不是 bug,是學習的訊號。
能找到錯的原因,比永遠不犯錯更重要。

最後,有一部YouTube影片我很喜歡,有助於各位與AI溝通,推薦各位看看:
為什麼別人家的 ChatGPT 這麼聰明,我們家的整天跟我雞同鴨講??
搞懂「提示工程」讓你成為專業的 AI 溝通師! | PAPAYA 電腦教室

如果喜歡這篇文章的分析,請按個喜歡;每一個喜歡,都是我繼續的動力。
若有發現筆者的邏輯需要修正,請不吝指教;每一個建議,都是我成長的地基。

留言
avatar-img
留言分享你的想法!
avatar-img
生資知識的道場
5會員
12內容數
歡迎來到【生資道場】! 這裡是一個結合生物資訊與生活思維的小宇宙。 我們聊癌症、談程式碼,也偶爾思考世界的複雜與美感。 不一定要懂程式、不一定要是科研人, 只要你對知識、生活與實驗感興趣,就能自在入座。 歡迎留言交流,理性討論,偶爾隨著道場主一起激盪新想法。
你可能也想看
Thumbnail
家中修繕或裝潢想要找各種小零件時,直接上網採買可以省去不少煩惱~看看Sylvia這回為了工地買了些什麼吧~
Thumbnail
家中修繕或裝潢想要找各種小零件時,直接上網採買可以省去不少煩惱~看看Sylvia這回為了工地買了些什麼吧~
Thumbnail
👜簡單生活,從整理包包開始!我的三款愛用包+隨身小物清單開箱,一起來看看我每天都帶些什麼吧🌿✨
Thumbnail
👜簡單生活,從整理包包開始!我的三款愛用包+隨身小物清單開箱,一起來看看我每天都帶些什麼吧🌿✨
Thumbnail
創作者營運專員/經理(Operations Specialist/Manager)將負責對平台成長及收入至關重要的 Partnership 夥伴創作者開發及營運。你將發揮對知識與內容變現、影響力變現的精準判斷力,找到你心中的潛力新星或有聲量的中大型創作者加入 vocus。
Thumbnail
創作者營運專員/經理(Operations Specialist/Manager)將負責對平台成長及收入至關重要的 Partnership 夥伴創作者開發及營運。你將發揮對知識與內容變現、影響力變現的精準判斷力,找到你心中的潛力新星或有聲量的中大型創作者加入 vocus。
Thumbnail
程式設計與技術能力 在現代社會中的重要性越來越明顯,尤其是在人工智能(AI)和自動化技術迅速發展的背景下。理解編程語言,如Python、R等,以及熟悉相關技術架構和工具,能夠幫助個人在這樣的環境中更好地工作。這種能力不僅對技術專業人士至關重要,也對非技術領域的人士日益重要,因為基礎的程式設計知識已
Thumbnail
程式設計與技術能力 在現代社會中的重要性越來越明顯,尤其是在人工智能(AI)和自動化技術迅速發展的背景下。理解編程語言,如Python、R等,以及熟悉相關技術架構和工具,能夠幫助個人在這樣的環境中更好地工作。這種能力不僅對技術專業人士至關重要,也對非技術領域的人士日益重要,因為基礎的程式設計知識已
Thumbnail
本文討論了在AI時代下我們需要具備的職能,例如提問力、判斷力和專業能力。同時也提到了在使用AI時需要注意的事情,以及一些問答希望可以跟讀者有所互動與交流。另外作者也分享了自己使用AI工具的心得,並期待可以幫助初學者更快地瞭解如何應對AI的基礎邏輯。
Thumbnail
本文討論了在AI時代下我們需要具備的職能,例如提問力、判斷力和專業能力。同時也提到了在使用AI時需要注意的事情,以及一些問答希望可以跟讀者有所互動與交流。另外作者也分享了自己使用AI工具的心得,並期待可以幫助初學者更快地瞭解如何應對AI的基礎邏輯。
Thumbnail
AI繪圖要廣泛用於商用還有一大段路,還需要依賴人類的經驗判斷、調整,為什麼呢?
Thumbnail
AI繪圖要廣泛用於商用還有一大段路,還需要依賴人類的經驗判斷、調整,為什麼呢?
Thumbnail
這篇文章探討了使用 AI 撰寫文章的挑戰和解決方法。指令過於精準會讓 AI 的文章缺乏變化和個人風格。建議將 AI 當作導師,利用其提問能力來引導思考,而非直接撰寫內容。這種方法不僅能加速思考過程,還能提升文章品質。經過一年的嘗試,作者體會到 AI 從助手逐漸成為思考夥伴的重要性。
Thumbnail
這篇文章探討了使用 AI 撰寫文章的挑戰和解決方法。指令過於精準會讓 AI 的文章缺乏變化和個人風格。建議將 AI 當作導師,利用其提問能力來引導思考,而非直接撰寫內容。這種方法不僅能加速思考過程,還能提升文章品質。經過一年的嘗試,作者體會到 AI 從助手逐漸成為思考夥伴的重要性。
Thumbnail
這是一篇描述測試AI功能的文章,內容是一些隨心所欲的想法和想像,引導讀者思考現實世界及經歷。文章內容充滿了一些具有戲劇性和冒險色彩的詞彙和描述。
Thumbnail
這是一篇描述測試AI功能的文章,內容是一些隨心所欲的想法和想像,引導讀者思考現實世界及經歷。文章內容充滿了一些具有戲劇性和冒險色彩的詞彙和描述。
Thumbnail
AI 工具雖能在短時間生成內容,但它不瞭解你的客戶,也無法取代你做現場互動交流。在合適的時機選擇使用適合的 AI 工具,幫助我們專注於最重要的人事物上。
Thumbnail
AI 工具雖能在短時間生成內容,但它不瞭解你的客戶,也無法取代你做現場互動交流。在合適的時機選擇使用適合的 AI 工具,幫助我們專注於最重要的人事物上。
Thumbnail
最新的AI趨勢讓人眼花撩亂,不知要如何開始學習?本文介紹了作者對AI的使用和體驗,以及各類AI工具以及推薦的選擇。最後強調了AI是一個很好用的工具,可以幫助人們節省時間並提高效率。鼓勵人們保持好奇心,不停止學習,並提出了對健康生活和開心生活的祝福。
Thumbnail
最新的AI趨勢讓人眼花撩亂,不知要如何開始學習?本文介紹了作者對AI的使用和體驗,以及各類AI工具以及推薦的選擇。最後強調了AI是一個很好用的工具,可以幫助人們節省時間並提高效率。鼓勵人們保持好奇心,不停止學習,並提出了對健康生活和開心生活的祝福。
Thumbnail
AI 相關的內容每天都非常多,有聽過很多人因此感覺到焦慮,怕錯過了最新資訊就會趕不上,這篇內容會跟大家詳細的分享我自己的學習方法和經驗,並且會在最後分享一些我的學習資訊來源。
Thumbnail
AI 相關的內容每天都非常多,有聽過很多人因此感覺到焦慮,怕錯過了最新資訊就會趕不上,這篇內容會跟大家詳細的分享我自己的學習方法和經驗,並且會在最後分享一些我的學習資訊來源。
Thumbnail
本文探討使用人工智能寫作中文教材時可能遇到的語言錯誤。透過例子指出常見的語病,包括誤解詞語、詞類誤用、前文後理不通和累贅表述。建議使用者在檢查由AI生成的教材時,應特別注意可能出現的語言錯誤,以確保教材的品質和邏輯連貫性。
Thumbnail
本文探討使用人工智能寫作中文教材時可能遇到的語言錯誤。透過例子指出常見的語病,包括誤解詞語、詞類誤用、前文後理不通和累贅表述。建議使用者在檢查由AI生成的教材時,應特別注意可能出現的語言錯誤,以確保教材的品質和邏輯連貫性。
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News