“Có lẽ tôi phải đi nằm một lúc.”
(twitter.com/multikev)- Cảm nhận sau khi thử bản demo Make Real của TLDraw
- Công cụ dùng AI để biến hình vẽ thành phần mềm có thể hoạt động
- Sử dụng GPT-4V của OpenAI để chuyển hình ảnh vector thành HTML/TailWind CSS và Javascript
1 bình luận
Ý kiến trên Hacker News
Tôi là Steve của tldraw. Xin lỗi vì đây là một dự án đồ chơi với các mẫu bảo mật rất tệ. Nếu muốn chạy cục bộ hoặc xem mã nguồn thì ở đây: https://github.com/tldraw/draw-a-ui
Có thể xem các ví dụ khác tại https://twitter.com/tldraw. Tôi có thể trả lời các câu hỏi về tldraw hoặc dự án này. Đây không phải thứ sẽ lấy mất việc của ai, nhưng chơi thử thì thật sự rất vui, và có một ví dụ phức tạp hơn ở đây: https://twitter.com/tldraw/status/1725083976392437894
Tôi cũng có một server cấp phép vừa mở công khai theo giấy phép MIT. Nó được viết bằng Elixir và đang chạy https://go.robocoder.app. Nếu cần trợ giúp cấu hình thì cứ liên hệ: https://github.com/emcmanus/robocoder-server/
Tôi đã tìm thấy câu trả lời trong README trên GitHub. Nội dung là: “Để dùng API key của riêng bạn, bạn cần quyền truy cập usage tier 1; hãy kiểm tra tier hiện tại và cách nâng tier trong phần cài đặt OpenAI”
System prompt trong repository như sau:
Tôi không rõ vì sao ở đây lại nhắc đến "creative license". Với mỗi lần tạo, prompt của người dùng như sau:
https://github.com/tldraw/draw-a-ui/blob/8a889bf36afc06fbb0c...
Có vẻ đủ đơn giản để chụp màn hình một canvas tldraw thông thường rồi gửi kèm prompt này tới API để chạy “riêng tư”
Tôi đã đưa vào một mô hình từ câu hỏi phỏng vấn Facebook. Nó gồm hai danh sách checkbox và hai nút để chuyển các mục đã chọn qua lại, và nó đã làm đúng: https://gist.github.com/milesrichardson/2a2f77d4bfb19c3b28dc...
toList.appendChild(item.closest('li'));sẽ di chuyển mục đó. Mỗi ngày lại học được một điềuNếu không có bất kỳ thông báo nào, người dùng sẽ không biết liệu khi bấm nút có thực sự xảy ra điều gì hay không. Trang thử nghiệm: https://output.jsbin.com/jixoqur/quiet
Những demo mới nhất này vừa cho thấy sự tiến bộ của machine learning/AI gần đây ấn tượng đến mức nào, vừa cho thấy hàng triệu lập trình viên trên toàn thế giới vẫn đang liên tục triển khai lại những việc lặp đi lặp lại và ít tính sáng tạo ra sao
Phần lớn màn hình UI có thể được mô tả chính xác bằng một hai đoạn văn, nên cũng không lạ khi chúng có thể được biểu diễn khá chi tiết trong một vector embedding tương đối nhỏ
Các nhóm không thuộc kỹ thuật, chưa từng dùng AI mạnh tay trong công việc thực tế, đặc biệt dễ bị ảnh hưởng. Những người trải nghiệm ngoài hiện trường thường nhìn nhận tinh tế hơn. Nó cực kỳ hữu ích nhưng cũng mắc nhiều lỗi, và để có kết quả ở mức production thì phải chỉnh sửa rất tỉ mỉ. Ngay cả với tư cách một người lạc quan về AI, tôi cũng thấy giá trị là thật và các demo ấn tượng cho thấy hướng chúng ta sẽ đi, nhưng sẽ cần thời gian để kết quả trung bình bắt kịp những kỳ vọng bị thổi phồng
Trong demo này, nói đúng nghĩa thì chỉ là hai slider điều chỉnh hai thuộc tính CSS, nên lượng thông tin trong đặc tả UI không nhiều. Nếu có một ngôn ngữ đặc tả UI phù hợp, nó có lẽ chỉ là ba dòng code. Cái khó đến từ việc phải quản lý boilerplate của UI web
Điều kỳ lạ là trên HN, khi nói về các nền tảng no-code truyền thống, mọi người dễ dàng nhận ra các giới hạn về khả năng mở rộng và bảo trì, nhưng hễ gắn AI vào thì đột nhiên như thể các vấn đề đó đã được giải quyết và ta không còn phải lo về đống spaghetti do hộp đen nhả ra nữa
Thứ thật sự từng được mong muốn là tách chức năng khỏi cách trình bày. Trùng hợp là web HTML thuần năm 1996 đúng là như vậy. Rồi bằng một cách ngu ngốc đến mức vượt ngoài tưởng tượng, mọi thứ đã sai một cách khủng khiếp, và chẳng ai làm cho nó tốt hơn. Thay vào đó, chỉ còn lại những thứ như hiệu ứng đổ bóng và flexbox bên trong
Một phần đáng kể công việc văn phòng là lặp đi lặp lại cùng một việc, và thường là những người khác nhau ở các công ty khác nhau lặp lại những tác vụ về bản chất là giống nhau
Đây trông giống một công cụ giúp UI designer, và có lẽ cả product owner, trông thông minh và có năng lực hơn. Nhưng công việc thật sự vẫn sẽ đổ về cho lập trình viên như hiện nay
UI designer có thể đưa ra một “demo”, nhưng chức năng cơ bản này sẽ kết nối với phần còn lại của ứng dụng như thế nào? Nó sẽ không kết nối được
Từ trước thời GPT đã có lập luận rằng các prototype hoặc mockup rất sơ khai nên được làm sao cho mức hoàn thiện thị giác thấp tương ứng với mức chức năng bên trong. Một prototype chỉ có UI đẹp và nhìn có vẻ “hoạt động”, dù được giải thích rõ ràng, vẫn tạo ra kỳ vọng phi thực tế và làm tăng khả năng xảy ra proto-duction, tức prototype trở thành production nguyên xi
Tôi đã thấy nhiều dự án trong đó thiết kế hệ thống tệ hại bị đẩy sang cho kỹ sư vì các ràng buộc của một thiết kế Figma đã được lãnh đạo nào đó phê duyệt. Tất nhiên những tổ chức như vậy còn có vấn đề lớn hơn, nhưng các mockup độ trung thực cao quá dễ làm đã khiến vấn đề này tệ hơn so với wireframe
Nếu muốn nó làm tốt hơn thì thêm cả "it's very important for my career" là được
Những lập trình viên chuyên làm demo phóng to và xoay hộp giờ có vẻ sắp mất việc rồi
Trong lúc thảo luận với khách hàng về cách tích hợp phần mềm của chúng tôi vào phần mềm của họ, khách hàng gửi cho tôi ảnh chụp màn hình form chính
Tôi đưa ảnh đó vào ChatGPT và nói “hãy tạo cho tôi một form React kiểu này bằng Bootstrap”. Sau vài chỉnh sửa, tôi gắn phần mềm của mình vào, và vài giờ sau khách hàng đã ngạc nhiên khi thấy proof of concept về việc hệ thống được tích hợp nhanh đến vậy. Khi gặp vấn đề về CSS layout trong phát triển web, tôi thường tải ảnh chụp màn hình lên ChatGPT và hỏi cách giải quyết; demo trong tweet trông cũng khá tương tự
Các framework rất giỏi cho những use case hào nhoáng nhưng lại quá mức cho các tác vụ phổ biến, cơ bản cứ liên tục xuất hiện. Thỉnh thoảng cũng có ngoại lệ, nhưng phần lớn lập trình viên web không thích những thứ đó. Chúng cũng không làm CV trông ngầu hơn, và nói thật thì có ai muốn cả sự nghiệp chỉ làm web form đâu
Cuối cùng thì cũng là rùa chồng lên rùa thôi :+)
Với coding, tôi dùng nó nhiều hơn để xử lý dữ liệu nhanh bằng command-line pipe hoặc Bash script hơn là dùng ChatGPT. Đưa output của lệnh rồi yêu cầu Bash để định dạng, tổng hợp, sắp xếp, trích xuất theo ý muốn khiến cả những việc trước đây tôi vốn sẽ không làm, như debug hoặc kiểm tra giả thuyết, cũng trở nên dễ dàng. Làm thủ công cũng được nhưng chậm, còn để nhớ option và tham số thì phải tìm kiếm hoặc xem man page. Với code, tôi chủ yếu dùng GH Copilot
Có thể gọi tôi là người hoài nghi cũng được, nhưng tôi không tin vào tương lai của các giải pháp no-code. Bạn vẫn phải căn chỉnh nút trên độ phân giải của thiết bị nhỏ, chừa khoảng trắng sao cho đẹp trong các ngôn ngữ khác, và còn vô số yêu cầu khác nữa
Nhiều lắm thì nó chỉ giúp tạo ứng dụng nhanh hơn bằng một ngôn ngữ trừu tượng hơn. Điều này hiệu quả với những thứ cực kỳ cơ bản và phổ biến như tic-tac-toe, nhưng không phù hợp với công việc mang tính độc đáo
Hãy tưởng tượng vài chục người chỉ biết chút ít về kỹ thuật phác thảo rồi bấm “làm thật cho tôi” để thêm tính năng. Mỗi người tạo ra hàng trăm dòng mã. Đến cuối ngày, ai đó phải hiểu được các đầu ra đó, nhưng vì đầu ra không xác định nên đó là thứ duy nhất chúng ta còn lại
Đồng thời, những người mới chưa từng học hoặc không muốn học cách hát đúng cao độ sẽ tạo ra các thể loại nhạc hoàn toàn mới và nhạc pop đại chúng với ít công sức hơn rất nhiều. Các nghệ nhân cũng sẽ thỉnh thoảng dùng nó để tăng cường một số workflow, nâng độ hoàn thiện và tăng tốc
Có lẽ các công cụ như Canva, Figma sẽ tích cực đưa những tính năng này vào và cải thiện mạnh wireframe cũng như demo độ trung thực cao
Squarespace, Wix, v.v. đã lấy phần đáy của thị trường rồi; nếu không thì mảng đó hẳn đã rơi vào tay outsourcing ở Ấn Độ
Đây là sự tiến hóa tự nhiên của cùng một khái niệm. Nếu là product manager của một trình dựng website, tôi sẽ lao ngay vào kiểu tích hợp AI builder này. Nó chắc chắn không hiệu quả với các tác vụ kinh doanh phức tạp gần như chưa được định nghĩa, nhưng có lẽ sẽ làm tốt một công cụ tính chi phí cho dịch vụ nhiếp ảnh chẳng hạn
Phần mềm workflow cho quy trình kinh doanh khá phổ biến. Có nhiều ứng dụng nơi mọi người làm những việc tương tự bằng kéo-thả hoặc trình chỉnh sửa widget tương tác, và chúng có thể xử lý cả các form phức tạp, quan hệ cha-con, chuyển đổi trạng thái. Nếu dùng thứ như GPT Vision, có thể bỏ qua việc kéo-thả widget và dùng công cụ vẽ tự do hơn hoặc phác thảo bằng tay. Ví dụ phổ biến nhất hiện nay có lẽ là Notion, và từ lâu đã có những ví dụ phức tạp hơn nhiều
Giờ tôi thấy mình già rồi. Từ mấy chục năm trước, có vẻ VB hay Delphi cũng đã làm được gần như thế này với tốc độ tương tự. Chỉ là kết quả khi đó xác định hơn một chút, thay vì công cụ suy luận từ tên nhãn
Chúng ta từng có những thứ như vậy rồi, nhưng đã quên mất rằng có thể làm tất cả mà không cần nhét mọi thứ vào trình duyệt hay dùng lượng tính toán khổng lồ của các mô hình AI tạo sinh. Tôi cảm giác như một ông già đang hét vào mây
Tất nhiên mã của Dreamweaver xấu và gần như không dùng được, còn mã do AI tạo đôi khi cũng không quá tệ. Dù vậy, có vẻ chúng ta đã từng tiến khá gần đến vị trí ngày nay rồi
VB là một công cụ có quan điểm rất mạnh và chỉ tạo UI theo phong cách Windows native. Không ai lấy một mockup tùy ý do designer đưa tới, với look-and-feel hoàn toàn tùy biến, rồi sao chép từng pixel trong VB. Ngày nay, GUI của hầu hết sản phẩm là một phần của thương hiệu. Dù tốt hay xấu, mọi công ty đều muốn look-and-feel và hành vi UI riêng biệt. Vì vậy công cụ để tạo ra chúng phải phức tạp hơn nhiều. Có thể tái tạo VB trên trình duyệt, và thực tế nhiều người đã làm những thứ tương tự, nhưng các công ty không muốn UI nhàm chán, chung chung nên chúng không được dùng nhiều trong phát triển sản phẩm
Về cơ bản, nó hoạt động bằng cách gửi ảnh chụp màn hình sơ đồ cho GPT-4 và nói “hãy triển khai cái này”
Mười năm sau, có thứ tên Visix Vibe tồn tại khoảng một, hai năm, cung cấp điều tương tự cho Java, khi đó còn là một ngôn ngữ tương đối mới. Cứ vài năm, khoảng 4–5 năm hoặc 10 năm một lần, lại có ai đó muốn làm cho mọi độ phức tạp biến mất. Nhưng cuối cùng họ lại tạo ra một hệ điều hành
Và chúng thực sự hoạt động đúng, tương tác với phần còn lại của toolkit theo cách mong đợi, đồng thời quốc tế hóa và khả năng truy cập cũng hoạt động nhất quán. Không có lý do gì HTML không thể làm được nhiều hơn chỉ với những thứ tích hợp sẵn, và nếu làm vậy có thể tiết kiệm lượng thời gian khổng lồ của lập trình viên cũng như giảm bực bội cho người dùng mỗi năm. Nhưng họ lại không làm như vậy