聲明:本文來自于微信公眾號CSDN(ID:CSDNnews),授權轉載發布。
ChatGPT 問世的這半年,我們目睹了許多由它掀起的變革和爭議,見證了越來越多大模型的崛起,同時推測著未來的發展趨勢……但萬萬沒想到,這股名為 ChatGPT 的風,還能吹到30年前的操作系統中!
近來,一位開發者 @dialupdotnet 掏出了他30年前——即1993年入手的“古董電腦” Gateway4DX2-66,并表示:“我不想讓我1993年的 Gateway4DX2-66被排除在 AI 革命之外,所以我基于 OpenAI API,為 Windows3.1建立了一個 AI 助手,名為 WinGPT。”
也就是說,WinGPT 能讓30年前推出的 Windows3.1也用上 ChatGPT!
這是怎么做到的?
誕生于1992年的 Windows3.1,是微軟在31年前發布的操作系統,如今早已被時代淘汰并遺忘,因而想要讓 Windows3.1接入 ChatGPT,在30年前的電腦上實現和 AI 聊天的功能,聽起來就像是“天方夜譚”——所以,@dialupdotnet 究竟是如何做到的?
根據 @dialupdotnet 介紹,WinGPT 是用 C 語言編寫的,使用標準的 Windows API,此外:“我用 Open Watcom v2作為編譯器(Open Watcom v2可以在從 Windows3.1開始的任何16位或32位版本的 Windows 上運行),非常方便,因為它甚至支持從 Windows11交叉編譯到16位 Windows。”
值得一提的是,WinGPT 還使用2018年發布的加密標準 TLS1.3來原生連接到 OpenAI API 服務器,因此不需要用具有現代操作系統的代理機器來建立和維護通信。不過 @dialupdotnet 也坦誠道:“這種實現方法并不安全。”
“艱難”地構建 UI
作為一名如今生活在2023年的開發者,@dialupdotnet 早已習慣用 Delphi 來構建像 Windle 這樣的 Windows 應用程序,因此猛然間只能用內置的 Windows API 時,他深感不便:“我很驚訝 Windows3.1的 UI 構建功能竟會如此原始。”
為此,@dialupdotnet 直接用 C 語言構建了大部分 UI,即每個 UI 組件都必須用代碼手動構建,更要手動調整邏輯大小,以確保每個組件在窗口被調整時都能保持其適當的大小。
這還不是最難的。當 @dialupdotnet 試圖弄清如何在 WinGPT 中添加狀態欄時,他發現 Windows3.1上可供程序使用的標準控件集也非常之有限:“除了按鈕、復選框、單選按鈕、編輯框,另外一些你可能需要的其他控件,包括那些在操作系統本身中使用的控件,都是不可用的。”
例如,明明狀態欄在 Windows3.1中隨處出現,文件管理器和控制面板中都有,但微軟并未將其作為可用控件提供給開發者。直到 Windows95,微軟才將這些控件與進度條、工具條和樹形視圖等其他一些有用控件,廣泛地提供給應用開發人員。
對于這個問題,@dialupdotnet 問了 ChatGPT 如何在 Windows3.1程序中添加狀態欄,但它的回答是一個只存在于 Windows 后期版本中的頭文件。就算 @dialupdotnet 繼續追問,ChatGPT 也只是“編造”出了一個不存在的 UI 庫的名字。
好在最后狀態欄的問題,@dialupdotnet 還是自己想辦法解決了:Philip J. Erdelsky 有一個1997年的狀態欄實現,并且代碼是開源的,@dialupdotnet 對其進行了修改,使其看起來更貼近 Windows3.1應用中的狀態欄。
在構建 WinGPT 的 UI 過程中,還有一個有趣的點:在 Borland 圖像編輯器中設計圖標,它實際上是微軟 Paint 的一個克隆,只不過恰好可以制作 ICO 文件。通過 Borland 圖像編輯器,@dialupdotnet 共設計了兩種規格的圖標:32x32的,該規格圖標才能在 Windows3.1的程序管理器和任務切換器中顯示;16x16的,用于在后來的 Windows 版本上顯示。
WinGPT 有一定限制
一些準備就緒后,WinGPT 就創建完成了。不過畢竟 @dialupdotnet 的“古董電腦” Gateway4DX2-66購于30年前,盡管 WinGPT 能在 Windows3.1上運行,電腦內存也相當有限。
“我試圖減少 WinGPT 所需的內存,特別是在發送和接收 OpenAI API 的查詢和響應時。”但 @dialupdotnet 指出現代 API 的 JSON 響應在大小上并沒有特別優化,OpenAI API 也不例外:“我已經要求模型盡量簡短,以使響應盡可能的少,我還選擇在 API調用中不發送前一輪的文本。但這也就意味著,聊天機器人無法使用先前的對話背景。”
簡單來說:由于內存支持有限,WinGPT 只能接收簡短的回復,聊天內容也無法聯系上下文。
盡管如此,對此感興趣的網友也可以像 @dialupdotnet 一樣,翻出家中蒙塵已久的 Windows3.1電腦,前往 https://www.dialup.net/ 網站下載 WinGPT,嘗試一場跨越30年的 AI 對話。
需要注意的是,雖然 WinGPT 可以在 Windows3.1之后的任何16位或32位版本的 Windows 上運行,但它需要通過 Winsock 實現,也不支持64位版本的 Windows。此外,用戶還需要輸入自己的 OpenAI API 密鑰才能運行 WinGPT。
參考鏈接:
https://www.dialup.net/wingpt/
https://www.theregister.com/2023/06/27/retro_chatgpt_for_windows/