Skip to main content

Cursor Learn

幻覺 Hallucinations

既然你已了解 AI 模型的運作方式,接下來談談許多開發者在初次使用 AI 工具時常遇到的問題:幻覺

「幻覺」指的是 AI 模型以十分自信的口吻產生看似合理、實則錯誤的資訊。就像有人對不熟悉的主題硬要裝懂,試圖唬弄帶過一樣。

為什麼模型會產生幻覺?#

還記得我們說過 AI 模型是根據學到的模式來預測下一個 token 嗎?有時這些模式會讓它們判斷失準。

把這些模型想成功能極強的文字自動完成。當你輸入「The weather today is...」時,你的手機可能會依常見模式建議「sunny」或「cloudy」。AI 模型也會做類似的事,但範圍涵蓋整個概念與程式碼區塊。

當 AI 模型不知道某件事時,它不一定會說「I don't know」。相反地,它會根據看過的模式生成看似最有可能的內容。對於寫程式,可能會是:

  • 編造「看起來合理」但實際不存在的 API 方法
  • 把不同程式庫或框架的語法混在一起
  • 建立看似合理但並不真實的設定選項

AI 模型提供者會使用網路上大量文字(以及其他專有資料)來訓練模型,直到某個稱為「knowledge cutoff」的日期。這個日期代表模型最新的知識範圍。若你詢問在此日期之後才出現的程式庫,AI 模型可能會提出不正確的解法。

對於可能是幻覺的 API 方法,最好的立即回應是什麼?

先相信並實作,之後再修。到文件或你的程式碼庫中查證;把錯誤回饋給模型。再要求三個替代方案並挑一個。CheckReset

野外環境下的幻覺#

以下示範一些開發者實際遇到的幻覺範例。

第一個是看似正確、實則不存在的套件匯入。

// AI 建議:
import { debounce } from "react";

// 現實:React 並未匯出 debounce!
// 你需要使用 lodash 或自己實作

第二種是看似可靠、但其實是假的類別方法:

# AI 建議:
df.remove_outliers(threshold=3)
# 實際情況:pandas DataFrames 沒有這個方法
# 你需要自己實作異常值移除功能

最後,這是一個「幾乎正確」的設定檔:

// AI 建議用於 package.json:
{
  "type": "module",
  "exports": "./index.js",
  "browser": true // <- 這是無效的!
}

隨著你更常使用 AI 模型,你會學會如何辨識幻覺。

對模型產出的結果保持懷疑,並獨立驗證其建議是值得的。要讓這更容易,可將你的編輯器或應用程式環境設為能提供回饋。

例如,在 Cursor 中,錯誤的 import 陳述式應會顯示「匯入不存在」的錯誤,之後即可將此回饋提供給 AI 模型。

其他模型限制#

模型有時也會非常自信地給出錯誤答案。

你可能會收到像「You’re absolutely right!」這樣的回應,但實際上你並不正確。此外,有些模型在決定性軟體擅長的事情上表現不佳,例如產生真正的隨機數,或計算某個字元在單字中出現的次數。

但即使存在幻覺與限制,AI 模型仍然非常實用。

與 AI 有效合作的關鍵是養成驗證心態。每個建議都是出發點,而不是最終答案。這聽起來像是在多做工,但其實會讓你成為更好的開發者,因為它促使你理解程式碼的行為,而不是只是複製貼上。

在整個課程中,我們會提供可行的做法,幫助你提升生成程式碼的品質,並正確地與 AI 模型協作。

在討論如何與模型互動之前,我們需要先了解它們的思考方式與計價模式。讓我們在下一堂課繼續深入探討。