Quality Gate
ทุกการแปลจะผ่านกระบวนการตรวจสอบแบบ deterministic ก่อนที่จะถูกเขียนลงดิสก์ Quality gate จะดักจับความผิดพลาดที่พบบ่อยในการแปลด้วยเครื่อง — ไม่มี silent fallback ไม่มีข้อมูลขยะถูกเขียนลงไฟล์ locale ของคุณ
การตรวจสอบ
| การตรวจสอบ | สิ่งที่ดักจับ | ป้ายกำกับ Gate |
|---|---|---|
| ว่างเปล่า/เว้นวรรค | โมเดลคืนค่าเป็น string ว่างหรือ whitespace | [GATE] empty |
| Source echo | โมเดลคืนค่าเป็นข้อความภาษาอังกฤษต้นฉบับ | [GATE] source-echo |
| Hallucination loop | รูปแบบ trigram ที่ซ้ำกัน (เช่น "Qo' Qo' Qo'") | [GATE] hallucination |
| Length inflation | ผลลัพธ์ยาวกว่าต้นฉบับอย่างมีนัยสำคัญ | [GATE] length |
| Script compliance | สคริปต์ไม่ถูกต้องสำหรับ locale เป้าหมาย | [GATE] script |
| ICU plural categories | หมวดหมู่รูปพหูพจน์ที่จำเป็นสำหรับ locale ขาดหายไป | [GATE] icu-plural |
ว่างเปล่า/เว้นวรรค
ปฏิเสธการแปลที่เป็น string ว่าง มีแต่ whitespace หรือ null ซึ่งดักจับโมเดลที่ไม่คืนค่าใดๆ สำหรับ key ที่แปลยาก
Source Echo
ตรวจจับเมื่อโมเดลคืนค่าเป็นข้อความภาษาอังกฤษต้นฉบับแทนที่จะแปล พบบ่อยกับ string สั้นๆ และ prompt ที่ระบุรายละเอียดไม่เพียงพอ
Hallucination Loop
วิเคราะห์รูปแบบ trigram (3 ตัวอักษร) ในผลลัพธ์ หาก trigram ใดซ้ำกันเกินจำนวนครั้งที่กำหนดเมื่อเทียบกับความยาวของผลลัพธ์ การแปลนั้นจะถูกปฏิเสธ ซึ่งดักจับผลลัพธ์ที่ผิดปกติ เช่น "Qo' Qo' Qo' Qo' Qo'"
Length Inflation
ปฏิเสธการแปลที่ความยาวของผลลัพธ์เกิน maxLengthRatio × source length (ค่าเริ่มต้น: 4×) ซึ่งดักจับ hallucination ของโมเดลที่สร้างข้อความยาวมากสำหรับ input สั้นๆ
กำหนดค่าได้ผ่าน maxLengthRatio ในไฟล์ config ของคุณ
Script Compliance
สำหรับ locale ที่มีการกำหนดค่าฟิลด์ script (เช่น "script": "cans" สำหรับ Plains Cree Syllabics) จะตรวจสอบว่าผลลัพธ์มีตัวอักษรที่ไม่ใช่ ASCII ที่เหมาะสมกับสคริปต์เป้าหมาย ผลลัพธ์ที่เป็น Latin เท่านั้นสำหรับ locale ที่เป็น Arabic, CJK หรือ Syllabics จะถูกปฏิเสธ
สิ่งที่เกิดขึ้นเมื่อล้มเหลว
- การแปลที่ล้มเหลวจะถูก log ไปยัง stderr พร้อมคำนำหน้า
[GATE]ชื่อ key เหตุผล และตัวอย่างของค่านั้น - Key นั้นจะไม่ถูกเขียนลงไฟล์ locale
- retry cascade จะเริ่มทำงาน (ดูด้านล่าง)
[GATE] hero.title: source-echo — "Welcome to our platform"
[GATE] nav.about: hallucination — "À À À À À À À À"
Retry Cascade
เมื่อ batch ล้มเหลว (JSON parse error หรือ quality gate ปฏิเสธ) champollion จะลองใหม่ด้วย batch ที่เล็กลงเรื่อยๆ:
Full batch (80 keys) → parse error
└→ Half batch (40 keys) → 2 failures
└→ Individual keys (1 each) → isolates the 2 problem keys
งบประมาณการลองใหม่ถูกจำกัดด้วย maxRetries (ค่าเริ่มต้น: 3 ปรับได้ต่อภาษา) เพื่อป้องกันการใช้ token มากเกินไปกับ key ที่ล้มเหลวซ้ำๆ
หลังจากใช้การลองใหม่หมดแล้ว key ที่มีปัญหาจะถูก log และข้ามไป โดยจะถูกลองใหม่ในการรัน sync ครั้งถัดไป
Prompt Caching
system message (register, กฎไวยากรณ์, หมายเหตุสไตล์) จะถูกแยกออกจาก user message (key ที่ต้องการแปล) การแยกนี้มีเหตุผลดังนี้:
- system message เหมือนกันทุก batch สำหรับ locale ที่กำหนด
- Provider อย่าง Anthropic และ Google จะ cache system message ที่ซ้ำกัน
- ผลลัพธ์: batch แรกจ่าย token cost เต็มจำนวน batch ถัดไปจ่ายเฉพาะ user message
สิ่งนี้สามารถลดต้นทุน token ได้อย่างมีนัยสำคัญสำหรับโปรเจกต์ที่มี batch จำนวนมาก
ICU MessageFormat Validation
คำสั่ง integrity จะตรวจสอบรูปแบบ ICU MessageFormat plural กับกฎ CLDR plural หากไฟล์ต้นฉบับของคุณใช้ syntax แบบ ICU เช่น:
"items": "{count, plural, one {# item} other {# items}}"
Champollion จะตรวจสอบว่าเวอร์ชันที่แปลแล้วมีหมวดหมู่รูปพหูพจน์ที่จำเป็นทั้งหมดสำหรับ locale เป้าหมาย ตัวอย่างเช่น ภาษาอาหรับต้องการหกหมวดหมู่ (zero, one, two, few, many, other) — ไม่ใช่แค่ one และ other
รัน champollion integrity เพื่อตรวจสอบความครบถ้วนของรูปพหูพจน์ในทุก locale
Terminology Enforcement
สำหรับคู่ที่มีการ coach พร้อม dictionary champollion จะรันการตรวจสอบ terminology หลังการแปล หลังจาก quality gate ผ่านแล้ว จะตรวจสอบว่า LLM ใช้คำศัพท์ที่กำหนดใน dictionary จริงหรือไม่
[TERM] en→fr: 2 term violation(s)
• hero.title: "dashboard" → expected "tableau de bord" but got "panneau de contrôle"
การละเมิด terminology เป็นคำเตือน ไม่ใช่ข้อผิดพลาดที่บล็อกการทำงาน การแปลยังคงถูกเขียนลงดิสก์ ซึ่งเป็นเจตนาที่ตั้งใจ — LLM อาจมีเหตุผลที่ถูกต้องในการเลือกทางเลือกอื่น (บริบท ไวยากรณ์) และการบล็อกเมื่อ term ไม่ตรงกันจะก่อให้เกิดผลเสียมากกว่าผลดี
หากต้องการแก้ไขการละเมิด ให้อัปเดต coaching dictionary หรือแก้ไขไฟล์ locale ด้วยตนเอง
ดูเพิ่มเติม
- วิธีการทำงานของ Sync — ตำแหน่งของ quality gate ในกระบวนการ pipeline
- วิธีการแปล — วิธีการที่ป้อนข้อมูลเข้าสู่ gate
- Script Converters — การแปลงสคริปต์หลัง gate
- Coaching Data — การปรับปรุงคุณภาพการแปลต้นทาง
- Translation Memory — การ cache การแปลที่ผ่านการตรวจสอบแล้ว
- CLI Reference — sync — flag ของ sync รวมถึงพฤติกรรมการลองใหม่
- CLI Reference — integrity — การตรวจสอบ ICU plural