챗GPT는 텍스트를 입력하는 것만으로 인간 수준으로 자연스러운 문장으로 답을 해주는 AI다. 이런 챗GPT API를 이용해 도스(DOS)용 클라이언트를 개발하고 40년 전 PC인 IBM PC5155에서 동작시키는데 성공했다고 한다.
개발한 엔지니어에 따르면 보유한 가장 오래된 도스 기기는 1984년 IBM PC5155였다고 한다. 여기에서 챗GPT를 실행할 수 있다면 다른 거의 모든 도스 컴퓨터에서 실행 가능할 것이라는 설명이다.
제품 사양은 인텔 8088 4.77MHz CPU에 메모리 640KB, CGA ISA 그래픽, NE2000 호환 ISA 이더넷 어댑터, XT-IDE ISA 드라이브 컨트롤러, MS-DOS 6.22 등이다. 물론 16비트 도스에선 64비트 버전 윈도를 기본적으론 실행할 수 없다. 따라서 개발은 도스 6.22를 실행하는 가상 머신을 설정해 이뤄졌다.
코딩에서 가장 큰 문제는 네트워크 API였다. 이는 도스에는 네트워크 API가 네이티브로 제공되지 않기 때문. 하지만 1983년 개발된 네트워크 표준(Packet Driver API)에 주목했다. 이 API를 이용해 오래된 PC를 TCP/IP 네트워크에 대응시키는 오픈소스 네트워크 라이브러리인 mTCP를 찾았다. mTCP 라이브러리는 애플리케이션에 통합되어야 하며 TSR(Terminate-and-Stay-Resident) 프로그램으로 실행되는 제조업체가 제공하는 패킷 드라이버와 통신한다. TSR 프로그램은 응용 프로그램에서 호출될 때까지 백그라운드에서 대기 상태에 있으며 네트워크카드와 직접 통신한다.
다음은 통신 프로토콜 문제. HTTPS 요구를 실시할 수 없는 시스템의 HTTP 접속을 HTTPS 접속으로 업그레이드하는 프록시(http-to-https-proxy)를 사용했다고 한다. 다시 말해 오픈AI 서버와 PC5155가 직접 통신하는 게 아니라 이 프록시를 동작시키고 요즘 PC를 경유해 통신을 실시한 것이다.
또 일련의 네트워크 스택은 단일 작업 도스 앱으로 관리되므로 사용자 입력을 기다리는 동안 네트워크 스택도 중단된다. 이 때문에 mTCP 라이브러리 샘플 코드를 참고로 키보드 입력을 로컬 버퍼에 보존, 콘솔에 출력 프로그램을 일시 정지하지 않는 궁리를 취했다고 한다. 관련 내용은 이곳에서 확인할 수 있다.