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도 실험에 포함됨.
댓글 (0)
로그인하면 이 기사에 내 생각을 남길 수 있어요