Choice, Score และ Noul

เปรียบเทียบ Choice, Score และ Noul ก่อนเขียนคำขอ

การเรียก Jev ทุกครั้งคือแผนผังคำถามแบบมีชนิดสำหรับ state หนึ่งรายการ Choice เลือกจากชุดตัวเลือกที่กำหนดไว้ได้สูงสุด 255 ตัวเลือก Score จัดวาง state ลงบนระดับเรียงลำดับ 2 ถึง 10 ระดับ และอาจอยู่ระหว่างสองระดับได้ Noul คืนค่า P(yes) เป็น noul ในช่วง [0, 1] โดยไม่มีฟิลด์ความมั่นใจแยกต่างหาก เลือกพริมิทีฟให้ตรงกับการตัดสินใจ แล้วใช้งานคำนวณ วันที่ และการสร้างเนื้อหาในเครื่องมืออื่น

วิธีเลือกพริมิทีฟ

ใช้ Choice เมื่อคำตอบเป็นตัวเลือกที่มีชื่อเพียงหนึ่งรายการ เช่น คิว ทักษะ ป้ายกำกับคลาส หรือลิงก์ถัดไป คำถามที่ TypeSafe แสดงคือ "ตัวเลือกใดต่อไปนี้?" ผลลัพธ์ประกอบด้วยตัวเลือก ค่าความน่าจะเป็น และความมั่นใจ โดยเกณฑ์เป็นแมปที่รองรับได้สูงสุด 255 ตัวเลือก หากมีลิงก์วิกิพีเดียหลายร้อยรายการ คุณจะยัดทั้งหมดลงใน Choice เดียวไม่ได้ เดโม Wikiracing จึงให้คะแนนก่อน แล้วค่อยเลือกจากรายการที่คัดไว้

ใช้ Score เมื่อคำตอบเป็นระดับบนคำอธิบายสั้น ๆ ที่เรียงลำดับ เช่น สงบ / หงุดหงิด / หงุดหงิดมาก หรือความรุนแรง 1-5 ค่าที่คืนมาคือ score, legend, probabilities และ confidence ส่วนเกณฑ์เป็นอาร์เรย์เรียงลำดับ 2 ถึง 10 ระดับ อย่าแปลงคะแนนระหว่างระดับให้เป็นขนาดที่แม่นยำ ระดับของ Jev 1.13 ไม่เหมาะกับการสร้างตัวเลขระหว่างขั้นสองขั้นขึ้นใหม่ ให้ใช้ค่าคาดหมายเพื่อตรวจเกณฑ์เท่านั้น

ใช้ Noul เมื่อคำถามตอบได้ว่าใช่หรือไม่ เช่น "เรื่องนี้จริงหรือไม่?" ระบบจะคืนค่า noul ตั้งแต่ 0 ถึง 1 โดยจะใส่เกณฑ์อธิบายความหมายของจริงและเท็จไว้หรือไม่ก็ได้ ไม่มีฟิลด์ความมั่นใจ ค่า Noul ใกล้ 0.5 หมายถึงความไม่แน่นอน ไม่ใช่ความเข้มระดับปานกลาง อย่าคิดว่า Noul เท่ากับ Choice ที่มีสองตัวเลือก และอย่านำเกณฑ์ที่ปรับไว้สำหรับอย่างหนึ่งไปใช้กับอีกอย่าง หน้า jaggedness ของ TypeSafe แสดง Noul สำหรับการคืนเงินที่ 0.22 เทียบกับ Choice ที่ตอบว่าใช่ด้วยค่า 0.01 ในทิกเก็ตเดียวกัน

Choice, Score, and Noul primitives with return fields and limits
Choice, Score และ Noul พร้อมฟิลด์ผลลัพธ์และข้อจำกัด

Choice

ประเภทฟิลด์
choice
question
ตัวเลือกใดในรายการนี้?
returns
ตัวเลือก, ความน่าจะเป็น, ความมั่นใจ
criteria
แผนผังที่มีตัวเลือกได้สูงสุด 255 รายการ
จำนวนตัวเลือกสูงสุด
255

Score

ประเภทฟิลด์
score
question
ระดับใด?
returns
คะแนน, คำอธิบายระดับ, ความน่าจะเป็น, ความมั่นใจ
criteria
อาร์เรย์เรียงลำดับ 2 ถึง 10 ระดับ
ระดับขั้นต่ำ
2
จำนวนระดับสูงสุด
10

Noul

ประเภทฟิลด์
noul
question
เรื่องนี้จริงหรือไม่?
returns
noul (0 ถึง 1)
มีค่าความมั่นใจ
false
criteria
คำอธิบาย true/false ที่ระบุหรือไม่ก็ได้

ฟิลด์ที่ส่งกลับร่วมกัน

รหัสคำขอ
ตัวระบุของการเรียก ใช้เชื่อมร่องรอยและการลองใหม่ในล็อกของคุณ
timestamp
เวลาของเซิร์ฟเวอร์ที่แนบกับซองคำตอบ ไม่ใช่เหตุผลให้ออกคำถามซ้ำ
latency
ระยะเวลาที่วัดได้สำหรับการประเมินนี้ TypeSafe ระบุเวลาแบบต้นทางถึงปลายทาง 70ms-500ms สำหรับ Jev
metadata
เพย์โหลดเสริมที่ระบุหรือไม่ก็ได้และอยู่ข้างคำตอบแบบมีชนิด เก็บข้อเท็จจริงของผลิตภัณฑ์ไว้ใน state ไม่ใช่ที่นี่

