Skip to content

Câu chuyện mở bài (SCQA) ​

Mỗi Unit và mỗi Lesson mở bằng một câu chuyện bốn đoạn. Đây là chỗ người học make meaning trước khi được dạy: họ gặp một người thật đang mắc đúng cái lỗi mà bài sắp chữa.

Người học không thấy bốn cái nhãn Situation / Complication / Question / Answer, họ chỉ đọc bốn đoạn liền mạch. Nhãn học thuật ở đầu mỗi đoạn phá đúng cái mạch truyện đang cần, và cũng là phơi tên mô hình giảng dạy ra.

Bốn đoạn ​

ĐoạnViệc của nóTrần
Tình huốngDựng cảnh, có người có việctối đa 3 câu · 120–340 ký tự
Nút thắtChuyện xấu đi ĐÚNG VÌ nhân vật dính một hiểu lầm phổ biếntối đa 3 câu · 80–300 ký tự
Câu hỏiCâu chính nhân vật tự bật rađúng 1 câu · 15–180 ký tự
Lời giảiKhoảnh khắc nhận ra, rồi làm khác đi, rồi kết quả đổitối đa 4 câu · 100–460 ký tự

Cả bốn đoạn cộng lại đọc trong khoảng một phút.

Nhân vật và bối cảnh do MÃ giao, không để mô hình tự nghĩ ​

Đây là luật quan trọng nhất, và nó ra đời từ một lỗi thật: thả tự do thì ba unit liền nhau đều mở bằng "Thảo dẫn buổi họp", mô hình chép luôn cái tên trong ví dụ của prompt. Đọc bài thứ hai là nhận ra công thức.

Nay castFor(id) băm mã của unit hoặc bài để chọn ra một cặp cố định:

Nhân vật, lấy từ thế giới Conan, đúng tên trường:

Ran · Mori · Agasa · Shinichi · Conan · Sonoko · Heiji · Kogoro · Haibara · Genta · Ayumi · Mitsuhiko

Bối cảnh, công ty có thật, ai cũng biết họ bán gì:

Starbucks Việt Nam · Techcombank · Vinamilk · Apple Store · Honda Việt Nam · Thế Giới Di Động

Bối cảnh phải dùng đúng thứ công ty đó thật sự làm: Starbucks bán cà phê ở cửa hàng, Techcombank làm ngân hàng, Vinamilk làm sữa, Apple Store bán iPhone và MacBook, Honda bán ô tô xe máy, Thế Giới Di Động bán điện thoại.

Cấm bối cảnh chung chung kiểu "một công ty phần mềm", "một doanh nghiệp", chúng làm mọi câu chuyện giống nhau và không gợi được gì cụ thể trong đầu người đọc.

Vì băm theo mã đối tượng nên chạy lại vẫn ra cùng nhân vật, còn hai unit khác nhau thì gần như chắc chắn khác.

Tám luật chốt bằng mã ​

Chữ trong prompt không giữ được, đã thử nhiều lần và mỗi lần đều thua. Tám luật dưới đây kiểm bằng mã trước khi ghi vào D1, vi phạm là sinh lại (tối đa 4 lượt, mỗi lượt được cho biết lượt trước hỏng vì gì).

LuậtChặn gìĐã bắt được gì thật
Đúng nhân vật đã giaoMô hình quay về cái tên nó thích,
Đúng bối cảnh đã giaoMô hình dồn hết chuyện về công ty nó thíchChỉ ép khi bối cảnh là thương hiệu (một token dài viết hoa); bối cảnh mô tả thì được diễn đạt lại
Không kể lại tình huốngLời giải hoặc nút thắt kể lại từ đầuSo trùng chuỗi 9 từ, bỏ qua tên và bối cảnh đã giao
Có khoảnh khắc đổi cách làmLời giải chỉ kể tiếp bối cảnhThiếu mọi từ như "nhận ra", "thay vì", "hoá ra"
Không phải đoạn dựng cảnhLời giải mở bằng <Tên> đang…Mô hình viết ngược: lời giải thành đoạn mở
Không tên giả lậpNguyễn Văn A, ông CRanh giới từ phải dùng lookahead Unicode, và chữ nhãn [A-E] phải viết hoa THẬT, bật /i cho cả regex thì "chị e rằng" bị bắt oan
Không mở bằng cụm công thức"Cách nghĩ cũ…", "Vấn đề ở chỗ…"93/93 lời giải từng mở bằng đúng một cụm
Không đứt giữa câuChạm trần tokenMột lời giải kết thúc bằng "chứ không chỉ là"

Thêm hai luật chung cho mọi nội dung: không dấu gạch ngang dài (cắt ngay ở đường ghi, không chỉ dặn trong prompt), và không lẫn ký tự Hán/Nhật/Hàn giữa câu tiếng Việt (chuyện này xảy ra thật).

Ba chi tiết cài đặt đáng nhớ, đều từ lỗi thật:

  • Toàn bộ luật sống ở một hàm duy nhất scqaViolations() (content-rules.ts): máy sinh ném vi phạm đầu tiên để retry kèm lý do, máy kiểm ghi tất cả thành finding, cùng một cài đặt nên hai cửa không thể trôi lệch nhau như thời mỗi bên một bản chép tay.
  • Phép đếm câu phải gỡ dấu ngăn nghìn trước: "1.000.000 đồng" mà đếm mỗi dấu chấm một câu thì văn đúng cũng vỡ trần số câu.
  • Luật "câu đầu phải có tên riêng" kiểm bằng \p{Lu} thật, dải [A-ZÀ-Ỹ] cũ phủ luôn chữ thường có dấu nên luật từng chết im lặng, câu nào cũng qua.

Khoá có course_metadata.scenes thì bối cảnh lấy từ scenes của chính khoá đó (quầy giao dịch, buổi họp duyệt ngân sách…) thay cho danh sách công ty chung, bối cảnh đúng lĩnh vực thắng bối cảnh chung.

Cấm tuyệt đối trong lời giải ​

Mở đầu bằng những cụm phân tích, "Cách nghĩ cũ…", "Vấn đề ở chỗ…", "Điều quan trọng là…", "Bài học ở đây là…". Hãy mở bằng chính nhân vật và việc họ làm.

Sinh lại ​

POST /authoring/units/:unitId/scqa       # SCQA cấp Unit
POST /authoring/concepts/:conceptId/scqa # SCQA cấp Lesson, giữ nguyên phần còn lại của bài

Cả hai chỉ chạy khi TEST_MODE=true.

Tài liệu nội bộ nền tảng Conan School.