iT邦幫忙

2026 iThome 鐵人賽

DAY 3
0
AI Engineering

生成式 AI 的 30 個定律:用跨模型小實驗理解可靠 AI 的工程原則系列 第 3

第 3 律:會看圖、會描述圖,和會生圖是三件事

  • 分享至 

  • xImage
  •  

今晚我跟兩個模型要同一張圖:標準常態分布的密度曲線,在 z 等於正負 1.96 處各畫一條垂直虛線,線間填色,中央標上 95%,橫軸寫 z,縱軸寫 density。

兩個都交出檔案。我打開,圖是對的,六個要素一個不差。

然後我多問了一句:這張圖是怎麼畫出來的?

一個說,它用 NumPy 算密度,再用 Matplotlib 繪圖。另一個說得更細:先建立 Python 檔,執行 python3,再用指令確認產出是 PNG。

我要到了圖。模型寫了程式,程式再呼叫繪圖套件把圖畫出來。

定律

通過某種模態或任務的測試,本身不足以保證通過另一種測試;跨能力推論需要另外的證據或保證。

放到今晚的例子,就是看懂一張圖、寫出繪圖程式、交出圖片檔,要分開確認。除非已經有可靠的證據或保證,能從其中一項推知另一項,否則不能看到模型做到了前者,就認定後者也沒問題。

同一個模型當然可能三件事都會。要交代的是它在什麼條件下做到了哪些事,以及過程中用了什麼工具。

同一張圖,五種要求

我先用本機繪圖套件製作基準圖,訂好六個查核元素:常態曲線、兩條垂直虛線、位置在正負 1.96、線間填色、標註 95%、軸標題 z 與 density。

實驗基準圖:標準常態曲線,正負 1.96 處畫虛線,中央填色並標示 95%

圖 1|實驗前製作的基準圖,也是 T1 提供給模型描述的圖片。

接著用不同方式提出要求,分別記為 T1 到 T5,方便對照。前三種在實驗前就訂好,後兩種是看過結果才追加的探索,不納入原訂假說的判定。

  • T1 描述畫面:只給基準圖,請模型描述。
  • T2 產生繪圖程式:只給文字規格,請模型寫出可執行的程式。
  • T3 輸出圖片檔:給同一份規格,請模型把 PNG 放到指定位置,手段不限,再回報做法。
  • T4 直接輸出 PNG(事後追加):禁止寫程式與呼叫工具,請模型直接產生檔案內容。
  • T5 直接輸出 SVG(事後追加):限制相同,改成輸出 SVG 原始碼。SVG 用文字描述圖形,PNG 則是儲存像素資料的二進位格式。

兩個模型是 gpt-6-astra 和 Claude Haiku 4.5,分別透過 Codex 命令列與 Claude Code 代理工具呼叫。每個模型、每種要求都只跑一次。

要求 gpt-6-astra Haiku 4.5
T1 描述畫面 六元素全對 六元素全對
T2 產生繪圖程式 可執行,六元素齊全 可執行,六元素齊全
T3 輸出圖片檔 有檔案,程式產生 有檔案,程式產生
T4 直接輸出 PNG 自述做不到,未產出 自述做不到,未產出
T5 直接輸出 SVG 可顯示,六元素齊全 可顯示,曲線形狀錯誤

同一張圖,只改了交付方式,結果就不同了。

前三種要求:看起來都會

T1 兩個模型都說對了六個元素。gpt-6-astra 還指出圖上沒有主標題、圖例、格線,也沒有上方與右側外框,核對基準圖後都正確。Haiku 則多說這是「95% 信心區間」,兩側各有 2.5% 的尾巴。圖上沒有這些字,那是模型補上的解讀,得與它實際讀到的內容分開看。

T2 兩段程式都能執行,六個元素也齊全。不過,Haiku 引用了規格沒要求的 SciPy。我這台機器剛好裝了,所以能跑;換到沒安裝的機器,就會在匯入套件時出錯。兩段程式還各自加了規格外的東西:astra 保留四面外框,Haiku 加了格線與文字的白色底框。

T2:執行 gpt-6-astra 產生的程式後得到的常態曲線圖,保留四面外框

圖 2|T2,gpt-6-astra 的繪圖程式執行結果。圖中保留了基準圖沒有的上方與右側外框。

T2:執行 Haiku 4.5 產生的程式後得到的常態曲線圖,帶有格線與 95% 文字白底框

圖 3|T2,Haiku 4.5 的繪圖程式執行結果。模型另外加上格線與 95% 文字的白底框。

T3 兩個都交出圖片檔,做法也相同:寫程式,再執行。這一輪沒有模型直接輸出 PNG 的檔案內容。

T3:gpt-6-astra 透過 Python 與繪圖套件交付的 PNG 圖片

圖 4|T3,gpt-6-astra 交付的 PNG。依執行紀錄,模型先寫程式,再呼叫繪圖套件產生檔案。