คำถามแบบขนานและ ID

คำถามในคำขอเดียวใช้ state ร่วมกัน ทำงานแยกกันแบบขนาน และแทบไม่เพิ่มเวลาแฝงเมื่อเพิ่มคำถาม คุณสามารถผสม Choice, Score และ Noul ในแผนผังเดียวกันได้ คีย์กำหนดเองได้ เช่น urgency, department, frustration คำตอบที่ตรงกันจะกลับมาภายใต้คีย์เดิม คีย์จะไม่ถูกส่งให้โมเดลเบื้องหลังและไม่ใช้ในการอนุมาน

กฎเกี่ยวกับ ID นี้สำคัญเมื่อคุณสร้างคีย์ในลูป ตัวอย่างการนับในหน้า jaggedness จะถาม Noul หนึ่งข้อสำหรับแต่ละรายการในลิสต์ (item_0, item_1, …) แล้วรวมคำตอบใน Python โดย Jev จะไม่เห็นชื่อเหล่านั้นเป็นโทเค็น เก็บชื่อในล็อกให้คงที่ เพื่อเชื่อมการลองซ้ำกลับไปยังแมปต้นฉบับได้

ข้อมูลกำกับผลลัพธ์ที่ใช้ร่วมกันในคำตอบของทุกพริมิทีฟประกอบด้วย requestId, timestamp, latency และ metadata ใช้ requestId เพื่อเชื่อมร่องรอย ถือว่า timestamp และ latency เป็นข้อมูลการรับส่ง ไม่ใช่เหตุผลให้ถามซ้ำ ส่วน metadata คือเนื้อหาเสริมที่แนบกับเพย์โหลดหลักได้ หลังเปรียบเทียบพริมิทีฟทั้งสามแล้ว ให้อ่านฟิลด์ร่วมเหล่านี้เป็นซองที่ห่อหุ้มคำตอบแบบมีชนิด

ข้อจำกัดในการใช้งานจริง

เพดาน 255 ตัวเลือกของ Choice เป็นข้อจำกัดตายตัว ไม่ใช่คำแนะนำ Wikiracing จัดการข้อจำกัดนี้ด้วยการใช้ Score ทำรายการคัดเลือก แล้วจึงใช้ Choice หากอนุกรมวิธานของคุณมี 400 ป้ายกำกับ ก็ต้องใช้โครงแบบสองขั้นตอนเดียวกันหรือลำดับชั้นของ Choices อย่าคาดหวังว่า API จะยอมรับ 256

ระดับ 2 ถึง 10 ของ Score เหมาะกับคำอธิบายสั้น ๆ ที่มนุษย์อ่านออกเสียงได้ สเกลคุณภาพ 100 คะแนนเลือกพริมิทีฟผิดชนิด ควรแยกเป็น Score ย่อยระดับอะตอมแล้วบวกในโค้ด คะแนนระหว่างระดับอย่าง 1.4 เป็นผลลัพธ์ปกติ แต่ไม่ควรใช้เศษส่วนเหล่านี้สร้างจำนวนเงินขึ้นใหม่

Noul ไม่มีฟิลด์ความมั่นใจ ดังนั้นตัวกั้นของคุณต้องใช้ค่า noul ร่วมกับคำถามที่สองซึ่งเพิ่มเข้ามา คู่ที่พบบ่อยคือ Noul สำหรับถามว่า "เรื่องนี้อยู่ในขอบเขตหรือไม่" และใช้ Choice ถามว่า "อยู่ในกลุ่มใด" เฉพาะเมื่อค่า noul สูง ระเบียนค่าคงที่ใน jaggedness เตือนว่าอย่าถือว่าตัวเลขสองค่านี้เป็นค่าสถิติชนิดเดียวกัน

คำขอที่ผสมพริมิทีฟทั้งสามกับทิกเก็ตเดียวเป็นรูปแบบปกติ ไม่ใช่เทคนิคขั้นสูง ใช้ Noul กับความเร่งด่วน ใช้ Choice กับแผนก ใช้ Score กับความหงุดหงิด แล้วจึงเขียนโค้ด นี่คือแผนผังเดียวกับที่คู่มือเริ่มต้นฉบับย่อแสดงใน curl การเปรียบเทียบในหน้านี้มีไว้ให้เลือกชนิดก่อนเขียน JSON

ฟิลด์ซองข้อมูลที่ใช้ร่วมกันไม่ใช่พริมิทีฟชนิดที่สี่ requestId, timestamp, latency และ metadata จะมากับทุกคำตอบเพื่อให้ติดตามการเรียกได้ ข้อเท็จจริงของผลิตภัณฑ์ควรอยู่ใน state หากพบว่ากำลังยัดนโยบายลงใน metadata ให้ย้ายไปไว้ในออบเจ็กต์ที่ Jev อ่านจริง

เขียนเกณฑ์ให้เหมือนเพื่อนร่วมทีมคนใหม่จะมาอ่านในวันพรุ่งนี้ ชื่อตัวเลือกบน Choice และชื่อระดับบน Score เป็นส่วนหนึ่งของคำถาม ป้ายกำกับที่คลุมเครือทำให้การตีความตามตัวอักษรหลุดเข้าสู่ระบบจริง

Noul เป็นชื่อเฉพาะ จึงต้องคงการสะกดไว้แม้ส่วนอื่นของคำขอจะเป็นร้อยแก้วภาษาอังกฤษ

แหล่งที่มา