TL;DR

  • GPT-6 Luna가 브라우저 요청에 HTTP 응답을 반환하고 대화 문맥에 할 일 상태를 보존해 실제로 작동하는 웹 앱이 됨.
  • 기본 할 일 목록에서 검색, 칸반, 다크 모드, 프로필, 게임, 점수 기록, AI 비서까지 요청에 따라 기능이 즉석에서 만들어짐.
  • 실험 중 파싱할 수 없는 HTTP 응답은 없었고, 스크린샷 기준 할 일의 문구와 순서는 유지됐지만 57번째 작업 뒤 중복이 발생한 사례도 있음.
  • 상호작용 한 번의 비용은 약 0.5센트, 할 일 생성과 완료를 두 번의 상호작용으로 가정하면 작업당 약 1센트로 추산됨.
  • 프록시 스크립트 설정에는 약 10분이 걸렸으며, 에이전트·도구 호출·웹 검색 없이 언어 모델 자체가 앱으로 작동함.

한 걸음 물러서서

  • 웹에서 이뤄지는 일의 상당 부분은 서버와 구조화된 텍스트를 주고받는 과정임. 서버 애플리케이션은 데이터를 처리하고 데이터베이스와 통신함.
  • ChatGPT는 구조화된 텍스트를 출력하고 논리를 처리하며, 대화 문맥을 통해 어느 정도 데이터를 유지할 수 있음. 따라서 이론상 브라우저를 서버인 척하는 챗봇에 연결할 수 있음.
  • 실험 전 우려한 문제는 브라우저가 파싱할 수 없는 잘못된 HTTP 응답, 페이지 전환 간 레이아웃 불일치, 데이터 손실과 손상이었음.

작동하는 웹 앱

  • GPT-6 Luna에서 상태를 유지하는 웹 앱이 실제로 작동했고, 이미 할 일 항목도 추가된 상태였음.
  • 요청 처리에는 몇 초에서 최대 1분까지 걸리는 등 지연 시간이 불규칙했지만, 전반적으로 작동함.
  • 할 일 목록이 복잡해지자 ?search=cat을 URL에 붙였고, Luna가 별도 지시 없이 검색 기능을 만들어냄.
  • /kanban을 요청하자 칸반 보기가 생겼지만, 열 사이의 드래그 앤 드롭은 지원되지 않음.
  • /settings에는 다크 모드 전환 기능이 있었고, /profile 수정과 무료 /subscription도 제공됨.
  • /games/snake도 만들어졌으며, 정적 HTML 사이트를 내려받아 플레이할 수 있었음. /games/snake/highscores에서 최고 점수를 확인할 수 있었음.
  • 스네이크 게임은 페이지 전환 없이 연속으로 플레이해도 점수를 유지했고, 자체적으로 가져오기(fetch) 요청을 처리함. 첫 번째 버전에는 이 기능이 없었으며, /highscores를 처음 만들어내도록 한 뒤 기능이 생김.
  • 다른 /games도 예상대로 작동했지만, Tiny Arena는 /doom을 만들어내도록 시도한 결과물임.
  • 앱에 AI 비서를 추가해 흥미로운 작업을 시켰고, 요청한 항목 일곱 개를 차례로 확인함.

평가

품질

  • 처음 우려했던 브라우저가 파싱할 수 없는 잘못된 HTTP 응답은 한 건도 없었음.
  • 페이지 전환 간 레이아웃은 주의 깊게 살펴보면 사소한 불일치가 일부 보임.
  • 촬영한 스크린샷을 기준으로 모든 할 일은 실험 내내 정확한 문구와 순서를 유지함. 다만 Daylight Assistant와의 채팅 기록은 다소 뒤섞임.

