Skip to main content

OpenThai-SystemOne — โมเดล System One ภาษาไทย-อังกฤษแบบเปิด รันบนโน้ตบุ๊กได้

· One min read
Kobkrit Viriyayudhakorn
CEO @ iApp Technology

OpenThai-SystemOne โมเดลตัดสินใจภาษาไทย-อังกฤษแบบเปิด เปิดตัว 20 กันยายน 2569

คืนนี้เราเปิดตัว OpenThai-SystemOne โมเดลตัดสินใจแบบ System One ภาษาไทย-อังกฤษ โอเพนซอร์ส: 0.8B พารามิเตอร์ สัญญาอนุญาต Apache 2.0 น้ำหนักโมเดลและสูตรการเทรนอยู่บน Hugging Face และ GitHub พร้อม API แบบโฮสต์ใช้ฟรีบน api.iapp.co.th

โมเดลนี้ไม่เขียน แต่ตัดสินใจ ส่ง state และคำถามเชิงโครงสร้างให้ แล้วได้ความน่าจะเป็นที่ปรับเทียบแล้วของทุกตัวเลือกในทุกคำถามในการคำนวณรอบเดียว โดยไม่มีโทเคนขาออกเลย

หน้าโมเดล: iapp.co.th/openmodels/openthai-systemone · น้ำหนักโมเดล: huggingface.co/iapp/OpenThai-SystemOne · โค้ด: github.com/iapp-technology/openthai-systemone · ลองใช้: หน้า API

ทำไมต้องมีโมเดลที่ไม่สร้างข้อความ

ธุรกิจไทยจัดเส้นทาง ticket คัดกรองคอมเมนต์ เลือกปุ่มถัดไปให้ agent กด และตรวจว่าคำตอบอ้างอิงข้อมูลจริงหรือไม่ วันละหลายล้านครั้ง แต่ละครั้งคือการตัดสินใจระหว่างตัวเลือกที่รู้อยู่แล้ว การเรียกโมเดลภาษาขนาดใหญ่ทุกครั้งทั้งช้า เสียโทเคน และอาจตอบสิ่งที่ไม่เคยอยู่ในรายการตัวเลือก

โมเดล System One ตอบคำถามเชิงโครงสร้างโดยตรง TypeSafe AI เปิดหมวดนี้ด้วย Jev เมื่อ 15 กันยายน 2569 ห้าวันต่อมา นี่คือเวอร์ชันเปิดสำหรับภาษาไทยและอังกฤษ พร้อมสิ่งที่ TypeSafe ไม่เปิดเผย นั่นคือสถาปัตยกรรม

โมเดลทำอะไรได้

คุณให้ state (ข้อความหรือ JSON อะไรก็ได้) และ คำถาม หนึ่งข้อขึ้นไปจากสามประเภท:

ประเภทคุณให้คุณได้
choiceคำสั่งและตัวเลือกที่ตั้งชื่อไว้สูงสุด 255 ตัวเลือกตัวเลือกที่ดีที่สุด ความน่าจะเป็นต่อตัวเลือก confidence และ abstain
scoreคำสั่งและระดับเรียงลำดับ 2 ถึง 10 ระดับคะแนนถ่วงน้ำหนักด้วยความน่าจะเป็น และความน่าจะเป็นต่อระดับ
noulคำถามใช่/ไม่ใช่P(ใช่)

ทุกคำถามถูกตอบในการคำนวณรอบเดียวกัน ตัวอย่าง ticket ฝ่ายสนับสนุนภาษาไทยพร้อมสามคำถาม และผลลัพธ์ที่วัดได้จริงจากโมเดล:

{"state": {"ticket": "โดนหักเงินซ้ำสองครั้งเมื่อวานนี้ ขอเงินคืนด่วนนะครับ โทรไปสามรอบแล้วไม่มีใครรับ"},
"questions": {
"department": {"type": "choice", "instructions": "ทีมใดควรรับผิดชอบ",
"criteria": {"billing": "การเงิน/คืนเงิน", "technical": "ระบบใช้งานไม่ได้", "sales": null}},
"frustration": {"type": "score", "instructions": "ลูกค้าหงุดหงิดแค่ไหน",
"criteria": ["ใจเย็น", "หงุดหงิดแต่สุภาพ", "โกรธมาก"]},
"refund": {"type": "noul", "instructions": "ลูกค้าขอเงินคืนอย่างชัดเจนหรือไม่"}}}
คำถามคำตอบความมั่นใจ
departmentbilling (96.3%), technical 1.1%, sales 2.6%0.83
frustration1.95 จาก 2 (โกรธมาก 95.7%)0.82
refundP(ใช่) = 0.946

166 โทเคนขาเข้า 0 โทเคนขาออก ไป-กลับผ่านเกตเวย์ของเรา 0.23 วินาที

ทำงานอย่างไร

เรานำส่วนประมวลผลข้อความของ Qwen3.5-0.8B มาเทรนต่อด้วยข้อความไทยราว 5 พันล้านโทเคน แล้วเปลี่ยนหัวโมเดลภาษาขนาด 248K คำเป็นหัวตัดสินใจ 256 ช่อง ตัวเลือกถูกแนะนำด้วยโทเคนควบคุม ทุกตำแหน่งคำตอบถูกฉายเป็น 256 logit ช่องที่เกินจำนวนตัวเลือกถูกปิด และช่อง 255 หมายถึง "ไม่มีตัวเลือกใดเหมาะ" choice ใช้ค่าสูงสุด score คือดัชนีระดับถ่วงน้ำหนักด้วยความน่าจะเป็น noul คือความน่าจะเป็นของคำตอบใช่ ลำดับตัวเลือกถูกสลับระหว่างเทรน จึงไม่มีอคติตามตำแหน่ง โมเดลเทรนด้วยชุดข้อมูลสาธารณะด้านการจัดหมวดหมู่ NLI ถาม-ตอบ และ agent รวมกับงานตัดสินใจภาษาไทยและอังกฤษที่สังเคราะห์ขึ้น แล้วผ่านการปรับเทียบ

