ChatGPT’s Code Interpreter
人機協作的未來已經近在咫尺
OpenAI 日前釋出了 ChatGPT 上的 Code Interpreter plugin, 效果非常好,帶給我的震驚不亞於首次接觸 ChatGPT. 簡單來說,Code Interpreter 能作到的事情是:你給它資料,問一個問題,它會自行產生一段或多段 Python 程式、執行該程式、再告訴你答案。以下分享兩個實測案例。
資料分析
資料欄位解讀
我給它一個日誌檔(檔案出處),檔案的前幾行如下圖。我先問它這個日誌檔裡面有哪些資訊。它回答了裡面的四個欄位及意義。注意:檔案內第一行的 “Staus” 是錯字,但不妨礙它解讀為 “Status”
點開 “Finished working” 按鈕,你會看到它自行產生、用以回答問題的程式碼。它使用 pandas, read_csv()
, 以及 dataframe.head()
預覽資料,跟我們作資料分析的起手式相同。
簡單分析及圖表
接著,我要它分析日期欄位,告訴我 (1) 最早與最晚的日期; (2) 依照月份計算資料筆數,用表格與柱狀圖分別呈現。它先處理並正確地回答了第一個問題:
這邊你看到三個 “Finished working”,因為它在處理過程中知道程式執行報錯,自我糾正後算出了正確的答案。程式報錯是因為檔案內容包含了錯誤格式的字串 (“cannot”),所以它再度呼叫 to_datetime()
時加上了 errors='coerce'
參數,並使用 dataframe.dropna()
跳過無法解讀的資料列。
接著它回答了第二個問題,產生出正確的圖表:
想知道圖表是怎麼產生的,或是想驗算結果,點開 ”Finished working” 就能看到程式碼
稍微複雜的分析
眼看簡單的資料分析難不倒它,我又試了一個複雜一點的例子。日誌中每一個 URL 欄位值都包含了這個請求的 HTTP Action (如 GET 或 POST),我要它列出每一個 IP 位址的 HTTP Action 類型及數量(注意:我並沒有告訴它要去哪個欄位找 HTTP action):
看起來它還是成功了!上表中 10.131.0.1 的 POST 數量為 181,驗算一下答案是正確的:
基礎機器學習
第二個例子是我從 Kaggle 上找的 Random Forest 建模教學。在深度學習當道的今日,Random Forest 還是一個很好用的 baseline,讓你可以快速了解問題的難度,以及取得一個模型比較的基準。這個問題是透過二手車的各項屬性去預測其行情價 (class 欄位,其值有四種:不可接受、可接受、好、非常好),我只問了三個問題:
- 告訴它資料欄位定義,叫它訓練一個 Random Forest 模型,可以從其他欄位預測 class 欄位的值
- 叫它導出這個模型讓我可以下載
- 問它我要怎麼在我的 Python code 中使用下載的模型
它很好地回答了以上的問題,並訓練出了一個準確度 96% 的模型。對細節有興趣的可以直接看對話紀錄:
https://chat.openai.com/share/005ab817-5ec7-4a09-9d79-5194079b77e3
當然,以上的測試都是使用公開資料,不能排除它在沒看過的資料或任務上表現較差的可能性。
結語
Code Interpreter 已經能夠大量節省資料分析與視覺化的時間。雖然機器產出的結果還是需要人類的最終判斷,但 AI 將會把自動化的概念推向前所未有的境界。人機協作的未來,以及知識工作者工作方式的改變,已經近在咫尺。