비용

  • 앱과 한 번 상호작용하는 비용은 토큰 기준으로 약 0.5센트로 추산됨.
  • 할 일 하나마다 생성과 완료, 총 두 번의 상호작용이 필요하다고 단순 가정하면 작업당 비용은 약 1센트임.
  • 월 5달러인 Todoist Pro 구독료와 비교하면 같은 비용으로 한 달에 약 500개의 작업을 계획하고 완료할 수 있음.
  • 기능 비교에서 Daylight와 Todoist는 필터, 칸반, AI 비서를 모두 제공함. Daylight는 사용량 기반 결제이고 Todoist는 월 구독 방식이며, 스네이크 게임은 Daylight에만 있음.

개발 노력

  • 브라우저와 언어 모델 사이에서 프록시 역할을 하는 간단한 Python 스크립트를 설정하는 데 약 10분이 걸렸으며, 설정 과정에는 AI를 사용함.

결론

  • 언어 모델이 놀라운 일을 하는 모습은 봐왔지만, 이번 실험의 결과는 예상과 크게 달랐음.
  • 반복 작업을 가능하게 하는 에이전트, 하네스 또는 별도의 프로세스가 없었고, 도구 호출이나 웹 검색도 없었음.
  • 언어 모델이 앱을 만든 것이 아니라 언어 모델 자체가 앱으로 작동함.
  • AI를 상대로 웃을 만한 결과를 예상했지만, 컴퓨터가 해낸 일 중 가장 깊은 인상을 받은 결과가 됨.

후일담

  • 앱 내 채팅으로 자전거를 탄 펠리컨을 플레이 가능한 게임으로 바꾼 뒤, Daylight는 구독 토큰 한도에 도달함.
  • 촬영한 스크린샷이 있었는데도 마침내 프로세스를 종료할 때는 묘한 기분이 들었음.

추가 내용

상태 일관성

  • 돌이켜보면 실험에서 상태 일관성을 더 중점적으로 확인했어야 했지만, 다른 기능에 집중하게 됨.
  • 완전성을 위해 새 세션에서 에이전트가 Daymark 실험을 반복하게 했고, 57번째 작업 뒤 항목 하나가 중복됨.
  • 같은 장보기 목록을 극적인 효과 순으로 정렬하는 작업을 두 번 만들 뻔한 결과임.

설정

  • 프롬프트를 지나치게 세밀하게 설계했음. 에이전트는 언어 모델이 계산에 약하다는 점을 고려해 Content-Length 헤더가 문제가 될 수 있다고 판단하고, 이를 우회하는 지침을 추가함.
  • 모든 응답에 Connection: close를 포함하고, 연결이 닫히므로 Content-Length는 생략해도 된다고 지시함.
  • 실제로는 이런 지침이 불필요했음. 지침이 없어도 모델은 Content-Length를 생성하려고 하지 않았음.
  • HTTP/1.0과 HTTP/1.1 응답은 유효성을 갖추는 데 헤더가 전혀 필요하지 않음.

향후 실험

  • 더 많은 비즈니스 로직을 갖춘 앱으로 실험을 반복해볼 만함. 서로 다른 엔티티에 접근 권한이 다른 계정을 둘 수도 있음.
  • 기본적으로 기록이 보존된다는 점을 활용하는 방안도 검토할 수 있음.
  • 전체 설정은 매우 간단해 누구나 시도할 수 있음.

다른 모델

  • OpenAI의 다른 모델로도 실험을 반복했지만, 결과는 GPT-6 Luna만큼 흥미롭거나 재미있지는 않았음.
  • Astra는 매우 정교한 웹 앱을 만들었지만, 기능을 즉석에서 만들어내도록 유도하려 하자 이를 간파함.
  • Sol은 개인적으로 가장 마음에 드는 UI와 가장 매력적인 제품 이름을 만들었으며, XSS도 방지할 줄 알았음.
  • Sol에는 제한적인 robots.txt도 있었음.
  • 2년 전의 플래그십 모델인 GPT-4o는 예상에 가까운 결과를 냈음. 데이터 지속성 지시를 무시해 페이지를 새로 고치면 목록이 지워짐.
  • 마지막으로 GPT-3.5도 실험에 포함됨.