太神奇了,1984 年的电脑也能跑 Chat-GPT

news/2024/11/29 20:52:05/

新加坡的逆向计算爱好者 Yeo Kheng Meng 发布了一个 “doschgpt” ChatGPT 客户端,这个客户端适用于上世纪八十年代的 MS-DOS 系统。

目前这个 DOS 系统的 ChatGPT 客户端已成功在 1984 年的 IBM 5155 便携式 PC 上运行,这台机子配备 4.77Mhz 主频的 Intel 8088 CPU MS-DOS 6.22 系统,带 640KB 内存、以及 CGA ISA 图形。

 Yeo 老哥是个不折不扣的 “复古守旧派,早在 2019 年他就为 Windows 3.1 开发了一个 Slack 客户端,这次更是把 1981 年的 MS-DOS 纯文本操作系统和最新的 ChatGPT 两个跨了 40 多年的东西组合到一块。

最有意思的是整个程序的开发过程, Yeo 老哥先是找到一个能开发 16 DOS 程序的 “Open Watcom” C/C++ 编译器 ,它本身是一个 32 位程序,这意味着它可以在 64 Windows 11 等现代平台上运行。

但是 64 位的 Windows 又没法执行 16 位的 DOS 程序,而每次都在 640K 内存的老电脑上跑测试也并不是很现实。于是 Yeo 开一个运行 DOS 6.22 Virtualbox 虚拟机,然后将虚拟机和主机桥接网络,方便传输文件进行开发和测试,等测试完成后再把二进制文件传到实际的 IBM PC 上运行。

 但这时另外一个问题来了:如何在这么老的 IBM PC 上处理网络?  在这一步 ,Yeo 找到了一个 1983 年的 Packet Driver API ,然后使用开源的 MTCP 库集成到应用程序中,以与 Packet Driver 进行通信,从而为客户端启用网络功能。

 而要使用 ChatGPT API,必须要有一个 Post 请求,然而 DOS 没有可以使用的辅助函数,必须用 C 语言手动构建整个 POST 请求:

#define API_CHAT_COMPLETION "POST /v1/chat/completions HTTP/1.1\r\nContent-Type: application/json\r\nAuthorization: Bearer %s\r\nHost: api.openai.com\r\nContent-Length: %d\r\nConnection: close\r\n\r\n%s"#define API_BODY "{ \"model\": \"%s\", \"messages\": [{\"role\": \"user\", \"content\": \"%s\"}], \"temperature\": %.1f }"

这时 ChatGPT API 会返回一份 JSON 输出,需要解析其中 “Content” 键的值。很明显,这一步也没有现成的 JSON 库可用,只能手动写键值对的解析代码。

 这时新的问题来了:ChatGPT API 通过 HTTPS 加密,但 DOS 系统没有本机 HTTPS Yeo 只能编写一个 go 语言的 HTTP HTTPS 代理 (有点像中间服务器),然后在现代 PC 上运行这个代理。充当一个透明中间人。它检查 HTTP 请求的主机字段,并将原始套接字字节作为 HTTPS 转发到 OpenAI 的服务器。

 这一步有点像作弊,但属实是无奈之举,毕竟要在 Intel 8088 上运行现代 TLS 加密算法,属实是太难为这个传家宝系列的 CPU 了。

剩下的就是如何将对话内容读 / 写输入到控制台,这一步不再赘述,感兴趣的朋友可以在 Yeo 的博客中查看完整的开发过程。最终实现的效果:

 Yeo 已经把整个 doschgpt 客户端在 Github 上开源,里面有详细的教程,感兴趣的朋友可以自己动手试试(前提是家里有 MS-DOS 系统的传家宝机器😂...

另外,这回图拉丁老哥们有话说了,还在嫌弃机子的配置不行?处理器低于 3.0 Ghz 不能用?人家怎么就能在 4.77Mhz CPU 上跑 ChatGPT ?还不是自己动手能力太差!还是那句话,东西老点差点怎么了,又不是不能用

相关链接:https://github.com/yeokm1/doschgpt

-END-


http://www.ppmy.cn/news/47609.html

相关文章

【erlang】并发篇

PID类型 在之前的语法篇中,我们并没有介绍 PID这个类型,它和并发息息相关,因此我们在这里来学习它。 PID是进程标识符的意思,用来标识一个erlang进程。在所有相连的erlang节点中,PID都是唯一的。但是PID会被复用&…

CSS基础——CSS基础(下)

目录 继承 选择器的优先级 优先级规则 a的伪类优先级 文本标签及样式 文本标签 em、strong、i、b small cite q blockquote sup、sub ins、del code、pre 文本样式 text-transform text-decoration letter-spacing word-spacing text-align text-indent 长…

正则表达式的字符串取反常用正则表达式

正则表达式的字符串取反操作 文件同步时,想要过滤掉扩展名为.tmp或者.TMP的临时文件,想要使用正则表达式对字符串进行取反操作。 注意:[^tmp]* 这种取反的表达式,只能表示匹配除了t、m、p以外的所有字符,是单字符匹配…

LeetCode 1042. 不邻接植花

【LetMeFly】1042.不邻接植花 力扣题目链接:https://leetcode.cn/problems/flower-planting-with-no-adjacent/ 有 n 个花园,按从 1 到 n 标记。另有数组 paths ,其中 paths[i] [xi, yi] 描述了花园 xi 到花园 yi 的双向路径。在每个花园中…

Hystrix详解

前言 Hystrix基于Feign,想熟悉Hystrix,必须先熟悉Feign。 Feign(简介和使用): Feign(简介和使用)_长头发的程序猿的博客-CSDN博客 Hystrix简介 hystrix对应的中文名字是“豪猪”&#xff0c…

关于小程序云开发cms内容管理无法使用,无法同步内容模型到云开发数据库的解决方案

小程序官方最近又搞大动作了,偷偷的升级的云开发cms(内容管理)以下都称cms,不升级不要紧,这一升级,就导致我们没有办法正常使用cms了。如果你开通完cms带下面这个标识的话,就代表你是新版本&…

ChatGPT对于程序员到底是机遇还是挑战?深度体验告诉你

目录 一、人工智能的快速发展 二、机遇 1.自动化生产 2.新技术的探索 3.更高的薪酬 三、挑战 1.竞争压力 2.人类工作替代 程序员应该如何应对 ChatGPT 的机遇和挑战 1. 学习新技术 2. 注重团队合作 3. 加强人际交往 4. 保持开放心态 5. 保护个人隐私 结论 🐖&#x…

离线前期准备

目录 项目的需求分为一下几点: 技术选型: 主要需求技术: 项目的需求分为一下几点: 用户行为数据采集的平台搭建业务数据采集的平台搭建数据仓库的维度建模分析、设备、会员、商品、地区、活动等电商核心主题、统计的报表指标近10…