Choice, Score và Noul
So sánh Choice, Score và Noul trước khi viết yêu cầu.
Mỗi lệnh gọi Jev là một ánh xạ các câu hỏi có kiểu với cùng một state. Choice chọn từ một tập xác định gồm tối đa 255 phương án. Score đặt state vào 2 đến 10 mức có thứ tự và có thể nằm giữa hai mức. Noul trả về P(có) dưới dạng noul trong [0, 1] và không có trường độ tin cậy riêng. Hãy chọn primitive phù hợp với quyết định, còn phép tính, ngày tháng và tác vụ sinh nội dung thì xử lý bằng công cụ khác.
Cách chọn primitive
Dùng Choice khi câu trả lời là một phương án có tên: hàng đợi, kỹ năng, nhãn lớp hoặc liên kết tiếp theo. Câu hỏi mà TypeSafe hiển thị là "Phương án nào trong số này?" Kết quả trả về gồm lựa chọn, xác suất và độ tin cậy. Criteria là bản đồ gồm tối đa 255 phương án. Nếu có hàng trăm liên kết Wikipedia, bạn không thể nhồi tất cả vào một Choice; demo Wikiracing chấm điểm trước rồi chọn trong danh sách rút gọn.
Dùng Score khi câu trả lời là một mức độ trên thang ngắn có thứ tự: bình tĩnh / bực bội / rất bực bội, hoặc mức nghiêm trọng 1-5. Kết quả trả về gồm score, thang mức, xác suất và độ tin cậy. Criteria là một mảng có thứ tự gồm 2 đến 10 mức. Đừng nội suy score thành một đại lượng chính xác. Các mức của Jev 1.13 không phù hợp để tái dựng một con số giữa hai nấc; chỉ dùng giá trị kỳ vọng để kiểm tra ngưỡng.
Dùng Noul khi câu hỏi chỉ có đáp án có hoặc không: "Điều này có đúng không?" Kết quả trả về là noul từ 0 đến 1. Tiêu chí có thể mô tả thêm trường hợp đúng và sai. Không có trường độ tin cậy. Một Noul gần 0.5 biểu thị sự bất định, không phải cường độ trung bình. Đừng cho rằng Noul tương đương với Choice có hai lựa chọn, cũng đừng lấy ngưỡng đã tinh chỉnh cho loại này áp sang loại kia. Trang jaggedness của TypeSafe minh họa một Noul hoàn tiền ở mức 0.22 bên cạnh một Choice có ở mức 0.01 trên cùng phiếu hỗ trợ.
Choice
- Phương án nào trong số này?
- choice
- question
- choice, xác suất, độ tin cậy
- returns
- ánh xạ gồm tối đa 255 phương án
- criteria
- maxOptions
- Mức nào?
- 255
Score
- Phương án nào trong số này?
- score
- question
- score, thang chú giải, xác suất, độ tin cậy
- returns
- mảng có thứ tự gồm 2 đến 10 mức
- criteria
- minLevels
- maxLevels
- 2
- Điều này có đúng không?
- 10
Noul
- Phương án nào trong số này?
- noul
- question
- noul (0 đến 1)
- returns
- hasConfidence
- mô tả đúng/sai tùy chọn
- false
- criteria
- requestId
Câu hỏi song song và ID
Quy tắc ID đó rất quan trọng khi bạn tạo khóa trong vòng lặp. Ví dụ đếm trên trang Jaggedness hỏi một Score cho mỗi mục trong danh sách (item_0, item_1, …) rồi cộng các câu trả lời trong Choice. Noul không bao giờ thấy các tên đó dưới dạng token. Hãy giữ tên ổn định trong nhật ký để nối các lần thử lại với ánh xạ ban đầu.
Quy tắc ID đó rất quan trọng khi bạn tạo khóa trong vòng lặp. Ví dụ đếm trên trang jaggedness đặt một Noul cho mỗi phần tử trong danh sách (item_0, item_1, …), rồi cộng các câu trả lời trong Python. Jev không bao giờ thấy những tên đó dưới dạng token. Hãy giữ tên ổn định trong nhật ký để có thể ghép các lần thử lại với ánh xạ ban đầu.
Siêu dữ liệu trả về dùng chung trong mọi phản hồi primitive gồm requestId, timestamp, latency và metadata. Dùng requestId để nối các dấu vết. Xem timestamp và latency là thông tin vận chuyển, không phải lý do để hỏi lại. Metadata là nội dung tùy chọn đính kèm payload cốt lõi. Hãy so sánh ba primitive trước, rồi đọc các trường dùng chung này như lớp bao quanh câu trả lời có kiểu.
Giới hạn trong thực tế
Giới hạn 255 phương án Choice là mức trần cứng, không phải khuyến nghị. Wikiracing vượt qua giới hạn này bằng danh sách rút gọn Score rồi đến một Choice. Nếu hệ thống phân loại có 400 nhãn, bạn cần cùng cấu trúc hai giai đoạn hoặc một hệ thống Choice phân cấp. Đừng trông chờ API chấp nhận 256.
2 đến 10 mức của Score dành cho các thang ngắn mà con người có thể đọc thành lời. Thang chất lượng 100 điểm là sai primitive; hãy tách thành các Score đơn nhất rồi cộng bằng mã. Score nằm giữa các mức, chẳng hạn 1.4, là kết quả bình thường. Dùng các phần lẻ đó để tái dựng số tiền thì không.
Noul không có trường độ tin cậy, nên cổng quyết định của bạn phải dựa vào giá trị noul cùng bất kỳ câu hỏi thứ hai nào được thêm vào. Một cặp phổ biến là Noul cho câu "nội dung này có thuộc phạm vi không" và Choice cho câu "thuộc nhóm nào", nhưng chỉ hỏi câu sau khi noul cao. Bản ghi các bất biến jaggedness cảnh báo rằng không được coi hai con số đó là cùng một đại lượng thống kê.
Một yêu cầu kết hợp cả ba primitive trên cùng một phiếu hỗ trợ là cấu trúc thông thường, không phải thủ thuật nâng cao. Độ khẩn cấp dùng Noul, bộ phận dùng Choice, mức bực bội dùng Score, rồi đến mã xử lý. Đây chính là ánh xạ được phần bắt đầu nhanh minh họa bằng curl. Phần so sánh trên trang này giúp bạn chọn kiểu trước khi viết JSON.
Các trường lớp bao dùng chung không phải primitive thứ tư. requestId, timestamp, latency và metadata đi kèm mọi câu trả lời để bạn có thể truy vết lệnh gọi. Thông tin sản phẩm phải nằm trong state. Nếu đang nhét chính sách vào metadata, hãy chuyển nó sang đối tượng mà Jev thực sự đọc.
Hãy viết criteria như thể ngày mai một đồng đội mới sẽ đọc chúng. Tên phương án trong Choice và tên mức trong Score là một phần của câu hỏi. Nhãn mơ hồ sẽ khiến mô hình hiểu theo nghĩa đen khi đưa vào vận hành.
Noul là tên riêng. Hãy giữ nguyên cách viết ngay cả khi phần còn lại của yêu cầu là văn xuôi tiếng Anh.
Nguồn