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