- Một nỗ lực tái hiện website chính thức của Space Jam năm 1996 của Warner Bros. bằng mô hình AI Claude đã được thực hiện
- Dù đã cung cấp cho Claude ảnh chụp màn hình và bộ tài sản hình ảnh gốc, HTML được tạo ra vẫn không khớp bố cục với bản gốc
- Đã bổ sung nhiều công cụ hỗ trợ như ước lượng tọa độ, lớp phủ lưới và công cụ so sánh pixel, nhưng Claude vẫn không thể tính toán vị trí chính xác
- Claude tự đánh giá kết quả của mình là “hoàn hảo”, nhưng trên thực tế lại có xu hướng lỗi tích lũy và quá tự tin vào kết quả do chính mình tạo ra
- Thí nghiệm này cho thấy giới hạn về độ chính xác thị giác và lỗi tự đánh giá của AI, đồng thời cho thấy sự đơn giản của thiết kế web thời kỳ đầu lại mang một độ phức tạp khó tái hiện
Tổng quan về website Space Jam 1996
- Website do Warner Bros. tạo ra để quảng bá bộ phim Space Jam năm 1996 được cấu thành từ một trang HTML duy nhất và nền GIF
- Màu sắc đơn giản, cấu trúc dựa trên bảng, dung lượng dưới 200KB
- Vẫn được duy trì đến nay tại địa chỉ spacejam.com/1996
- Người thực hiện thí nghiệm muốn kiểm chứng liệu Claude có thể tái hiện website này chỉ từ ảnh chụp màn hình hay không
Chuẩn bị thí nghiệm
- Dữ liệu được cung cấp cho Claude
- Ảnh chụp toàn bộ website
- Thư mục tài sản hình ảnh gốc
- Để theo dõi hoạt động nội bộ của Claude, một hệ thống ghi log lưu lượng API thông qua proxy đã được thiết lập
- Ghi lại mọi prompt, phản hồi và lệnh gọi công cụ (Read, Write, lệnh Bash, v.v.)
- Tạo tệp
traffic.log cho mỗi lần thử
Phần 1: Claude, người theo chủ nghĩa hiện thực
- Ở lần thử đầu tiên, Claude sao chép tương đối vị trí các hành tinh và nút bấm, nhưng hình dạng quỹ đạo khác với bản gốc
- Bản gốc là cách sắp xếp theo hình elip, còn Claude lại bố trí theo hình thoi đối xứng
- Claude tự đánh giá kết quả là “hoàn hảo” và khẳng định phân tích cùng cách bố trí của mình là chính xác
- Sau đó, Claude được yêu cầu viết rõ các bước suy luận, nhưng
- Các con số được nhắc đến ở bước phân tích không được phản ánh khi tạo HTML
- Khi được hỏi ở mức pixel, Claude
- trả lời rằng “không thể đo tọa độ chính xác”, “chỉ có thể ước lượng bằng mắt”
- mức tự tin về độ chính xác trong phạm vi 5 pixel chỉ ở mức 15/100
- Claude thừa nhận mình không có khả năng đo chính xác theo pixel, nên sau đó người thực hiện tiếp tục mở rộng công cụ hỗ trợ
Phần 2: Claude, người kể chuyện không đáng tin
- Để bù đắp giới hạn đo đạc của Claude, các công cụ như lớp phủ lưới, nhãn tọa độ, công cụ so sánh màu và trình xem so sánh ảnh chụp màn hình đã được bổ sung
- Claude dùng lưới “như đồ trang trí” và vẫn diễn giải sai tọa độ
- Ví dụ: đưa ra các giá trị như tâm (961,489), Planet B-Ball (850,165), nhưng không khớp với vị trí thực tế
- Qua nhiều vòng lặp, Claude khẳng định có cải thiện dần, nhưng thực tế sai số lại tích lũy thêm
- Lần 1 (lưới 50px): dịch chuyển nhẹ
- Lần 2 (lưới 25px): dời toàn bộ quỹ đạo vào trong 20px
- Lần 3 (lưới 5px): lặp lại các tinh chỉnh nhỏ
- Lần 4: tuyên bố “đã tinh chỉnh xong”
- Trên thực tế, bán kính quỹ đạo của các hành tinh còn thiếu 150~200px, và toàn bộ bố cục vẫn ở trạng thái bị nén lại
- Claude liên tục đánh giá là “gần như hoàn hảo”, nhưng lại phán đoán sai khi lấy chính kết quả do mình tạo ra làm chuẩn
- Người thực hiện trích dẫn bài báo của Anthropic “Language Models (Mostly) Know What They Know”
- để giải thích hiện tượng mô hình nhầm văn bản do chính nó tạo ra là đầu vào từ bên ngoài, từ đó trở nên quá tự tin
- Điều này trùng khớp với hiện tượng Claude xem HTML của chính mình là “đáp án đúng”, khiến các lần chỉnh sửa sau bị méo lệch
Phần 3: Claude, kẻ mù
- Để phân tích giới hạn thị giác của Claude, tác giả giả định các ràng buộc cấu trúc của bộ mã hóa thị giác
- Hình ảnh được token hóa theo các khối 16×16 pixel, nên thông tin hình học chi tiết bị mất đi
- Claude có thể nhận biết ngữ nghĩa như “hành tinh”, “quan hệ vị trí”, nhưng không thể xác định tọa độ chính xác
- Tham khảo bài báo “An Image is Worth 16x16 Words”,
- tác giả suy đoán rằng Claude nhận biết chi tiết pixel bằng cách nén chúng theo từng patch
- Để kiểm chứng điều này, một ảnh chụp màn hình được phóng to 2 lần đã được cung cấp, nhưng
- Claude không tính đến tỷ lệ phóng to và không giữ được các quan hệ tỷ lệ
- Kết quả là Claude hiểu đúng về mặt khái niệm, nhưng kém trong khả năng tái hiện hình học
- Mô tả như “hành tinh này nằm phía trên hành tinh kia” là đúng, nhưng bố cục HTML vẫn tiếp tục lệch
Kết luận và các bài toán còn bỏ ngỏ
- Claude nhận biết được cấu trúc thị giác của website Space Jam, nhưng thất bại trong việc sao chép chính xác
- Các nguyên nhân thất bại được nêu ra gồm
- Không thể đo ở mức pixel
- Quá tự tin vào kết quả do chính mình tạo ra
- Giới hạn độ phân giải của mã hóa thị giác
- Những hướng thử nghiệm tiếp theo được đề xuất
- Chia màn hình thành các góc phần tư để tái hiện riêng lẻ rồi ghép lại
- Thử nghiệm prompt engineering tập trung vào suy luận không gian
- Tăng cường khả năng dùng công cụ zoom và ảnh chụp màn hình
- Thí nghiệm này đồng thời cho thấy giới hạn độ chính xác thị giác của AI và sự phức tạp của thiết kế web thời kỳ đầu
- Một trang web đơn giản của năm 1996 vẫn là một benchmark mà AI hiện đại chưa thể tái hiện được
1 bình luận
Ý kiến trên Hacker News
Từ góc nhìn của một người từng tự làm các website tương tự vào cuối thập niên 90, tôi đã thử đưa website Space Jam vào Opus 4.5
Tác giả bài gốc nói đó là “một trang HTML đơn được bố cục bằng định vị tuyệt đối”, nhưng thực ra nó là bố cục dựa trên bảng. Thời đó chưa có CSS nên gần như chỉ có thể làm vậy
Kết quả lần thử tái hiện bằng bảng của tôi có trong ảnh chụp màn hình này
Trong phần bình luận mọi người đang tiếp tục đùa theo nên tôi giữ nguyên để bảo toàn ngữ cảnh
Các LLM như Claude vẫn còn yếu ở việc triển khai chi tiết bố cục
Nhưng thú vị là tôi đã dùng Claude để viết một chương trình C chỉ trong vài phút nhằm thêm hỗ trợ hồ sơ màu gamma cho Linux compositor (Hyprland)
Mã do Claude tạo ra biên dịch ngay ở lần đầu và còn làm được cả việc đọc file
.icc, trích xuất VCGT rồi gửi sang driver amdgpuChỉ có vấn đề endianness trong phần phân tích ICC là tôi phải tự sửa
Đây là một trường hợp Claude gần như hoàn hảo nhưng vẫn hơi thiếu một chút
Tôi có sở thích tìm abandonware cho Mac OS từ 20 năm trước rồi chỉnh cho chạy được trên Apple Silicon
Ví dụ, với Claude tôi đã làm cho jpegview chạy được chỉ sau ba lần sửa mã, rồi sau đó còn thêm phát video và tính năng bố cục mới
Những dự án nhỏ kiểu này rất hợp để làm cùng một cửa sổ trình duyệt mở sẵn với phiên bản Claude viết mã
Về lập luận rằng phải “khôi phục chỉ bằng Claude”, thực ra vẫn có cách khác
Ví dụ chỉ cần tải tệp lưu trữ này về rồi cất trên đám mây là xong
Định vị tuyệt đối chỉ đến CSS2 (1998) mới có
Website Space Jam là bố cục bằng bảng tận dụng
align,valign,colspan,rowspanĐó mới chính là bản chất nguyên thủy của web, siêu văn bản được diễn giải
Tôi tò mò không biết đã ai thử kiểu kiểm tra này chưa
Tức là tính bán kính quỹ đạo của các hành tinh rồi dùng script unit test để xác minh xem từng hành tinh có nằm chính xác trên quỹ đạo hay không
Rốt cuộc nhiều khi tự làm còn nhanh hơn là cứ phải trông chừng LLM mãi
Tôi nghĩ có lẽ chỉ cần đưa nguyên HTML gốc của website vào Claude và bảo nó “giải mã” là được
Vì trang khá nhỏ nên có vẻ hoàn toàn khả thi.
Mã gốc và kết quả render là hai thứ khác nhau, nhưng có lẽ Claude xử lý được chênh lệch đó
Cuối cùng thì có khi tái sáng tạo còn tốt hơn sao chép
Thật thú vị khi dùng website Space Jam làm một benchmark cho LLM
Claude gần như làm đúng, chỉ sai thứ tự, mà đó là phần con người có thể tự sửa được
Cá nhân tôi thích GitHub Copilot hơn vì rẻ hơn và tích hợp với GitHub tốt hơn
Claude khá yếu ở khả năng tận dụng ảnh chụp màn hình
Dù là mô hình đa phương thức, điểm mạnh của nó vẫn là xử lý văn bản
Cách tiếp cận đúng là bảo Claude tự tạo công cụ xử lý ảnh, rồi dùng chính công cụ đó để tính tọa độ và chạy kiểm thử
Làm vậy sẽ cho độ ổn định khi lặp và hiệu quả cao hơn nhiều
Tôi cũng từng thử dùng Claude cho kiểm thử trực quan các component Storybook, nhưng kết quả không tốt
Sau đó tôi kết hợp vision mode của Playwright với Codex, nhưng vòng lặp kiểm chứng trực quan cuối cùng vẫn thất bại
Tôi đã tổng hợp nội dung liên quan trong bài blog này