Thủ thuật
Xây dựng gia sư AI thời gian thực cho trẻ từ 4-9 tuổi: Giải quyết bài toán độ trễ
(giờ Việt Nam)
Tóm tắt AI
Để khắc phục độ trễ khiến trẻ mất kiên nhẫn, đội ngũ phát triển đã tối ưu hóa kiến trúc AI bằng cách cho phép mô hình thực thi đa hành động trong một luồng duy nhất, giúp phản hồi chỉ trong 30 token đầu tiên.
Bản dịch AI

Chúng tôi bắt đầu xây dựng gia sư AI đầu tiên để dạy toán và đọc viết cho trẻ từ 4-9 tuổi. Để AI thực sự có thể dạy một đứa trẻ năm tuổi, các phương pháp sư phạm phải được tích hợp sâu vào kỹ thuật. Trẻ em không thể chờ đợi một phản hồi chậm chạp, không thể đọc giao diện trò chuyện và không thể "chưa nghe" những gì mô hình nói sai. Chúng tôi muốn chia sẻ một số bài học đã định hình các quyết định kiến trúc của mình khi xây dựng một gia sư AI thời gian thực.
Một khoảng dừng 2 giây trong cuộc trò chuyện mang lại cảm giác khác biệt đối với một đứa trẻ so với một lập trình viên, hay thậm chí là một người lớn đang nói chuyện điện thoại với một tổng đài tự động. Vài giây là đủ để sự chú ý của trẻ bị xao nhãng và quá trình học tập bị ngắt quãng.
Những giáo viên giỏi xử lý việc này mà không cần dừng lại để suy nghĩ. Họ phản hồi trẻ ngay lập tức, ngay cả khi họ giữ lại câu trả lời để trẻ tự tìm tòi. Dạy học là việc áp dụng phương pháp phù hợp với thời điểm hiện tại, và hầu hết các phương pháp không phải là đưa ra câu trả lời ngay.
Khi bắt đầu xây dựng gia sư AI cho trẻ 4-9 tuổi, chúng tôi muốn tạo ra một gia sư thực sự dạy dỗ chứ không chỉ là một chatbot phản hồi nhanh. Chúng tôi biết rằng ràng buộc bên dưới sẽ rất khó khăn và không thể thương lượng: phản hồi dưới một giây cho mỗi lượt tương tác. Hầu hết các tác nhân (agent) đều đánh đổi tốc độ lấy chất lượng thông qua ngân sách suy luận. Kiến trúc của chúng tôi phải đặt gia sư trên nền tảng sư phạm và phản hồi cho trẻ theo thời gian thực.
Chúng tôi đã loại bỏ vòng lặp tác nhân (agent loop) tiêu chuẩn.
Một giáo viên luôn phải quyết định cách tương tác với học sinh, liệu nên nói điều gì đó, vẽ lên bảng trắng, chơi một trò chơi hay thay đổi chủ đề hoàn toàn. Mô hình tiêu chuẩn cho một tác nhân hiện nay là vòng lặp công cụ (tool loop). LLM xuất ra một hoặc nhiều lệnh gọi công cụ, chờ chúng thực thi, quan sát kết quả và quyết định việc cần làm tiếp theo. Vì vậy, cách đơn giản nhất để xây dựng một tác nhân dạy học là tạo ra một công cụ cho mỗi hành động mà giáo viên có thể thực hiện.
Nhưng vòng lặp công cụ lại gặp vấn đề về độ trễ. Các mô hình tiên tiến (frontier models) mất 2–3 giây để tạo ra token đầu tiên, sau đó giải mã với tốc độ khoảng 30 token mỗi giây. Các hành động của chúng tôi trung bình mất vài chục token. Cộng thêm độ trễ khứ hồi và phát âm thanh, một vòng lặp tiêu chuẩn sẽ gây ra 3-4 giây "chết" giữa mỗi câu nói hoặc thay đổi trên màn hình.
Trong một trong những buổi thử nghiệm sớm, chúng tôi đã chứng kiến điều đó xảy ra trong thời gian thực. Một cậu bé sáu tuổi chờ đợi tác nhân suy nghĩ, rồi hỏi:
Tại sao nó không làm gì cả? Khi nào thì bắt đầu đây. Chán quá.
Một đứa trẻ khác trong cùng đợt thử nghiệm nhận ra rằng cô bé chỉ cần chú ý một phần thời gian mà vẫn có thể theo kịp. Độ trễ đã dạy cô bé cách phớt lờ gia sư. Đó cũng là khoảnh khắc cô bé ngừng học hỏi.
Giải pháp tiện lợi sẽ là một mô hình nhỏ hơn, nhanh hơn. Đó là lúc vấn đề về phạm vi xuất hiện. Dạy học là một nhiệm vụ rộng lớn. Một gia sư có thể phải chọn giữa hàng chục hành động trong một bài học, và quyết định khó nhất thường là không đưa ra câu trả lời mà thay vào đó là gợi ý, đặt một câu hỏi nhỏ hơn hoặc để trẻ tự xoay xở đủ lâu để khi tìm ra đáp án, đó là thành quả của chính trẻ.
Các mô hình nhỏ hơn gặp khó khăn trong việc tuân theo hướng dẫn trên phạm vi rộng đó. Một phiên bản sớm của tác nhân sử dụng mô hình nhỏ phản hồi nhanh nhưng lại liên tục đưa ra đáp án. Mỗi lần như vậy, nó đã tước đi khoảnh khắc mà việc học thực sự diễn ra.
Vì vậy, chúng tôi đã xây dựng một bộ khung tùy chỉnh để cân bằng giữa việc tuân thủ hướng dẫn, độ trễ và không gian hành động linh hoạt. Mô hình truyền phát (stream) nhiều hành động trong một phản hồi duy nhất. Một trình thông dịch sẽ phân tích và thực thi từng hành động trong khi mô hình vẫn đang tạo ra các hành động tiếp theo. Trẻ chỉ phải đợi hành động đầu tiên sau khoảng 30 token, thay vì đợi toàn bộ phản hồi hoàn tất.
Việc tách biệt quá trình tạo (generation) và thực thi (execution) mang lại cho chúng tôi hai lợi ích nữa. Chúng tôi có thể thay đổi các hành động khả dụng tùy theo tình huống. Ví dụ, khi một câu hỏi xuất hiện trên màn hình, tác nhân nhận được hướng dẫn và các tùy chọn để hỗ trợ (scaffolding) thay vì đưa ra đáp án. Và chúng tôi có thể xác thực từng hành động mà không gây độ trễ cho luồng xử lý chính. Chỉ khi luồng tạo ra một hành động không hợp lệ, chúng tôi mới ngắt quãng và tạo lại, nếu không thì quá trình thực thi không bao giờ bị tạm dừng.
Không có gì là miễn phí. Việc sở hữu vòng lặp có nghĩa là chúng tôi phải tự xây dựng hệ thống quan sát và truy vết thay vì dựa vào một framework có sẵn. Và chúng tôi đang đi ngược dòng: các mô hình tiên tiến hiện nay được huấn luyện chuyên sâu theo mô hình sử dụng công cụ. Nếu các mô hình tương lai đủ nhanh, bộ khung của chúng tôi được thiết kế để có thể thay thế bằng vòng lặp đơn giản hơn.
Bài học: Các framework tác nhân đang hướng tới các công việc nền, nơi sự đánh đổi giữa tốc độ và tư duy là dễ dàng. Học tập thời gian thực nằm ở thái cực ngược lại. Dạy học ở tốc độ trò chuyện đồng nghĩa với việc chúng ta phải tự làm chủ vòng lặp.
Một gia sư giỏi dự đoán được điều trẻ sẽ làm tiếp theo.
Một giáo viên thực thụ vừa suy ngẫm về những gì học sinh vừa làm, vừa dự đoán những gì các em sẽ làm tiếp theo. Dạy cùng một bài học hàng trăm lần, bạn sẽ thấy các khuôn mẫu. Nhưng bạn cũng hiểu đứa trẻ này, nơi các em đang bị khựng lại, điều gì khiến các em hào hứng, điều gì dễ khiến các em vấp ngã hôm nay. Bạn bắt đầu bài học với một kế hoạch và điều chỉnh nó ngay lập tức.
Chúng tôi gọi tác nhân tương tác với trẻ là "người trò chuyện" (converser). Các thử nghiệm ban đầu cho thấy không gian hành động nhỏ hơn dẫn đến việc tuân thủ hướng dẫn tốt hơn, vì vậy chúng tôi đã xây dựng tác nhân thứ hai, "người lập kế hoạch" (planner), để xem xét cuộc trò chuyện dựa trên mục tiêu bài học và quản lý ngữ cảnh cho người trò chuyện.
Phiên bản đầu tiên chạy đồng bộ, tất nhiên là quá chậm. Các kế hoạch hết hạn sau một số lượt cố định không đáng tin cậy. Việc để người trò chuyện yêu cầu một kế hoạch mới cũng vậy. Điều hiệu quả là một trình lập kế hoạch bất đồng bộ (asynchronous planner) chạy trong khi trẻ đang suy nghĩ hoặc nói chuyện, giống như cách một giáo viên suy ngẫm và dự đoán trong các khoảng lặng của cuộc trò chuyện. Những khoảng lặng đó là nơi các quyết định được đưa ra: thử thách trẻ hay để trẻ thành công, tiếp tục chủ đề hay chuyển sang phần khác. Giáo viên thực hiện chúng bằng trực giác; một mô hình phải suy luận để đạt được điều đó, và việc chạy bất đồng bộ chính là thứ giúp nó có thời gian.
Bất đồng bộ cũng có nghĩa là hai tác nhân chạy cùng lúc, cả hai đều đọc và ghi vào trạng thái chia sẻ mà không cần phối hợp. Vì vậy, chúng tôi lưu trữ mọi lượt tương tác, mọi thao tác chạm và mọi cập nhật giao diện dưới dạng một sự kiện bất biến trên nhật ký chỉ-ghi-thêm (append-only log). Bất kỳ tác nhân nào cũng có thể đọc và ghi thêm mà không cần chờ đợi tác nhân kia.
Định dạng quỹ đạo đó cho phép một kiểu dự đoán khác. Bất cứ khi nào người trò chuyện đặt một câu hỏi đóng (ví dụ: điền vào chỗ trống, chơi trò I Spy, hoàn thành phương trình, v.v.), bộ khung sẽ đưa ra giả thuyết về các câu trả lời có khả năng xảy ra của trẻ và tạo trước phản hồi cho từng câu trả lời trên nhánh riêng của nó, được phân nhánh từ quỹ đạo. Khi trẻ trả lời, chúng tôi khớp nó với một nhánh và phát phản hồi mà không cần chờ đợi một lệnh gọi mô hình mới.
Sự đánh đổi là chi phí và đôi khi là những phán đoán sai lầm. Trình lập kế hoạch chạy trên một mô hình có năng lực hơn, đắt tiền hơn và nó chạy trên mọi lượt tương tác. Và một dự đoán vẫn chỉ là một dự đoán. Đôi khi một đứa trẻ sẵn sàng để được thúc đẩy lại nhận được một chiến thắng dễ dàng. Khó hơn để đánh giá liệu lỗi của người trò chuyện là sai lầm hay là hệ quả của một kế hoạch bị lỗi. Chúng tôi vẫn chưa có tín hiệu rõ ràng về việc khi nào nên tin tưởng vào kế hoạch so với những gì đang diễn ra trực tiếp.
Bài học: Trẻ tương tác với ứng dụng trong thời gian thực trong khi các tác nhân chạy theo các thế hệ rời rạc, vì vậy hãy tận dụng thời gian trẻ suy nghĩ hoặc nói chuyện. Hãy để trình lập kế hoạch suy ngẫm về quá khứ và dự đoán tương lai trong khi người trò chuyện xử lý hiện tại, và quá trình suy luận sư phạm chậm chạp diễn ra đồng thời với sự trao đổi thời gian thực. Khi bước đi tiếp theo có thể dự đoán được, hãy tạo ra nó trước cả khi trẻ trả lời.
Kiểm tra an toàn mà không ai nghe thấy.
Hầu hết các sản phẩm AI xây dựng các rào chắn (guardrails) nối tiếp với lệnh gọi mô hình hoặc lượt tác nhân. Người dùng sẽ không nhận thấy khi luồng token đi qua bộ lọc nội dung và nhà phát triển sẵn sàng chờ đợi một lệnh gọi công cụ CLI được tự động xem xét.
Không có nơi nào để ẩn nấp trong một cuộc trò chuyện thời gian thực với một đứa trẻ năm tuổi. Cũng không có nút hoàn tác: trẻ không thể "chưa nghe" những gì gia sư đã nói. Hệ thống an toàn phải kiểm soát mọi hành động, trong mọi lượt tương tác.
Bộ phân loại an toàn của chúng tôi là một LLM mất khoảng 500-1000ms để chạy. Việc chờ đợi chạy người trò chuyện cho đến khi kiểm tra đó hoàn tất sẽ thêm một giây độ trễ vào mỗi lượt tương tác mà chúng tôi không thể chấp nhận được. Đây là một lợi thế khác của việc tách biệt quá trình tạo và thực thi trong bộ khung của chúng tôi.
Bộ phân loại an toàn chặn việc thực thi mà không chặn việc tạo. Ngay khi trẻ nói xong, chúng tôi gửi cả bộ phân loại và một mô hình nhỏ để tạo hành động đầu tiên của người trò chuyện song song với nhau. Mô hình đó phản ứng nhanh chóng với một phản hồi hào hứng, phản chiếu hoặc thừa nhận những gì trẻ vừa nói ("con thích khủng long ư! cô cũng vậy").
Mặc dù kiểm tra dựa trên quy tắc sẽ nhanh hơn và rẻ hơn, nhưng nó sẽ không thể xử lý được cách một đứa trẻ năm tuổi thực sự nói chuyện. Mỗi danh mục chúng tôi thêm vào chính sách an toàn đều làm tăng số lượng token và yêu cầu tinh chỉnh lại một bộ phân loại không xác định. Đôi khi một lỗi phiên âm làm bộ phân loại hoảng sợ và kích hoạt cảnh báo giả. Chúng tôi xem xét các trường hợp này và sử dụng chúng để cải thiện cách tác nhân hiểu trẻ.
Vào thời điểm hành động hào hứng đó được tạo ra, bộ phân loại thường đã trả về kết quả an toàn. Kiểm tra đó giải phóng cho người trò chuyện để tạo phản hồi trong khi hành động hào hứng được thực thi. Trẻ nghe thấy một lượt tương tác liên tục mặc dù có nhiều lệnh gọi mô hình.
Nhưng vấn đề khó hơn độ trễ là phải làm gì khi hành động phản xạ đó là lựa chọn sai lầm. Phản chiếu (mirroring) rất tốt cho cuộc trò chuyện hàng ngày với trẻ. Những lúc khác, nó lại trái ngược với những gì sư phạm gợi ý.
Hãy lấy ví dụ một đứa trẻ đề cập, giữa bài học, rằng một bạn cùng lớp đã gọi mình bằng một cái tên xấu. Phản xạ biến "Con thích khủng long" thành "Con thích khủng long ư! Cô cũng vậy" sẽ lặp lại cái tên xấu đó với trẻ.
Vì vậy, bất cứ khi nào bộ phân loại an toàn gắn cờ lượt tương tác của trẻ, chúng tôi sẽ loại bỏ hành động hào hứng. Người trò chuyện được xử lý theo hướng dẫn khác cho lượt này: không lặp lại cái tên đó, thừa nhận rằng điều đó hẳn là rất tệ, và gợi ý nên nói chuyện với người lớn.
Lưu ý: Các hệ thống an toàn của chúng tôi được quản lý bởi các chính sách phát triển cùng với các chuyên gia phát triển trẻ em. Cách thức hoạt động chi tiết của hệ thống an toàn sẽ là một bài viết riêng biệt.
Bài học: Kiểm soát việc thực thi dựa trên kiểm tra an toàn thay vì việc tạo để tránh độ trễ. Thay thế phản hồi phản xạ bằng hướng dẫn phù hợp với tình huống của trẻ bất cứ khi nào kiểm tra thất bại.
Ba không gian vấn đề này chỉ mới là bề nổi. Xây dựng một gia sư AI đòi hỏi phải giải quyết nhiều vấn đề hơn thế.
Bạn không thể xây dựng một gia sư AI cho trẻ em bằng cách chọn đúng mô hình, nhắc lệnh (prompt) cho nó rồi xong việc. Xây dựng gia sư AI cho trẻ em đòi hỏi nhiều hơn thế. Đó là việc kỹ thuật hóa một hệ thống thời gian thực mang lại đủ thời gian để vừa đúng về mặt thực tế vừa đúng về mặt sư phạm — thời gian để giữ lại câu trả lời khi câu trả lời làm giảm đi sự học hỏi, thời gian để chọn hành động tiếp theo trước khi trẻ kết thúc suy nghĩ, thời gian để xem xét lại một phản xạ nhanh trước khi trẻ nghe thấy nó.
Những mảnh ghép này có vẻ nhỏ khi đứng riêng lẻ, nhưng phép màu chỉ xảy ra khi bạn có tất cả các mảnh ghép này hoạt động cùng nhau để tạo ra một gia sư biết suy nghĩ trước, phục hồi một cách duyên dáng và tạo cảm giác như đang đồng hành cùng trẻ, chứ không phải đang chạy theo sau chúng.
Bài viết được AI dịch và tổng hợp tự động từ Hacker News Nổi bật (buzzing.cc bản dịch tiếng Trung). Liên kết bài gốc ở phía trên. AIHOT.vn luôn dẫn nguồn đầy đủ — nếu bạn thấy điểm cần chỉnh sửa, hãy gửi ý kiến tại trang phản hồi.