Model A/B — giữ hay revert?
Chạy đúng marking engine (DDQuick.gradeEssay → gemini-proxy-v3, endpoint
band_calibration) trên toàn bộ bộ gold do giám khảo chấm qua HAI model, rồi so
MAE / bias / độ tin cậy / chi phí / độ trễ cạnh nhau. Mốc phải vượt: MAE 0.38
(gemini-3-flash-preview, MARKING_ENGINE_R9 §11).
Model được ép bằng model_override — chỉ đổi cho lượt chạy này, KHÔNG đụng vào
secret GRADING_MODEL, nên học sinh không bị ảnh hưởng gì.
Bài trong bộ gold chỉ nằm trong trình duyệt này (không lưu server, không commit).
Mỗi bài × mỗi model tốn ≥1 lượt AI.
Bộ gold lấy ở đâu & định dạng JSON (bấm để xem)
pool_examiner_v2.json KHÔNG nằm trong repo — .gitignore có
calibration_private/ vì đó là bài thật của học sinh + nội dung sách có bản quyền.
Nó nằm trên máy chủ app (thư mục calibration_private/), hoặc trong Drive nơi nó được giao.
Chọn file bằng nút “ Chọn file gold” — file được đọc ngay trong trình duyệt,
không upload đi đâu cả. Hoặc dán thẳng JSON vào ô bên dưới.
[
{
"id": "ieltsjay_t2_opinion_b75", // hoặc "uid"
"task_type": "t2_opinion", // t1_* / t2_* (hoặc "t1"/"t2"; hoặc "is_t1": true)
"band": "7.5", // BẮT BUỘC — band TỔNG giám khảo chấm ("existing_band" cũng được)
"criteria": { // TUỲ CHỌN — Tier A mới có. Thiếu thì bảng
"task": 7, // per-criterion bỏ qua bài này (không bịa).
"coherence": 8, // nhận cả TR/TA · CC · LR · GRA (hoa/thường đều được),
"lexical": 8, // và cả "existing_criteria" / "examiner_criteria".
"grammar": 8
},
"prompt": "…đề bài…",
"essay": "…nguyên văn bài làm…", // BẮT BUỘC
"image": "https://… hoặc data:image/png;base64,…" // TUỲ CHỌN — biểu đồ Task 1
}
]
Bài thiếu
essay hoặc band bị bỏ qua và được báo số lượng.
Bài Task 1 không kèm ảnh vẫn chấm được nhưng band Task kém tin cậy — miễn là
cả hai model đều thiếu như nhau thì phép SO SÁNH vẫn công bằng.