- Phương pháp gọi công cụ truyền thống cho các ứng dụng AI gặp khó khăn ở quy mô lớn do số lượng mã thông báo khổng lồ, hiệu suất chậm và độ phức tạp khi tích hợp nhiều dịch vụ.
- "Code Mode" đề xuất một giải pháp đột phá, nơi các mô hình ngôn ngữ lớn (LLM) trực tiếp tạo ra mã (ví dụ: JavaScript) và mã này được thực thi trong một môi trường sandbox an toàn.
- Kiến trúc mới này cho phép tương tác hệ thống nhanh hơn, tùy chỉnh giao diện người dùng (generative UI), và mở ra kỷ nguyên mới nơi tác nhân AI được coi là người dùng chính, đòi hỏi tư duy lại về trải nghiệm nhà phát triển và bảo mật dựa trên năng lực.
Code Mode: Let the Code do the Talking - Sunil Pai, Cloudflare
- Chuyển đổi từ gọi công cụ JSON sang tạo mã: Thay vì mô hình trao đổi JSON cho các lệnh gọi công cụ, hãy để LLM trực tiếp tạo mã có thể thực thi (ví dụ: JavaScript) để giải quyết vấn đề tắc nghẽn mã thông báo và các chuyến khứ hồi chậm.
- Tận dụng mã cho logic phức tạp: Mã được tạo có thể xử lý các cấu trúc lập trình nâng cao như lặp lại, quản lý trạng thái và song song hóa trong một lần chạy duy nhất, vượt qua giới hạn của các lệnh gọi công cụ đơn giản.
- Áp dụng mô hình "Search" và "Execute" cho khám phá API: Giảm đáng kể lượng mã thông báo bằng cách chỉ tiếp lộ hai công cụ chung ("Search" để tìm kiếm đặc tả API và "Execute" để thực hiện các lệnh gọi API), cả hai đều chấp nhận chuỗi mã làm đầu vào.
- Sử dụng môi trường sandbox an toàn: Thực thi mã được tạo trong một môi trường sandbox an toàn (ví dụ: V8 isolates), nơi ban đầu không có khả năng nào và quyền truy cập vào API hoặc tài nguyên được cấp một cách rõ ràng.
- Ưu tiên bảo mật dựa trên năng lực và khả năng quan sát: Thiết kế sandbox với khả năng kiểm soát chi tiết các yêu cầu truy xuất dữ liệu ra ngoài và kết nối mạng, đảm bảo khả năng quan sát tuyệt đối các hành động của tác nhân để đảm bảo an toàn và gỡ lỗi.
- Tiếp cận giao diện người dùng tạo sinh (Generative UI): Tận dụng LLM để tạo ra các giao diện người dùng hoàn toàn tùy chỉnh cho từng người dùng dựa trên ngữ cảnh và nhu cầu của họ, thay thế các giao diện chung cứng nhắc.
- Thiết kế cho tác nhân AI như người dùng hạng nhất: Nhận ra rằng tác nhân AI là những người dùng mới của hệ thống. Tối ưu hóa trải nghiệm nhà phát triển cho chúng thông qua tài liệu API rõ ràng, thông báo lỗi có thông tin và khả năng tìm kiếm mạnh mẽ các khả năng.
Code Mode— Chế độ mã hóaTác nhân AI— AI Agentgọi công cụ— tool callingmã thông báo— tokentạo mã— generate codesandbox— môi trường biệt lậpkhả năng— capabilitybảo mật dựa trên năng lực— capability-based securitygenerative UI— giao diện người dùng tạo sinhdeveloper experience— trải nghiệm nhà phát triển
Giới thiệu về Code Mode
Người thuyết trình tiếp theo của chúng ta đã tạo ra Partikit, một công cụ mã nguồn mở dành cho các ứng dụng đa người chơi thời gian thực. Trong công việc chính của mình, anh ấy xây dựng các Tác nhân AI tại Cloudflare. Xin mời quý vị cùng chào đón Sunil Pie lên sân khấu. (20 phút nữa là đến quán pub).
Xin chào, tôi là Sunil Pie. Tôi làm việc tại Cloudflare. Tôi xây dựng các Tác nhân ở đó cho SDK của tác nhân. Tôi đang cố gắng hết sức để đây không phải là một buổi nói chuyện về Cloudflare, nhưng tôi nghĩ chúng tôi có tên trên bảng nhà tài trợ, nên điều đó cũng tốt. Đây là một buổi nói chuyện về một thứ mà chúng tôi gọi là code mode. Tôi đã tham gia vào lĩnh vực này và có một số tiền đề cho nó. Chúng tôi không khẳng định đã phát minh ra nó, nhưng đây là một buổi nói chuyện về những hàm ý của một điều mới mà chúng tôi đang khám phá.
Hạn chế của việc gọi công cụ truyền thống ở quy mô lớn
Các bạn đã xây dựng các ứng dụng AI, và việc gọi công cụ trở nên kỳ lạ ở quy mô lớn. Với chỉ một vài công cụ và các lần chạy rất ngắn, mọi thứ vẫn ổn. Nhưng ngay khi bạn bắt đầu nhồi nhét các dịch vụ của Google, Jira, Wiki, v.v., và có hàng trăm công cụ lấp đầy ngữ cảnh, hệ thống bắt đầu hỏng. Việc kết hợp trở nên kỳ lạ, và có một quá trình trao đổi qua lại với mô hình rất chậm.
Chúng tôi quyết định áp dụng một cách tiếp cận khác. Thay vì thực hiện cơ chế trao đổi JSON này, chúng tôi yêu cầu mô hình tạo mã, thường là JavaScript, mà chúng tôi có thể chạy trong một môi trường. Và một số lợi ích dường như khá rõ ràng đối với chúng tôi. Với mã, bạn có một API được định kiểu, bạn có thể thực hiện kiểm tra kiểu. Có các lỗi cú pháp. Những thứ đó đã được huấn luyện trên hàng gigabyte, thậm chí terabyte dữ liệu trong tập dữ liệu huấn luyện. Và thay vì trao đổi qua lại, bạn có thể viết mã thực thi tất cả trong một lần chạy, chỉ một lần thực thi duy nhất.
Đây là ý tôi muốn nói. Có những khả năng cơ bản của mã. Bạn có thể thực hiện lặp lại. Bạn có thể duy trì trạng thái. Bạn đang thực hiện tuần tự hóa, song song hóa. Những điều mà bạn vẫn thường làm với mã như một kỹ sư.
Giảm mã thông báo với Search và Execute
Nơi đầu tiên chúng tôi áp dụng điều này là với đồng nghiệp của tôi, Matt Carrey, người sẽ nói chi tiết hơn về vấn đề này vào ngày mai; các bạn nên xem buổi nói chuyện của anh ấy. Bề mặt API của Cloudflare có khoảng 2.600 điểm cuối API. Nếu chúng tôi tiếp lộ một công cụ cho mỗi điểm cuối đó, thì lần gọi đầu tiên sẽ tốn khoảng 1.2 triệu mã thông báo. Thật là quá tải. Không có cách nào để tạo một máy chủ MCP cho toàn bộ bề mặt API của Cloudflare.
Và anh ấy đã có một ý tưởng rất thông minh, đó là chỉ tiếp lộ hai công cụ: Search và execute. Cả hai điểm cuối này đều chấp nhận mã dưới dạng đầu vào, thực sự là một chuỗi mã. Đối với search, đầu vào của hàm mà bạn truyền cho nó là toàn bộ đặc tả JSON Open API. Và một khi nó thực hiện điều đó, execute sẽ cung cấp cho bạn một loạt các hàm mà bạn có thể gọi. Điều này đã giảm lượng mã thông báo từ 1.2 triệu xuống còn một nghìn mã thông báo, một điều chưa từng thấy. Tôi nghĩ đó là mức giảm khoảng 99.9%.
Trải nghiệm người dùng và demo trực tiếp
Điều này sẽ khá đáng sợ. Tôi thực sự có một demo trực tiếp về nó. Và các buổi demo thường không thuận lợi cho tôi trên sân khấu. Nhưng điểm mấu chốt là chúng tôi đã có thể tận dụng một bề mặt API rộng lớn, cực kỳ rộng và biến nó thành cực kỳ nhanh chóng. Bản thân lời nhắc có thể khá chung chung. Lẽ ra tôi nên tăng kích thước phông chữ ở đây. Lời nhắc ở đây là, với tư cách là một khách hàng, bạn đến và nói: "Chúng tôi đang bị tấn công DDoS. Tôi muốn bạn tìm tất cả các IP gây tấn công chúng tôi và chặn chúng." Trong khoảnh khắc hoảng loạn khi trang web của bạn gặp sự cố, bạn không có thời gian để điều hướng menu. Bảng điều khiển Cloudflare nổi tiếng là hơi rườm rà để xử lý. Và bạn chỉ muốn mọi việc được thực hiện. Và bạn thậm chí không thể có được một kết quả tốt. Lúc đó có thể là ba giờ sáng.
Với một cơ chế MCP thông thường, và đây còn chưa nói đến việc nhồi nhét 1.2 triệu mã thông báo. Sẽ mất khoảng tám lần khứ hồi để thực hiện mỗi lời gọi API đó. Thay vào đó, mô hình có thể tạo chuỗi mã này, chạy nó ngay lập tức bên cạnh bề mặt API và thực hiện chỉ trong một lần duy nhất. Và nó chỉ chạy JavaScript. Chỉ các hàm và những thứ bạn đang tiếp lộ trên bề mặt API.
Demo trực tiếp. Đây là một bản demo của máy chủ huyền thoại của chúng tôi. Tôi hy vọng mình đã đăng nhập vì nếu không, tôi sẽ cần tất cả các bạn nhắm mắt trong khi tôi nhập mật khẩu. Giả sử tôi chỉ muốn liệt kê các worker của tôi. Ồ, nó đây rồi. Liệt kê các worker của tôi. Và không cần mật khẩu. Được thôi, không sao cả. Được rồi, tôi chỉ cấp quyền truy cập chỉ đọc cho demo này. Thực hiện đi. Vâng, cho phép, chắc chắn rồi, bất cứ điều gì. Tuyệt vời. Được rồi, nó quay lại. Và bạn sẽ thấy nó sẽ bắt đầu thực thi các lời gọi công cụ. Tôi sẽ có thể mở cái này lên. Nó đã gửi yêu cầu tìm tất cả các điểm cuối API có chứa cụm từ "list workers" hoặc tương tự. Sau đó nó chạy mã, một yêu cầu duy nhất đến điểm cuối API để lấy tất cả các worker. Chắc hẳn nó đã nhận được rất nhiều kết quả. Hiện tại, nó đang gặp lỗi JavaScript. Sẽ rất thú vị để xem liệu nó có thành công hay không. Eix. Ồ, nó đang cố gắng phân trang qua các mục. Dù sao thì, hãy cứ giả định rằng nó đã hoạt động. Và tôi sẽ tiếp tục nói trong khi nó làm việc này. Rất thích việc này đang xảy ra với tôi trên sân khấu vì tôi đã kiểm tra nó 10 lần trước khi lên đây. Tôi cần phải trả tiền cho mô hình MyThos để nó hoạt động chính xác. Nhân tiện, bạn thực sự có thể thấy nó đang liệt kê các worker ở đây. Có thể nó đang gặp sự cố khi hiển thị ở đây.
Vấn đề là, chúng tôi có thể thu gọn nó. Nếu đây là một buổi nói chuyện về việc tối ưu hóa máy chủ MCP, tôi đã xong rồi. Tôi đã nói, "này, bạn nên thử cái này." Và tin tôi đi, nó hoạt động khi bạn không nhìn chằm chằm vào nó và có 800 người đang nhìn bạn trên sân khấu. Nhưng điều này đã cho chúng tôi một ý tưởng rằng có điều gì đó sâu sắc hơn đang diễn ra ở đây. Khả năng chạy mã này và cảm giác như có một cách tương tác mới với các hệ thống, với LLM.
LLM và cách thay đổi tương tác với hệ thống
Đây là điều tôi nghĩ. Mọi người ở đây đều là lập trình viên. Khi tôi đưa cho bạn một bài toán như "bạn có 200 bức ảnh trên màn hình, tôi cần bạn phân loại và đổi tên chúng." Điều đầu tiên bạn làm là mở một IDE. Bạn sẽ viết một tập lệnh nhỏ. Có thể bạn sẽ truyền mỗi bức ảnh cho một mô hình thị giác máy tính để nhận được một chú thích hay. Đổi tên và bạn hoàn tất. Đó là cách bạn tương tác với các hệ thống. Mẹ tôi sẽ không làm điều này. Lựa chọn của bà là gọi cho tôi hoặc thường là mua một ứng dụng, cho máy tính để bàn hoặc điện thoại. Và chưa ai tạo ra một ứng dụng chỉ làm chính xác điều đó. Nó sẽ giống như các ứng dụng phổ thông nhất để quản lý ảnh. Và nó có giá 7 đô la một tháng. Và vì một lý do nào đó, bạn phải cài đặt một daemon, thứ đang đánh cắp tiền điện tử của bạn hoặc những thứ tương tự.
Và đã có sự phân đôi này. Và điều đó không sao cả. Cho đến bây giờ, đây là một đánh đổi chấp nhận được, rằng người dùng không chuyên về kỹ thuật sẽ có các giao diện tùy chỉnh được xây dựng cho nhu cầu và mong muốn của họ. LLM đang phá vỡ ranh giới này. Giờ đây, mọi con người trên hành tinh đều có quyền truy cập vào một trợ lý có thể tạo mã để tương tác với các hệ thống. Nó chỉ cần một dòng lệnh như "đổi tên các tập tin này theo ngày và địa điểm" và tạo mã rồi có thể chạy nó trên hệ thống mà bạn đã cấp quyền. Tôi nói "thực thi an toàn" ở đây. Và đó là phần tôi muốn nói đến trong một phút nữa.
Hành vi nổi bật của mô hình và máy trạng thái
Ví dụ khác mà tôi có là về Kenton. Kenton là người tạo ra Cloudflare Workers. Nổi tiếng là, anh ấy làm việc còn tôi thì thích nhận công lao về mình. Đó là mối quan hệ của chúng tôi trong công ty. Vì vậy, anh ấy đã có một chuỗi bài đăng cách đây một thời gian, trong đó anh ấy đã tự xây dựng một môi trường viết mã nhỏ. Bởi vì không ai khác trên thế giới làm điều đó vào thời điểm hiện tại. Thật độc đáo. Tự xây dựng một môi trường viết mã nhỏ của riêng bạn. Thứ mà anh ấy yêu cầu nó tạo ra là một canvas, một trong những canvas kiểu Excalidraw. Và nó đã làm được, nó đã tạo ra một canvas nhỏ với các nét vẽ và màu sắc. Và điều đầu tiên Kenton làm là vẽ một bảng caro lên đó với một chữ x nhỏ ở góc. Đây là trạng thái hoàn thành và tôi sẽ nói về điều đó trong giây lát. Anh ấy đã làm điều đó. Và điều anh ấy nói với mô hình sau đó là "Tôi muốn bạn chơi cờ caro với tôi." Mô hình, như bạn có thể đoán, bắt đầu tạo ra một ứng dụng cờ caro. Kenton đã dừng nó ngay lập tức. Anh ấy nói: "Không, bạn có quyền truy cập vào toàn bộ trạng thái của hệ thống." Và trạng thái của hệ thống ở đây là một mảng các nét vẽ. Giống như một loạt các điểm, đường lưới, đường lưới, nét x, v.v. Anh ấy nói: "Hãy kiểm tra đó và chơi với tôi." Ngay lập tức mô hình bắt đầu, nó xuất trạng thái vào ngữ cảnh của riêng nó. Và nó nói: "Tôi nhận ra điều này trông như thế nào. Nó trông giống như một bảng caro. Và tôi có thể thấy rằng bạn đã đặt một chữ x ở góc trên bên trái. Hãy để tôi vẽ một vòng tròn hoàn hảo ở giữa ứng dụng."
Nói rõ hơn, không có mã cờ caro nào trong hệ thống. Hành vi nổi bật là mô hình đã, chắc chắn rồi. "Bây giờ tôi biết cách tương tác với hệ thống bằng một tập hợp các nét vẽ." Ngoài ra, nó đã thua. Nhân tiện, nó đã thua trò chơi. Và sau đó, khi chúng tôi xem các dấu vết suy luận, chúng tôi nhận thấy rằng Opus đã để Kenton thắng. Đó là một lĩnh vực kỳ lạ khác của sự căn chỉnh mà chúng tôi không nói đến.
Dù sao thì, điều này đã tạo ra rất nhiều cuộc trò chuyện nội bộ. Và đó là lý do tại sao buổi nói chuyện này hơi kỳ lạ. Nó hơi phi thực tế. Tôi thậm chí còn không chắc chúng ta đang đi đâu. Và tôi muốn lan truyền ý tưởng này cho các bạn và để các bạn tích hợp nó. Vì vậy, cụm từ mà chúng tôi bắt đầu sử dụng là, "Nó ngừng tạo ra một chương trình. Và thay vào đó, nó bắt đầu chiếm giữ máy trạng thái." Có một tham chiếu Ghost in the Shell ở đây dành cho bất kỳ ai trên 40 tuổi. Bạn cần ibuprofen. Bạn nên về nhà. Nhưng không, đó là một điều rất lạ đối với chúng tôi khi không có một giai đoạn tạo ứng dụng riêng biệt mà bạn tương tác sau đó. Đó hoàn toàn là một phần của vấn đề.
Kiến trúc sandbox mới
Vậy kiến trúc phần mềm mới này trông như thế nào? Mọi người đều đang xây dựng thứ mà họ gọi là một bộ khung. Đó là bởi vì trong ba đến sáu tháng qua, mọi người đã nhận ra rằng những Tác nhân lập trình này là những máy tính đa năng tuyệt vời. Đó là lý do tại sao họ đang chạy Claude Code. Không, họ đang chạy Pi trên Mac Mini, mà đó lại là máy sai cho việc này. Bạn không cần phải chi 400 đô la cho một thứ chỉ thực hiện các lời gọi API. Điều đó khiến tôi phát điên. Nếu bạn kiểm tra, giá của một số Mac Mini cũ đã tăng vọt. Tôi đã mua một chiếc trước đó, nhưng tôi mua nó vì tôi đặc biệt như vậy.
Mọi người đều đang xây dựng bộ khung này và kiến trúc của bộ khung này không chỉ là nó có thể tạo mã, mà nó còn có một không gian an toàn để thực thi mã này, trong đó các khả năng được tiếp lộ.
Và có một số thuộc tính của sandbox này. Chúng tôi gọi nó là sandbox, một lần nữa là một thuật ngữ đa nghĩa hoàn toàn khác. Và tôi có bạn bè trong ngành, mọi người đều đang xây dựng một loại sandbox khác nhau. Chúng tôi có một SDK sandbox sử dụng container và máy ảo, nhưng đó không phải là điều tôi đang nói đến lúc này. Có một số khả năng của nó. Không giống như một container đi kèm với tất cả các tính năng mà bạn bao bọc bằng bảo mật, bạn biết đấy, bạn làm rất nhiều thứ từ bên ngoài. Bạn bắt đầu với một thứ không có khả năng nào. Điều duy nhất nó có thể làm là thực thi mã. Nó không thể thực hiện các yêu cầu truy xuất dữ liệu. Không có API được tiếp lộ, không có gì cả. Và sau đó bạn cấp quyền khả năng cho nó một cách rõ ràng.
Chúng tôi có một thứ gọi là worker động. Tôi đã nói với bạn, nó không thực sự là mã của Cloudflare. Ai đó đã xây dựng một thứ tốt hơn nếu bạn nghĩ nó tốt hơn. Không sao cả. Nhưng đây là thứ chúng tôi sử dụng. Chúng tôi sử dụng V8 isolate vì chúng khởi động rất, rất nhanh và đã có khoảng 10 năm tăng cường bảo mật. Nó nằm trong DNA của chúng tôi. Chúng tôi rất quan tâm đến điều đó. Dù sao thì, bạn bắt đầu tiếp lộ khả năng dưới dạng API. Và chúng tôi cũng có thể kiểm soát tất cả các yêu cầu truy xuất dữ liệu đi ra và bất kỳ kết nối mạng nào. Trên thực tế, cách mặc định mà chúng tôi khuyên bạn nên sử dụng là không có yêu cầu truy xuất dữ liệu đi ra, chỉ có API. Nó phải nhanh và bạn cần có khả năng quan sát đầy đủ tuyệt đối đối với nó. Bạn cần biết tại sao thứ Ba tuần trước, nó đã thực hiện một giao dịch trị giá 2.3 triệu đô la cho, tôi không biết, như Lama Poo cho một cái gì đó, phải không? Bạn cần quay lại mã đó. Bạn cần khả năng quan sát tuyệt đối trên các hệ thống này. Đó có thể là V8 isolate như chúng tôi sử dụng. Bạn có thể sử dụng, tôi không biết, WebAssembly, một trình thông dịch JavaScript tùy chỉnh. Đó không phải là câu chuyện chính ở đây.
Khả năng thực thi và Quy trình làm việc dài hạn
Bạn chỉ muốn một thứ có thể thực thi, có thể tiếp xúc với các khả năng và chạy thực sự nhanh chóng. Từ đây, bạn có thể bắt đầu tham vọng hơn. Ví dụ tôi đã cho bạn thấy là một tác vụ một lần: lấy một đoạn mã, chạy nó trên một Giao diện lập trình ứng dụng (API), mở rộng. Vậy điều gì sẽ xảy ra nếu bạn có thể tạo ra các quy trình làm việc dài hạn, chạy trong nhiều ngày, nhiều tháng, nhiều năm? Điều gì sẽ xảy ra nếu mỗi phiên bản đó có một số state (trạng thái) mà nó có thể mang theo suốt vòng đời của mình?
Tùy chỉnh UI với Generative UI
Điều gì sẽ xảy ra nếu trong thế giới của generative UI (giao diện người dùng tạo sinh), bạn có thể bắt đầu tạo ra các UI (giao diện người dùng) hoàn toàn tùy chỉnh cho từng người dùng mà bạn có? Mọi người làm thương mại điện tử đều biết vấn đề này. Bạn càng trở nên phổ biến, UI càng trở nên đơn điệu, phải hoạt động cho mọi người dùng. Sau đó, bạn đưa những người làm ML (học máy) vào và hỏi, "Điều gì sẽ xảy ra nếu chúng ta thay đổi màu nút theo cách này nếu đó là một người khác?" Không. Bạn có thể tùy chỉnh hoàn toàn.
Tôi thích việc tôi đã tạo ra generative UI cho một slide nơi tôi đang nói về generative UI, và nó vẫn trông hơi tệ. Nhưng ý tưởng là, hãy nói về thương mại điện tử đó. Bạn có context (ngữ cảnh) về mọi thứ của người dùng: những thứ họ thích, các đơn hàng trong giỏ hàng, những thứ có thể khiến họ tức giận. Bạn có thể hiển thị những điều này dưới dạng các hành động. UI không nhất thiết phải là một hộp chat trống, mặc dù thành thật mà nói, thương mại điện tử với hộp chat trống có thể rất thú vị.
Ở đây tôi có hai trường hợp sử dụng khác nhau. Trong trường hợp đầu tiên, tôi cần trả lại đôi giày này và tìm thứ gì đó tương tự dưới 100 đô la. Nếu các kỹ sư sản phẩm chưa triển khai điều này, nó sẽ rất tệ, nhưng bạn có thể tạo ra một cái gì đó ngay lập tức, trái ngược với việc tìm hiểu "điều gì đang xảy ra với đơn hàng bị chậm trễ của tôi". Ý chính là, chúng ta hiện đang ở trong thế giới nơi chúng ta có thể tạo ra các chương trình hoàn toàn khác nhau, được hỗ trợ bởi một hệ thống mà bạn đã xây dựng ở backend (hệ thống phụ trợ) của mình cho từng người dùng.
Kiến trúc phần mềm mới và điện toán biên
Đây là một loại phần mềm mới mà chúng ta đang xây dựng. Và ý tưởng về "harness" này không chỉ được tích hợp vào sản phẩm. Rất nhiều người đang tìm thấy sức mạnh bằng cách chạy "harness" gần người dùng hơn, đơn giản vì sau đó họ có thể bắt đầu kết hợp tất cả các dịch vụ khác nhau của mình. Đây là một cuộc nói chuyện "chống-Cloudflare" vào thời điểm này. Tôi kiểu như, bạn nên chạy phần mềm trên iPhone của mình, không quá nhiều trên các máy chủ của chúng tôi. (Xin hãy chạy nó trên các máy chủ của chúng tôi.) Nhưng ở đó, bạn bắt đầu có thể kết nối các hệ thống khác nhau trong môi trường an toàn này. Bạn có thể làm điều đó trên cơ sở từng tác vụ.
Tôi đưa điều này vào đây vì tôi là một lập trình viên React và tôi không muốn làm cho những người React hoảng sợ khi nói rằng không ai thực sự muốn xây dựng UI nữa. Nhưng thực sự, đó là sự nhắc nhở về việc suy nghĩ lại mọi thứ chúng ta đã từng nghĩ về UI và cho kỷ nguyên mới này. Tôi cứ nghĩ về nó như một phần của tech tree (cây công nghệ) mà chúng ta chưa thực sự khám phá trong 30 năm vì Eval không tồn tại. Nhưng bây giờ chúng ta có một Eval an toàn và chúng ta có những thứ tạo mã cho bạn.
Tác nhân AI là người dùng mới
Nhưng bạn cần phải ở một nơi mà bạn hiểu rằng hàng tỷ người dùng tiếp theo của bạn là những con robot nhỏ đang tạo mã cho bạn. Nói rõ hơn, khách hàng của bạn vẫn là con người. Những thứ tương tác với hệ thống của bạn. Nếu bạn thực sự yêu người dùng của mình, bạn cần tìm hiểu nơi họ "đi chơi", và họ không "đi chơi" ở quán rượu. Họ "đi chơi" trong các registries (kho đăng ký). Họ mơ bằng types (kiểu dữ liệu) và syntax errors (lỗi cú pháp). Bạn cần suy nghĩ về developer experience (trải nghiệm nhà phát triển) cho các Tác nhân này.
Đây là điều mà một số công ty đã làm rất tốt, nhân tiện. Docs (tài liệu) được viết bằng Markdown. Errors (lỗi) cho phép Tác nhân biết phải làm gì tiếp theo. Khả năng khám phá thông qua search (tìm kiếm).
Bảo mật dựa trên năng lực và Tái tư duy UI
Điều lớn mà tôi thực sự muốn nói, điều mà tôi muốn bạn ghi nhớ, tôi đoán vậy, là ý tưởng về capability-based security (bảo mật dựa trên năng lực). Đây thậm chí không phải là một cuộc nói chuyện về JavaScript. Nó có thể ở Python. Nó có thể ở Rasm. Tôi hy vọng nó mang lại sự hồi sinh của Lisp. Đó là cách tôi học cách các ASTs (cây cú pháp trừu tượng) hoạt động. Nó làm cho bộ não của bạn hơi "vỡ ra". Nhưng các thuộc tính vẫn rất giống nhau: Events (sự kiện), sandboxing (môi trường biệt lập), capability-based security. Có thể nhúng (embeddable) để khởi động và chạy thực sự nhanh chóng, tạm thời. Các lập trình viên React đơn giản là, à, các lập trình viên UI đơn giản vì họ đã rất gần gũi với người dùng, tôi nghi ngờ rằng họ sẽ làm rất tốt ở đây. Điều đó thực sự làm tôi cảm thấy tốt. Tôi cảm thấy hạnh phúc về điều đó.
Kỷ nguyên mới cho lập trình viên
Vì vậy, để kết thúc, trong một thời gian dài, những lập trình viên như chúng ta, chúng ta có mã. Chúng ta có sức mạnh vô hạn để tương tác với bất kỳ hệ thống nào mà chúng ta có thể và phàn nàn về nó trên Twitter vì tài liệu của chúng ta không có đúng CSS hay gì đó. Các lập trình viên JavaScript rất "được quyền" đó. Mọi người khác có các nút và biểu mẫu, sự khác biệt đó đang bị phá vỡ. Trong một thế giới như thế này, bạn cần để mã nói chuyện. Mã là thứ tương tác với tất cả các hệ thống của bạn. Hãy đến nói chuyện với tôi về nó ở quán rượu. Điều này giống như, nó cảm thấy như đang mở ra một lĩnh vực nghiên cứu hoàn toàn mới cho chúng ta. Và chúng ta có rất nhiều ý tưởng. Và tôi đã hoàn thành bài nói chuyện của mình và ngày hôm nay với sáu giây còn lại. Tuyệt vời không? Cảm ơn rất nhiều. Hãy nghiêm túc đi.
TL;DR
- Phương pháp gọi công cụ truyền thống cho các ứng dụng AI gặp khó khăn ở quy mô lớn do số lượng mã thông báo khổng lồ, hiệu suất chậm và độ phức tạp khi tích hợp nhiều dịch vụ.
- "Code Mode" đề xuất một giải pháp đột phá, nơi các mô hình ngôn ngữ lớn (LLM) trực tiếp tạo ra mã (ví dụ: JavaScript) và mã này được thực thi trong một môi trường sandbox an toàn.
- Kiến trúc mới này cho phép tương tác hệ thống nhanh hơn, tùy chỉnh giao diện người dùng (generative UI), và mở ra kỷ nguyên mới nơi tác nhân AI được coi là người dùng chính, đòi hỏi tư duy lại về trải nghiệm nhà phát triển và bảo mật dựa trên năng lực.
Điểm chính
- Chuyển đổi từ gọi công cụ JSON sang tạo mã: Thay vì mô hình trao đổi JSON cho các lệnh gọi công cụ, hãy để LLM trực tiếp tạo mã có thể thực thi (ví dụ: JavaScript) để giải quyết vấn đề tắc nghẽn mã thông báo và các chuyến khứ hồi chậm.
- Tận dụng mã cho logic phức tạp: Mã được tạo có thể xử lý các cấu trúc lập trình nâng cao như lặp lại, quản lý trạng thái và song song hóa trong một lần chạy duy nhất, vượt qua giới hạn của các lệnh gọi công cụ đơn giản.
- Áp dụng mô hình "Search" và "Execute" cho khám phá API: Giảm đáng kể lượng mã thông báo bằng cách chỉ tiếp lộ hai công cụ chung ("Search" để tìm kiếm đặc tả API và "Execute" để thực hiện các lệnh gọi API), cả hai đều chấp nhận chuỗi mã làm đầu vào.
- Sử dụng môi trường sandbox an toàn: Thực thi mã được tạo trong một môi trường sandbox an toàn (ví dụ: V8 isolates), nơi ban đầu không có khả năng nào và quyền truy cập vào API hoặc tài nguyên được cấp một cách rõ ràng.
- Ưu tiên bảo mật dựa trên năng lực và khả năng quan sát: Thiết kế sandbox với khả năng kiểm soát chi tiết các yêu cầu truy xuất dữ liệu ra ngoài và kết nối mạng, đảm bảo khả năng quan sát tuyệt đối các hành động của tác nhân để đảm bảo an toàn và gỡ lỗi.
- Tiếp cận giao diện người dùng tạo sinh (Generative UI): Tận dụng LLM để tạo ra các giao diện người dùng hoàn toàn tùy chỉnh cho từng người dùng dựa trên ngữ cảnh và nhu cầu của họ, thay thế các giao diện chung cứng nhắc.
- Thiết kế cho tác nhân AI như người dùng hạng nhất: Nhận ra rằng tác nhân AI là những người dùng mới của hệ thống. Tối ưu hóa trải nghiệm nhà phát triển cho chúng thông qua tài liệu API rõ ràng, thông báo lỗi có thông tin và khả năng tìm kiếm mạnh mẽ các khả năng.
Từ vựng
Code Mode— Chế độ mã hóaTác nhân AI— AI Agentgọi công cụ— tool callingmã thông báo— tokentạo mã— generate codesandbox— môi trường biệt lậpkhả năng— capabilitybảo mật dựa trên năng lực— capability-based securitygenerative UI— giao diện người dùng tạo sinhdeveloper experience— trải nghiệm nhà phát triển
Nội dung chi tiết
Giới thiệu về Code Mode
Người thuyết trình tiếp theo của chúng ta đã tạo ra Partikit, một công cụ mã nguồn mở dành cho các ứng dụng đa người chơi thời gian thực. Trong công việc chính của mình, anh ấy xây dựng các Tác nhân AI tại Cloudflare. Xin mời quý vị cùng chào đón Sunil Pie lên sân khấu. (20 phút nữa là đến quán pub).
Xin chào, tôi là Sunil Pie. Tôi làm việc tại Cloudflare. Tôi xây dựng các Tác nhân ở đó cho SDK của tác nhân. Tôi đang cố gắng hết sức để đây không phải là một buổi nói chuyện về Cloudflare, nhưng tôi nghĩ chúng tôi có tên trên bảng nhà tài trợ, nên điều đó cũng tốt. Đây là một buổi nói chuyện về một thứ mà chúng tôi gọi là code mode. Tôi đã tham gia vào lĩnh vực này và có một số tiền đề cho nó. Chúng tôi không khẳng định đã phát minh ra nó, nhưng đây là một buổi nói chuyện về những hàm ý của một điều mới mà chúng tôi đang khám phá.
Hạn chế của việc gọi công cụ truyền thống ở quy mô lớn
Các bạn đã xây dựng các ứng dụng AI, và việc gọi công cụ trở nên kỳ lạ ở quy mô lớn. Với chỉ một vài công cụ và các lần chạy rất ngắn, mọi thứ vẫn ổn. Nhưng ngay khi bạn bắt đầu nhồi nhét các dịch vụ của Google, Jira, Wiki, v.v., và có hàng trăm công cụ lấp đầy ngữ cảnh, hệ thống bắt đầu hỏng. Việc kết hợp trở nên kỳ lạ, và có một quá trình trao đổi qua lại với mô hình rất chậm.
Chúng tôi quyết định áp dụng một cách tiếp cận khác. Thay vì thực hiện cơ chế trao đổi JSON này, chúng tôi yêu cầu mô hình tạo mã, thường là JavaScript, mà chúng tôi có thể chạy trong một môi trường. Và một số lợi ích dường như khá rõ ràng đối với chúng tôi. Với mã, bạn có một API được định kiểu, bạn có thể thực hiện kiểm tra kiểu. Có các lỗi cú pháp. Những thứ đó đã được huấn luyện trên hàng gigabyte, thậm chí terabyte dữ liệu trong tập dữ liệu huấn luyện. Và thay vì trao đổi qua lại, bạn có thể viết mã thực thi tất cả trong một lần chạy, chỉ một lần thực thi duy nhất.
Đây là ý tôi muốn nói. Có những khả năng cơ bản của mã. Bạn có thể thực hiện lặp lại. Bạn có thể duy trì trạng thái. Bạn đang thực hiện tuần tự hóa, song song hóa. Những điều mà bạn vẫn thường làm với mã như một kỹ sư.
Giảm mã thông báo với Search và Execute
Nơi đầu tiên chúng tôi áp dụng điều này là với đồng nghiệp của tôi, Matt Carrey, người sẽ nói chi tiết hơn về vấn đề này vào ngày mai; các bạn nên xem buổi nói chuyện của anh ấy. Bề mặt API của Cloudflare có khoảng 2.600 điểm cuối API. Nếu chúng tôi tiếp lộ một công cụ cho mỗi điểm cuối đó, thì lần gọi đầu tiên sẽ tốn khoảng 1.2 triệu mã thông báo. Thật là quá tải. Không có cách nào để tạo một máy chủ MCP cho toàn bộ bề mặt API của Cloudflare.
Và anh ấy đã có một ý tưởng rất thông minh, đó là chỉ tiếp lộ hai công cụ: Search và execute. Cả hai điểm cuối này đều chấp nhận mã dưới dạng đầu vào, thực sự là một chuỗi mã. Đối với search, đầu vào của hàm mà bạn truyền cho nó là toàn bộ đặc tả JSON Open API. Và một khi nó thực hiện điều đó, execute sẽ cung cấp cho bạn một loạt các hàm mà bạn có thể gọi. Điều này đã giảm lượng mã thông báo từ 1.2 triệu xuống còn một nghìn mã thông báo, một điều chưa từng thấy. Tôi nghĩ đó là mức giảm khoảng 99.9%.
Trải nghiệm người dùng và demo trực tiếp
Điều này sẽ khá đáng sợ. Tôi thực sự có một demo trực tiếp về nó. Và các buổi demo thường không thuận lợi cho tôi trên sân khấu. Nhưng điểm mấu chốt là chúng tôi đã có thể tận dụng một bề mặt API rộng lớn, cực kỳ rộng và biến nó thành cực kỳ nhanh chóng. Bản thân lời nhắc có thể khá chung chung. Lẽ ra tôi nên tăng kích thước phông chữ ở đây. Lời nhắc ở đây là, với tư cách là một khách hàng, bạn đến và nói: "Chúng tôi đang bị tấn công DDoS. Tôi muốn bạn tìm tất cả các IP gây tấn công chúng tôi và chặn chúng." Trong khoảnh khắc hoảng loạn khi trang web của bạn gặp sự cố, bạn không có thời gian để điều hướng menu. Bảng điều khiển Cloudflare nổi tiếng là hơi rườm rà để xử lý. Và bạn chỉ muốn mọi việc được thực hiện. Và bạn thậm chí không thể có được một kết quả tốt. Lúc đó có thể là ba giờ sáng.
Với một cơ chế MCP thông thường, và đây còn chưa nói đến việc nhồi nhét 1.2 triệu mã thông báo. Sẽ mất khoảng tám lần khứ hồi để thực hiện mỗi lời gọi API đó. Thay vào đó, mô hình có thể tạo chuỗi mã này, chạy nó ngay lập tức bên cạnh bề mặt API và thực hiện chỉ trong một lần duy nhất. Và nó chỉ chạy JavaScript. Chỉ các hàm và những thứ bạn đang tiếp lộ trên bề mặt API.
Demo trực tiếp. Đây là một bản demo của máy chủ huyền thoại của chúng tôi. Tôi hy vọng mình đã đăng nhập vì nếu không, tôi sẽ cần tất cả các bạn nhắm mắt trong khi tôi nhập mật khẩu. Giả sử tôi chỉ muốn liệt kê các worker của tôi. Ồ, nó đây rồi. Liệt kê các worker của tôi. Và không cần mật khẩu. Được thôi, không sao cả. Được rồi, tôi chỉ cấp quyền truy cập chỉ đọc cho demo này. Thực hiện đi. Vâng, cho phép, chắc chắn rồi, bất cứ điều gì. Tuyệt vời. Được rồi, nó quay lại. Và bạn sẽ thấy nó sẽ bắt đầu thực thi các lời gọi công cụ. Tôi sẽ có thể mở cái này lên. Nó đã gửi yêu cầu tìm tất cả các điểm cuối API có chứa cụm từ "list workers" hoặc tương tự. Sau đó nó chạy mã, một yêu cầu duy nhất đến điểm cuối API để lấy tất cả các worker. Chắc hẳn nó đã nhận được rất nhiều kết quả. Hiện tại, nó đang gặp lỗi JavaScript. Sẽ rất thú vị để xem liệu nó có thành công hay không. Eix. Ồ, nó đang cố gắng phân trang qua các mục. Dù sao thì, hãy cứ giả định rằng nó đã hoạt động. Và tôi sẽ tiếp tục nói trong khi nó làm việc này. Rất thích việc này đang xảy ra với tôi trên sân khấu vì tôi đã kiểm tra nó 10 lần trước khi lên đây. Tôi cần phải trả tiền cho mô hình MyThos để nó hoạt động chính xác. Nhân tiện, bạn thực sự có thể thấy nó đang liệt kê các worker ở đây. Có thể nó đang gặp sự cố khi hiển thị ở đây.
Vấn đề là, chúng tôi có thể thu gọn nó. Nếu đây là một buổi nói chuyện về việc tối ưu hóa máy chủ MCP, tôi đã xong rồi. Tôi đã nói, "này, bạn nên thử cái này." Và tin tôi đi, nó hoạt động khi bạn không nhìn chằm chằm vào nó và có 800 người đang nhìn bạn trên sân khấu. Nhưng điều này đã cho chúng tôi một ý tưởng rằng có điều gì đó sâu sắc hơn đang diễn ra ở đây. Khả năng chạy mã này và cảm giác như có một cách tương tác mới với các hệ thống, với LLM.
LLM và cách thay đổi tương tác với hệ thống
Đây là điều tôi nghĩ. Mọi người ở đây đều là lập trình viên. Khi tôi đưa cho bạn một bài toán như "bạn có 200 bức ảnh trên màn hình, tôi cần bạn phân loại và đổi tên chúng." Điều đầu tiên bạn làm là mở một IDE. Bạn sẽ viết một tập lệnh nhỏ. Có thể bạn sẽ truyền mỗi bức ảnh cho một mô hình thị giác máy tính để nhận được một chú thích hay. Đổi tên và bạn hoàn tất. Đó là cách bạn tương tác với các hệ thống. Mẹ tôi sẽ không làm điều này. Lựa chọn của bà là gọi cho tôi hoặc thường là mua một ứng dụng, cho máy tính để bàn hoặc điện thoại. Và chưa ai tạo ra một ứng dụng chỉ làm chính xác điều đó. Nó sẽ giống như các ứng dụng phổ thông nhất để quản lý ảnh. Và nó có giá 7 đô la một tháng. Và vì một lý do nào đó, bạn phải cài đặt một daemon, thứ đang đánh cắp tiền điện tử của bạn hoặc những thứ tương tự.
Và đã có sự phân đôi này. Và điều đó không sao cả. Cho đến bây giờ, đây là một đánh đổi chấp nhận được, rằng người dùng không chuyên về kỹ thuật sẽ có các giao diện tùy chỉnh được xây dựng cho nhu cầu và mong muốn của họ. LLM đang phá vỡ ranh giới này. Giờ đây, mọi con người trên hành tinh đều có quyền truy cập vào một trợ lý có thể tạo mã để tương tác với các hệ thống. Nó chỉ cần một dòng lệnh như "đổi tên các tập tin này theo ngày và địa điểm" và tạo mã rồi có thể chạy nó trên hệ thống mà bạn đã cấp quyền. Tôi nói "thực thi an toàn" ở đây. Và đó là phần tôi muốn nói đến trong một phút nữa.
Hành vi nổi bật của mô hình và máy trạng thái
Ví dụ khác mà tôi có là về Kenton. Kenton là người tạo ra Cloudflare Workers. Nổi tiếng là, anh ấy làm việc còn tôi thì thích nhận công lao về mình. Đó là mối quan hệ của chúng tôi trong công ty. Vì vậy, anh ấy đã có một chuỗi bài đăng cách đây một thời gian, trong đó anh ấy đã tự xây dựng một môi trường viết mã nhỏ. Bởi vì không ai khác trên thế giới làm điều đó vào thời điểm hiện tại. Thật độc đáo. Tự xây dựng một môi trường viết mã nhỏ của riêng bạn. Thứ mà anh ấy yêu cầu nó tạo ra là một canvas, một trong những canvas kiểu Excalidraw. Và nó đã làm được, nó đã tạo ra một canvas nhỏ với các nét vẽ và màu sắc. Và điều đầu tiên Kenton làm là vẽ một bảng caro lên đó với một chữ x nhỏ ở góc. Đây là trạng thái hoàn thành và tôi sẽ nói về điều đó trong giây lát. Anh ấy đã làm điều đó. Và điều anh ấy nói với mô hình sau đó là "Tôi muốn bạn chơi cờ caro với tôi." Mô hình, như bạn có thể đoán, bắt đầu tạo ra một ứng dụng cờ caro. Kenton đã dừng nó ngay lập tức. Anh ấy nói: "Không, bạn có quyền truy cập vào toàn bộ trạng thái của hệ thống." Và trạng thái của hệ thống ở đây là một mảng các nét vẽ. Giống như một loạt các điểm, đường lưới, đường lưới, nét x, v.v. Anh ấy nói: "Hãy kiểm tra đó và chơi với tôi." Ngay lập tức mô hình bắt đầu, nó xuất trạng thái vào ngữ cảnh của riêng nó. Và nó nói: "Tôi nhận ra điều này trông như thế nào. Nó trông giống như một bảng caro. Và tôi có thể thấy rằng bạn đã đặt một chữ x ở góc trên bên trái. Hãy để tôi vẽ một vòng tròn hoàn hảo ở giữa ứng dụng."
Nói rõ hơn, không có mã cờ caro nào trong hệ thống. Hành vi nổi bật là mô hình đã, chắc chắn rồi. "Bây giờ tôi biết cách tương tác với hệ thống bằng một tập hợp các nét vẽ." Ngoài ra, nó đã thua. Nhân tiện, nó đã thua trò chơi. Và sau đó, khi chúng tôi xem các dấu vết suy luận, chúng tôi nhận thấy rằng Opus đã để Kenton thắng. Đó là một lĩnh vực kỳ lạ khác của sự căn chỉnh mà chúng tôi không nói đến.
Dù sao thì, điều này đã tạo ra rất nhiều cuộc trò chuyện nội bộ. Và đó là lý do tại sao buổi nói chuyện này hơi kỳ lạ. Nó hơi phi thực tế. Tôi thậm chí còn không chắc chúng ta đang đi đâu. Và tôi muốn lan truyền ý tưởng này cho các bạn và để các bạn tích hợp nó. Vì vậy, cụm từ mà chúng tôi bắt đầu sử dụng là, "Nó ngừng tạo ra một chương trình. Và thay vào đó, nó bắt đầu chiếm giữ máy trạng thái." Có một tham chiếu Ghost in the Shell ở đây dành cho bất kỳ ai trên 40 tuổi. Bạn cần ibuprofen. Bạn nên về nhà. Nhưng không, đó là một điều rất lạ đối với chúng tôi khi không có một giai đoạn tạo ứng dụng riêng biệt mà bạn tương tác sau đó. Đó hoàn toàn là một phần của vấn đề.
Kiến trúc sandbox mới
Vậy kiến trúc phần mềm mới này trông như thế nào? Mọi người đều đang xây dựng thứ mà họ gọi là một bộ khung. Đó là bởi vì trong ba đến sáu tháng qua, mọi người đã nhận ra rằng những Tác nhân lập trình này là những máy tính đa năng tuyệt vời. Đó là lý do tại sao họ đang chạy Claude Code. Không, họ đang chạy Pi trên Mac Mini, mà đó lại là máy sai cho việc này. Bạn không cần phải chi 400 đô la cho một thứ chỉ thực hiện các lời gọi API. Điều đó khiến tôi phát điên. Nếu bạn kiểm tra, giá của một số Mac Mini cũ đã tăng vọt. Tôi đã mua một chiếc trước đó, nhưng tôi mua nó vì tôi đặc biệt như vậy.
Mọi người đều đang xây dựng bộ khung này và kiến trúc của bộ khung này không chỉ là nó có thể tạo mã, mà nó còn có một không gian an toàn để thực thi mã này, trong đó các khả năng được tiếp lộ.
Và có một số thuộc tính của sandbox này. Chúng tôi gọi nó là sandbox, một lần nữa là một thuật ngữ đa nghĩa hoàn toàn khác. Và tôi có bạn bè trong ngành, mọi người đều đang xây dựng một loại sandbox khác nhau. Chúng tôi có một SDK sandbox sử dụng container và máy ảo, nhưng đó không phải là điều tôi đang nói đến lúc này. Có một số khả năng của nó. Không giống như một container đi kèm với tất cả các tính năng mà bạn bao bọc bằng bảo mật, bạn biết đấy, bạn làm rất nhiều thứ từ bên ngoài. Bạn bắt đầu với một thứ không có khả năng nào. Điều duy nhất nó có thể làm là thực thi mã. Nó không thể thực hiện các yêu cầu truy xuất dữ liệu. Không có API được tiếp lộ, không có gì cả. Và sau đó bạn cấp quyền khả năng cho nó một cách rõ ràng.
Chúng tôi có một thứ gọi là worker động. Tôi đã nói với bạn, nó không thực sự là mã của Cloudflare. Ai đó đã xây dựng một thứ tốt hơn nếu bạn nghĩ nó tốt hơn. Không sao cả. Nhưng đây là thứ chúng tôi sử dụng. Chúng tôi sử dụng V8 isolate vì chúng khởi động rất, rất nhanh và đã có khoảng 10 năm tăng cường bảo mật. Nó nằm trong DNA của chúng tôi. Chúng tôi rất quan tâm đến điều đó. Dù sao thì, bạn bắt đầu tiếp lộ khả năng dưới dạng API. Và chúng tôi cũng có thể kiểm soát tất cả các yêu cầu truy xuất dữ liệu đi ra và bất kỳ kết nối mạng nào. Trên thực tế, cách mặc định mà chúng tôi khuyên bạn nên sử dụng là không có yêu cầu truy xuất dữ liệu đi ra, chỉ có API. Nó phải nhanh và bạn cần có khả năng quan sát đầy đủ tuyệt đối đối với nó. Bạn cần biết tại sao thứ Ba tuần trước, nó đã thực hiện một giao dịch trị giá 2.3 triệu đô la cho, tôi không biết, như Lama Poo cho một cái gì đó, phải không? Bạn cần quay lại mã đó. Bạn cần khả năng quan sát tuyệt đối trên các hệ thống này. Đó có thể là V8 isolate như chúng tôi sử dụng. Bạn có thể sử dụng, tôi không biết, WebAssembly, một trình thông dịch JavaScript tùy chỉnh. Đó không phải là câu chuyện chính ở đây.
Khả năng thực thi và Quy trình làm việc dài hạn
Bạn chỉ muốn một thứ có thể thực thi, có thể tiếp xúc với các khả năng và chạy thực sự nhanh chóng. Từ đây, bạn có thể bắt đầu tham vọng hơn. Ví dụ tôi đã cho bạn thấy là một tác vụ một lần: lấy một đoạn mã, chạy nó trên một Giao diện lập trình ứng dụng (API), mở rộng. Vậy điều gì sẽ xảy ra nếu bạn có thể tạo ra các quy trình làm việc dài hạn, chạy trong nhiều ngày, nhiều tháng, nhiều năm? Điều gì sẽ xảy ra nếu mỗi phiên bản đó có một số state (trạng thái) mà nó có thể mang theo suốt vòng đời của mình?
Tùy chỉnh UI với Generative UI
Điều gì sẽ xảy ra nếu trong thế giới của generative UI (giao diện người dùng tạo sinh), bạn có thể bắt đầu tạo ra các UI (giao diện người dùng) hoàn toàn tùy chỉnh cho từng người dùng mà bạn có? Mọi người làm thương mại điện tử đều biết vấn đề này. Bạn càng trở nên phổ biến, UI càng trở nên đơn điệu, phải hoạt động cho mọi người dùng. Sau đó, bạn đưa những người làm ML (học máy) vào và hỏi, "Điều gì sẽ xảy ra nếu chúng ta thay đổi màu nút theo cách này nếu đó là một người khác?" Không. Bạn có thể tùy chỉnh hoàn toàn.
Tôi thích việc tôi đã tạo ra generative UI cho một slide nơi tôi đang nói về generative UI, và nó vẫn trông hơi tệ. Nhưng ý tưởng là, hãy nói về thương mại điện tử đó. Bạn có context (ngữ cảnh) về mọi thứ của người dùng: những thứ họ thích, các đơn hàng trong giỏ hàng, những thứ có thể khiến họ tức giận. Bạn có thể hiển thị những điều này dưới dạng các hành động. UI không nhất thiết phải là một hộp chat trống, mặc dù thành thật mà nói, thương mại điện tử với hộp chat trống có thể rất thú vị.
Ở đây tôi có hai trường hợp sử dụng khác nhau. Trong trường hợp đầu tiên, tôi cần trả lại đôi giày này và tìm thứ gì đó tương tự dưới 100 đô la. Nếu các kỹ sư sản phẩm chưa triển khai điều này, nó sẽ rất tệ, nhưng bạn có thể tạo ra một cái gì đó ngay lập tức, trái ngược với việc tìm hiểu "điều gì đang xảy ra với đơn hàng bị chậm trễ của tôi". Ý chính là, chúng ta hiện đang ở trong thế giới nơi chúng ta có thể tạo ra các chương trình hoàn toàn khác nhau, được hỗ trợ bởi một hệ thống mà bạn đã xây dựng ở backend (hệ thống phụ trợ) của mình cho từng người dùng.
Kiến trúc phần mềm mới và điện toán biên
Đây là một loại phần mềm mới mà chúng ta đang xây dựng. Và ý tưởng về "harness" này không chỉ được tích hợp vào sản phẩm. Rất nhiều người đang tìm thấy sức mạnh bằng cách chạy "harness" gần người dùng hơn, đơn giản vì sau đó họ có thể bắt đầu kết hợp tất cả các dịch vụ khác nhau của mình. Đây là một cuộc nói chuyện "chống-Cloudflare" vào thời điểm này. Tôi kiểu như, bạn nên chạy phần mềm trên iPhone của mình, không quá nhiều trên các máy chủ của chúng tôi. (Xin hãy chạy nó trên các máy chủ của chúng tôi.) Nhưng ở đó, bạn bắt đầu có thể kết nối các hệ thống khác nhau trong môi trường an toàn này. Bạn có thể làm điều đó trên cơ sở từng tác vụ.
Tôi đưa điều này vào đây vì tôi là một lập trình viên React và tôi không muốn làm cho những người React hoảng sợ khi nói rằng không ai thực sự muốn xây dựng UI nữa. Nhưng thực sự, đó là sự nhắc nhở về việc suy nghĩ lại mọi thứ chúng ta đã từng nghĩ về UI và cho kỷ nguyên mới này. Tôi cứ nghĩ về nó như một phần của tech tree (cây công nghệ) mà chúng ta chưa thực sự khám phá trong 30 năm vì Eval không tồn tại. Nhưng bây giờ chúng ta có một Eval an toàn và chúng ta có những thứ tạo mã cho bạn.
Tác nhân AI là người dùng mới
Nhưng bạn cần phải ở một nơi mà bạn hiểu rằng hàng tỷ người dùng tiếp theo của bạn là những con robot nhỏ đang tạo mã cho bạn. Nói rõ hơn, khách hàng của bạn vẫn là con người. Những thứ tương tác với hệ thống của bạn. Nếu bạn thực sự yêu người dùng của mình, bạn cần tìm hiểu nơi họ "đi chơi", và họ không "đi chơi" ở quán rượu. Họ "đi chơi" trong các registries (kho đăng ký). Họ mơ bằng types (kiểu dữ liệu) và syntax errors (lỗi cú pháp). Bạn cần suy nghĩ về developer experience (trải nghiệm nhà phát triển) cho các Tác nhân này.
Đây là điều mà một số công ty đã làm rất tốt, nhân tiện. Docs (tài liệu) được viết bằng Markdown. Errors (lỗi) cho phép Tác nhân biết phải làm gì tiếp theo. Khả năng khám phá thông qua search (tìm kiếm).
Bảo mật dựa trên năng lực và Tái tư duy UI
Điều lớn mà tôi thực sự muốn nói, điều mà tôi muốn bạn ghi nhớ, tôi đoán vậy, là ý tưởng về capability-based security (bảo mật dựa trên năng lực). Đây thậm chí không phải là một cuộc nói chuyện về JavaScript. Nó có thể ở Python. Nó có thể ở Rasm. Tôi hy vọng nó mang lại sự hồi sinh của Lisp. Đó là cách tôi học cách các ASTs (cây cú pháp trừu tượng) hoạt động. Nó làm cho bộ não của bạn hơi "vỡ ra". Nhưng các thuộc tính vẫn rất giống nhau: Events (sự kiện), sandboxing (môi trường biệt lập), capability-based security. Có thể nhúng (embeddable) để khởi động và chạy thực sự nhanh chóng, tạm thời. Các lập trình viên React đơn giản là, à, các lập trình viên UI đơn giản vì họ đã rất gần gũi với người dùng, tôi nghi ngờ rằng họ sẽ làm rất tốt ở đây. Điều đó thực sự làm tôi cảm thấy tốt. Tôi cảm thấy hạnh phúc về điều đó.
Kỷ nguyên mới cho lập trình viên
Vì vậy, để kết thúc, trong một thời gian dài, những lập trình viên như chúng ta, chúng ta có mã. Chúng ta có sức mạnh vô hạn để tương tác với bất kỳ hệ thống nào mà chúng ta có thể và phàn nàn về nó trên Twitter vì tài liệu của chúng ta không có đúng CSS hay gì đó. Các lập trình viên JavaScript rất "được quyền" đó. Mọi người khác có các nút và biểu mẫu, sự khác biệt đó đang bị phá vỡ. Trong một thế giới như thế này, bạn cần để mã nói chuyện. Mã là thứ tương tác với tất cả các hệ thống của bạn. Hãy đến nói chuyện với tôi về nó ở quán rượu. Điều này giống như, nó cảm thấy như đang mở ra một lĩnh vực nghiên cứu hoàn toàn mới cho chúng ta. Và chúng ta có rất nhiều ý tưởng. Và tôi đã hoàn thành bài nói chuyện của mình và ngày hôm nay với sáu giây còn lại. Tuyệt vời không? Cảm ơn rất nhiều. Hãy nghiêm túc đi.