T3:Haiku 4.5 透過 Python 與繪圖套件交付的 PNG 圖片

圖 5|T3,Haiku 4.5 交付的 PNG,同樣由程式產生。與圖 4 相比,配色與文字樣式不同,要求的六個元素都有。

如果我的需求只是拿到一張正確的圖,到這裡已經完成了。但「能交圖」包含哪些步驟,還可以再拆開看。

拿掉程式與工具,還能交圖嗎

T4 多了一項限制:不要寫程式,也不要呼叫工具,直接產生 PNG 的檔案內容。

兩個模型都說做不到,沒有交出檔案。它們的解釋都指向 PNG 的編碼:除了安排像素的位置與顏色,還得處理壓縮和校驗碼。gpt-6-astra 特別提到,即使用 base64 把二進位資料表示成文字,也沒有省掉這些步驟。Haiku 則補了一句:SVG 是文字格式,相對簡單。

於是我加了 T5。限制不變,只把格式換成 SVG。

gpt-6-astra 寫出三千多字元的 SVG 原始碼。我用系統內建工具把它轉成可看的圖,六個元素齊全,曲線是正常鐘形,刻度也標到正負 1.96。這次模型直接寫出了圖形的描述,顯示畫面仍由 SVG 渲染器完成。

T5:gpt-6-astra 直接輸出的 SVG 經渲染後呈現正常鐘形曲線

圖 6|T5,gpt-6-astra 直接寫出的 SVG,經 macOS 內建工具渲染後的畫面。曲線呈鐘形,六個元素齊全。

Haiku 也交出 SVG,開頭就說「我可以手工寫出」。虛線的位置換算回座標,剛好是正負 1.96;填色、95%、軸標題都在。只有曲線不對:畫面是一頂折線帳篷,中央插著一根針。

T5:Haiku 4.5 直接輸出的 SVG 經渲染後呈現折線帳篷與中央尖刺,曲線形狀錯誤

圖 7|T5,Haiku 4.5 的 SVG 經同一工具渲染後的畫面。檔案可以顯示,曲線卻成了折線帳篷加尖刺;這是實驗中保留的錯誤結果。

比對曲線座標後,問題更清楚了。下表的 y 是畫面上的像素座標,數字越小,位置越高;「真值 y」是把正確密度換算到同一張畫布後的位置。

z 模型給的 y 真值 y
-4.00 499.85 499.85 0.00
-3.00 494.90 494.90 0.00
-2.00 437.91 437.91 0.00
-1.00 351.42 221.72 129.70
-0.25 278.20 55.32 222.88
0.00 41.25 41.20 0.05

表中尾端的三個點與真值一致,最高點也只差 0.05 像素。偏偏中間兩個點差了約 130 和 223 像素,曲線的肩部就塌下去了。正負一、正負二的座標值又分別相同,看起來像是先產生半邊,再鏡射到另一邊;單憑座標,還不能確定它實際怎麼算。

這份 SVG 能正常顯示,數值卻錯了。檔案打得開,只通過了其中一關。

同一個對話框,背後做的事不同

五種要求都是打字送出的,看起來都是「我要了,它給了」。背後卻有模型輸出的文字、被執行的繪圖程式,以及把 SVG 顯示出來的渲染器。

這些差別會影響成果能不能重做。Haiku 的繪圖程式在我這裡能跑,是因為機器上已經裝好 SciPy。直接輸出 SVG 不需要執行那段 Python 程式,卻仍得經過渲染器,也仍可能畫出帳篷加尖刺。

所以,拿到圖之後,我會多問一句:這張圖用了什麼工具、經過哪些步驟?

先知道模型直接輸出了什麼、後面又執行了什麼,才知道該檢查哪裡。程式跑不起來,要查執行環境;SVG 打得開但形狀錯了,要回頭查座標。只用「會不會畫圖」來問,這些差別都被省掉了。

我的紀錄表因此多了一欄:「由什麼產生」。看成品只能知道交出了什麼,這一欄才交代它是怎麼做出來的。

本文的協作紀錄是:前三種要求的實驗設計、判定規則與基準圖,在呼叫模型前就已存檔;T4、T5 於看到結果後追加,五種要求的原始輸出均逐字保留。判定由 Claude 對照基準圖完成,作者未逐格核對。文章由 Claude 依作者整理的寫作規則起草,gpt-5.6-sol 潤稿一次;原稿記載作者已核對用語與引文。

本次再由 Codex 依 human-writing 技能整理語句與段落,修訂稿尚待作者確認。本文尚未經過 Day 2 那種六個審查者的檢查。

下一篇談一張成功的截圖,能證明 AI 會做多少事。


上一篇
第 2 律:「這篇是 AI 寫的」到底告訴了我們什麼?
下一篇
第 4 律:一張成功截圖,能證明 AI 會做多少事?
系列文
生成式 AI 的 30 個定律:用跨模型小實驗理解可靠 AI 的工程原則29
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言