ผลคือโมเดลที่รันบน GPU โน้ตบุ๊กได้: 154 มิลลิวินาทีต่อคำขอบน MacBook M3 Max และ 40 ถึง 70 มิลลิวินาทีบน H100

ข้อจำกัด บอกไว้ก่อนเลย

  • นี่คือเวอร์ชัน 0.1 และเป็นโมเดลขนาด 0.8B ไม่ใช่โมเดลคิดวิเคราะห์
  • ตอบได้เฉพาะตัวเลือกที่ให้ แต่ยังเลือกผิดได้ ทุกคำตอบมีค่า confidence ส่งเคสที่ค่าต่ำไปโมเดลใหญ่หรือคน
  • รับข้อความอย่างเดียว
  • สูงสุด 255 ตัวเลือกต่อ choice, 2 ถึง 10 ระดับต่อ score, 64K โทเคนต่อคำขอ

ตัวเลข

บน public benchmark 13 ชุดของ Bespoke Labs สำหรับโมเดล System One ใช้ชุดข้อมูล การแบ่ง คำสั่ง และตัวสุ่มเดียวกับที่ Bespoke เผยแพร่ โมเดล 0.8B ของเราได้ค่าเฉลี่ย macro 61.9 ส่วน Bespoke-Nimble-9B ได้ 74.8, Jev 1.13.0 ได้ 76.0 และ Qwen3.5-0.8B ดิบได้ 45.4 ตัวหนาคือชุดที่โมเดล 0.8B นำโมเดล 9B

SubsetTypenOpenThai-SystemOne 0.8BNimble-9BJev 1.13.0
aegis2noul25058.081.280.4
boolqnoul30063.786.089.7
civil_commentsnoul30078.070.381.0
helpsteer2score25042.839.034.1
massive-de-DEchoice35064.683.486.9
massive-en-USchoice35075.786.987.4
multinlichoice29985.685.382.9
pawsnoul25067.282.889.2
pubmedqachoice25053.675.677.2
squad2noul29950.280.682.9
summeval-consistencyscore14484.075.781.2
summeval-relevancescore24013.849.235.0
vitaminc-devchoice59967.176.680.1
Macro average61.974.876.0

เราอยากให้อ่านรายแถวมากกว่าดูค่าเฉลี่ย โมเดลเล็กนำโมเดล 9B ในงาน NLI ความสอดคล้องของบทสรุป การให้คะแนนความช่วยเหลือ และข้อความเป็นพิษ แต่ตามหลังชัดเจนในงานใช่/ไม่ใช่แบบอ่านจับใจความ (squad2 เท่าการสุ่ม) และความเกี่ยวข้องของบทสรุปที่หัวคะแนนยังปรับเทียบไม่ดี บนชุดทดสอบภาษาไทยที่ไม่เคยใช้เทรน ได้ 86.4 บนเจตนา 60 หมวดของ MASSIVE-th, 97.7 บนหัวข้อ Prachathai, 76.5 บน XNLI-th และ 77.5 บน SIB-200 ภาษาไทย โดยค่าความคลาดเคลื่อนของการปรับเทียบไม่เกิน 0.05 ในชุดส่วนใหญ่ และมีจุดอ่อนที่รู้แล้วสองจุด: ความรู้สึก Wisesight (38.7) และเจตนา 77 หมวดของ banking77 (32.7) ตารางทั้งหมดพร้อม ECE และ Brier score รายชุดข้อมูล และการเปรียบเทียบก่อน/หลังปรับเทียบ อยู่ในmodel card

เริ่มต้นใช้งาน

แบบโฮสต์ พรีวิวฟรี endpoint POST https://api.iapp.co.th/v3/store/openthai/systemone ใช้ฟรีด้วย iApp API key ใดก็ได้ (สมัครฟรี) จำกัด 1,000 การตัดสินใจต่อวันต่อ key ราคาต่อการตัดสินใจจะประกาศในเดือนตุลาคม 2569 หน้า API มีสนามทดลองพร้อมตัวอย่างสี่แบบ โค้ด cURL, Python และ JavaScript และรายละเอียดคำขอ-คำตอบครบถ้วน รูปแบบคำขอเหมือน POST /v1/systemone โค้ดที่เขียนไว้สำหรับ API นั้นจึงใช้ได้ทันที

บนเครื่องของคุณ

pip install "git+https://github.com/iapp-technology/openthai-systemone"
OPENTHAI_SYSTEMONE_MODEL=iapp/OpenThai-SystemOne uvicorn openthai_systemone.server:app --port 8000

ทุกอย่างเปิดภายใต้ Apache 2.0: น้ำหนักโมเดล สคริปต์เทรน คอนฟิก และข้อมูลสังเคราะห์ เรายินดีรับความช่วยเหลือเรื่องการแปลงเป็น GGUF และ MLX (หัวโมเดลเป็น linear layer ธรรมดา) และชุดทดสอบภาษาไทยและอังกฤษที่เรายังไม่มี ส่ง issue หรือ pull request มาที่ GitHub ได้เลย

OpenThai-SystemOne เข้าร่วมครอบครัว OpenThai 2.0 กับ OpenThai 2.0 และ OpenThai 2.0 Legal