ChatGPT復(fù)古玩法:39年前老電腦+DOS系統(tǒng)也能玩轉(zhuǎn)
當(dāng) ChatGPT 遇到 MS-DOS 系統(tǒng),你可以會有一種穿越的感覺。
近日,新加坡的復(fù)古計(jì)算機(jī)愛好者 Yeo Kheng Meng 發(fā)布了一個(gè) MS-DOS 的 ChatGPT 客戶端,可以在 4.77MHz IBM PC 上運(yùn)行,為 ChatGPT 提供了一種獨(dú)特的交流方式。
對于 ChatGPT 客戶端來說,MS-DOS 是一個(gè)非常有挑戰(zhàn)性的平臺,因?yàn)樗狈Ρ镜芈?lián)網(wǎng)能力。此外,Yeo 的目標(biāo)是一臺處理能力非常有限的電腦:1984 年的 IBM 5155。它的內(nèi)部包含一個(gè) Intel 8088 4.77 MHz 的 CPU、640KB 傳統(tǒng)內(nèi)存、CGA ISA 顯卡和 MS-DOS 6.22 系統(tǒng)。
IBM 5155 是一款便攜式電腦,它采用了類似于行李箱的外殼設(shè)計(jì),有一個(gè)可折疊的手柄,可以方便地?cái)y帶。
為了創(chuàng)建客戶端,Yeo 使用了 Open Watcom C/C++,這是一個(gè)在 Windows 11 上運(yùn)行的現(xiàn)代編譯器,可以針對 16 位 DOS 平臺。為了測試,他使用了運(yùn)行 DOS 6.22 的 VirtualBox 虛擬機(jī)來簡化開發(fā)過程,然后他將編譯后的二進(jìn)制文件傳輸?shù)侥繕?biāo) IBM DOS PC 上進(jìn)行測試。
為了處理 IBM PC 上的網(wǎng)絡(luò)問題, Yeo 做了多方面的努力。首先,他利用了 1983 年發(fā)明的「Packet Driver API」標(biāo)準(zhǔn)。他將 Michael B. Brutman 的開源 MTCP 庫集成到應(yīng)用程序中,與 Packet Driver 進(jìn)行通信,為客戶端提供網(wǎng)絡(luò)功能。
對于 ChatGPT API,Yeo 使用了 OpenAI 的 Chat Completion API,用 C 語言手動構(gòu)建了 POST 請求(并解析了 JSON 格式的響應(yīng))。
然而,Yeo 遇到了一個(gè)巨大的障礙:ChatGPT 的 API 需要加密的 HTTPS 連接。由于 MS-DOS 沒有原生的 HTTPS 庫,Yeo 創(chuàng)建了一個(gè) HTTP-to-HTTPS 代理,可以在現(xiàn)代計(jì)算機(jī)上運(yùn)行,并翻譯 MS-DOS 客戶端和 ChatGPT 的安全 API 之間的請求和響應(yīng),在通信過程中充當(dāng)一個(gè)透明的中間人。
Yeo 說,由于 DOS 應(yīng)用的單線程性質(zhì),向控制臺讀寫輸入是另一個(gè)挑戰(zhàn)。他設(shè)計(jì)了一種在不暫停程序的情況下檢查和接收按鍵的方法,使用 MTCP 頁面和在線樣本作為參考。
最后,客戶端的效果比 Yeo 預(yù)期的要好。他在一篇更詳細(xì)的博客中描述了他的開發(fā)過程。
博客地址:https://yeokhengmeng.com/2023/03/building-a-dos-chatgpt-client-in-2023/
相關(guān)代碼參加 GitHub 項(xiàng)目:
項(xiàng)目地址:https://github.com/yeokm1/doschgpt