Có lúc ECMS sở hữu mười chín tính năng AI: gia sư RAG, mentor, chấm tự luận, sinh câu hỏi, tóm tắt nội dung, phiên âm video, OCR, trích xuất đề thi, phát hiện đạo văn, học thích ứng, ôn tập ngắt quãng, cảnh báo sớm, phát hiện học sinh có nguy cơ, thông tin cho phụ huynh, phân tích cho ban điều hành, quản trị chi phí, định tuyến LLM đa nhà cung cấp, và hơn thế.
Trên giấy, đó là nền tảng giáo dục giàu AI nhất chúng tôi từng xây. Trên thực tế đó là mười chín người xa lạ. Gia sư AI không biết học sinh vừa trượt đúng chủ đề đó trong bài thi tuần trước. Module luyện tập không biết gia sư vừa giảng gì. Hệ cảnh báo sớm chỉ đọc điểm danh và điểm số, không đọc gì thêm.
Lời giải không phải là tính năng thứ hai mươi.
Một mô hình về học sinh, mọi thứ cùng ghi vào
Chúng tôi xây một mô hình người học: một trạng thái tri thức cho mỗi học sinh, giữ mức nắm vững theo từng chủ đề, cập nhật bằng trung bình động có trọng số mũ với độ khó câu hỏi làm trọng số.
Điểm mấu chốt không nằm ở công thức. Điểm mấu chốt là mọi AI trong hệ thống đều đọc từ nó và ghi vào nó. Mức nắm vững được nuôi từ ba nguồn:
- Chấm bài thi — chủ đề lấy từ môn của câu hỏi.
- Tự chấm bài tập — cùng nguồn chủ đề, cùng đường đi.
- Ôn tập ngắt quãng — đúng nghĩa là điểm đánh giá từ 3 trở lên, độ khó lấy từ thẻ FSRS.
Cả ba đều ghi theo kiểu không chặn luồng. Một lỗi khi cập nhật mô hình người học tuyệt đối không được làm hỏng luồng chấm điểm đã kích hoạt nó: điểm của học sinh mới là hồ sơ gốc, còn ước lượng mức nắm vững chỉ là tín hiệu dẫn xuất, và tín hiệu dẫn xuất không có quyền kéo đổ hồ sơ gốc.
Ba nguồn gọi cùng một khái niệm bằng ba cái tên khác nhau sẽ cho ra ba chủ đề nửa vời vô dụng. Mọi nguồn đều đi qua một lớp chuẩn hóa chủ đề (topic_aliases) để "Quadratic equations", "Phương trình bậc hai" và "algebra-quadratics" cùng đổ về một chủ đề chuẩn. Thiếu bước đó, mô hình trông như đang chạy tốt trong khi âm thầm không đo được gì.
Mô hình dùng chung mở ra được những gì
Khi chủ đề yếu của một học sinh trở thành dữ kiện truy vấn được thay vì một phỏng đoán, ba thứ trước đó không đáng xây bỗng trở nên khả thi:
- Luyện tập thích ứng. Câu hỏi lấy từ ngân hàng đề thật, nhắm vào chủ đề yếu nhất, độ khó điều chỉnh theo từng chủ đề dựa trên ba câu trả lời gần nhất. Câu hỏi được vệ sinh trước khi tới client, nên đáp án đúng không nằm sẵn trong phản hồi mạng cho bất kỳ ai mở công cụ nhà phát triển. Mỗi câu trả lời lại ghi ngược vào mô hình, khiến luyện tập vừa là nơi tiêu thụ vừa là nguồn nuôi dữ liệu.
- Một gia sư thật sự riêng. Vẫn gia sư đó, nhưng khi có bản đồ năng lực của học sinh, nó giảng từ chỗ học sinh đang thật sự đứng thay vì từ chỗ chương trình giả định họ đang đứng.
- Cảnh báo sớm hơn. Điểm danh và điểm số cho biết một học sinh đang trượt. Xu hướng mức nắm vững đi xuống trên đúng những chủ đề kỳ thi sắp tới sẽ hỏi cho biết sớm hơn, khi vẫn còn kịp làm gì đó.
Cuộc rà soát khiến chúng tôi viết lại lộ trình
Trước khi bất cứ thứ nào ở trên lên production, chúng tôi rà lại mọi tính năng AI mà tài liệu tuyên bố đã xong. Kết quả: lộ trình đã đánh dấu "đã nối" cho nhiều thứ thực ra không hề chạy — cơ chế hạn mức AI là code chết, RAG không hề tách theo tổ chức, tìm kiếm trong phiên âm luôn trả rỗng, và toàn bộ stack AI không có mặt trong file compose production.
Chúng tôi sửa từng mục, rồi đổi luôn định nghĩa của cái từ đó.
"Đã nối" từ nay nghĩa là ba thứ cùng có: có đường đi từ giao diện tới dữ liệu thật, có phân quyền được thực thi trên đó, và có test. Thiếu một là chưa nối. Đó là một quy ước chẳng hào nhoáng gì, và nó đã làm cho sản phẩm trung thực hơn bất kỳ tính năng nào trong danh sách.
Mặc định tắt
Lớp AI mặc định bị tắt. AI_SERVICE_ENABLED, EXAM_EXTRACTOR_ENABLED, OCR_SERVICE_ENABLED và AI_MENTOR_ENABLED đều xuất xưởng ở giá trị false, và mọi endpoint AI trả về 503 sạch sẽ nói rằng tính năng chưa được bật, thay vì một vệt lỗi.
Đây không phải nước đôi. Một trung tâm chỉ cần xếp lịch, điểm danh, thi cử và học phí phải chạy được đúng bản build đó mà không phải trả hóa đơn LLM; còn trung tâm muốn dùng AI thì phải bật một cách có chủ đích, kèm hạn mức token theo từng tổ chức có ghi lại chi phí.
Phần tích lũy theo thời gian
Đối thủ sao chép được một danh sách tính năng trong một quý. Thứ họ không sao chép được là kho hồ sơ tích lũy về việc từng học sinh trong trung tâm của bạn đã làm đúng và làm sai cái gì suốt hai năm. Mô hình người học là mảnh càng chạy lâu càng có giá trị — và chính vì thế đáng lẽ nó phải là thứ được xây đầu tiên, không phải thứ mười chín.
