近日,新加坡的复古计算机爱好者 Yeo Kheng Meng 发布了一个 MS-DOS 的 ChatGPT 客户端,可以在 4.77MHz IBM PC 上运行,为 ChatGPT 提供了一种独特的交流方式。
对于 ChatGPT 客户端来说,MS-DOS 是一个非常有挑战性的平台,因为它缺乏本地联网能力。此外,Yeo 的目标是一台处理能力非常有限的电脑:1984 年的 IBM 5155。它的内部包含一个 Intel 8088 4.77 MHz 的 CPU、640KB 传统内存、CGA ISA 显卡和 MS-DOS 6.22 系统。
IBM 5155 是一款便携式电脑,它采用了类似于行李箱的外壳设计,有一个可折叠的手柄,可以方便地携带。
为了创建客户端,Yeo 使用了 Open Watcom C/C++,这是一个在 Windows 11 上运行的现代编译器,可以针对 16 位 DOS 平台。为了测试,他使用了运行 DOS 6.22 的 VirtualBox 虚拟机来简化开发过程,然后他将编译后的二进制文件传输到目标 IBM DOS PC 上进行测试。
为了处理 IBM PC 上的网络问题, Yeo 做了多方面的努力。首先,他利用了 1983 年发明的「Packet Driver API」标准。他将 Michael B. Brutman 的开源 MTCP 库集成到应用程序中,与 Packet Driver 进行通信,为客户端提供网络功能。
对于 ChatGPT API,Yeo 使用了 OpenAI 的 Chat Completion API,用 C 语言手动构建了 POST 请求(并解析了 JSON 格式的响应)。
然而,Yeo 遇到了一个巨大的障碍:ChatGPT 的 API 需要加密的 HTTPS 连接。由于 MS-DOS 没有原生的 HTTPS 库,Yeo 创建了一个 HTTP-to-HTTPS 代理,可以在现代计算机上运行,并翻译 MS-DOS 客户端和 ChatGPT 的安全 API 之间的请求和响应,在通信过程中充当一个透明的中间人。
Yeo 说,由于 DOS 应用的单线程性质,向控制台读写输入是另一个挑战。他设计了一种在不暂停程序的情况下检查和接收按键的方法,使用 MTCP 页面和在线样本作为参考。
最后,客户端的效果比 Yeo 预期的要好。他在一篇更详细的博客中描述了他的开发过程。