OpenThai-SystemOne
โมเดล System One ภาษาไทย-อังกฤษแบบเปิดที่รันบนโน้ตบุ๊กได้ ไม่เขียน แต่ตัดสินใจ
iapp/OpenThai-SystemOne · 0.8B พารามิเตอร์ · Apache 2.0
ส่ง state (ข้อความหรือ JSON อะไรก็ได้: ticket ฝ่ายสนับสนุน คอมเมน ต์ เอกสาร accessibility tree ของหน้าจอ) พร้อม คำถาม เชิงโครงสร้างหนึ่งข้อขึ้นไป โมเดลจะคืนความน่าจะเป็นที่ปรับเทียบแล้วของทุกตัวเลือกในทุกคำถามในการคำนวณรอบเดียว โดยไม่มีโทเคนขาออกเลย คำถามมีสามประเภท: choice (ตัวเลือกที่ตั้งชื่อไว้สูงสุด 255 ตัวเลือก), score (ระดับเรียงลำดับ 2 ถึง 10 ระดับ) และ noul (ใช่หรือไม่)
สร้างโดย iApp Technology ร่วมกับชุมชน OpenThaiGPT โมเดลฐาน: ส่วนประมวลผลข้อความของ Qwen3.5-0.8B (Apache 2.0) เทรนต่อด้วยข้อความไทยราว 5 พันล้านโทเคน ข้อมูลเทรน สคริปต์ และคอนฟิกเผยแพร่พร้อมน้ำหนักโมเดล
โมเดล System One คืออะไร
โมเดลภาษาตอบด้วยการสร้างข้อความทีละโทเคน และพูดอะไรก็ได้ รวมถึงตัวเลือกที่คุณไม่เคยให้ โมเดล System One ตอบคำถามเชิงโครงสร้างโดยตรง: หัวโมเดลภาษาถูกแทนที่ด้วยหัวตัดสินใจ 256 ช่อง ทุกตำแหน่งคำตอบถูกฉายลงบนตัวเลือกที่คุณให้ และ softmax ให้การแจกแจง โมเดลจึงตอบตัวเลือกที่ไม่ถูกต้องไม่ได้ แต่ยังผิดได้ นี่คือเหตุผลที่ทุกคำตอบมีค่า confidence ให้คุณใช้ตัดสินใจส่ง ต่อ
หมวดนี้ริเริ่มโดย TypeSafe AI ด้วย Jev เมื่อ 15 กันยายน 2569 OpenThai-SystemOne คือการสร้างขึ้นใหม่แบบเปิดสำหรับภาษาไทยและอังกฤษ เปิดตัวห้าวันต่อมา พร้อมสถาปัตยกรรม สูตรการเทรน และข้อมูลที่เปิดเผยทั้งหมด รูปแบบ HTTP เหมือนกับ POST /v1/systemone ดังนั้นโค้ด SDK ที่เขียนไว้สำหรับ API นั้นชี้มาที่โมเดลนี้ได้โดยไม่ต้องแก้
หนึ่งคำขอ สามการตัดสินใจ
ticket ฝ่ายสนับสนุนภาษาไทย สามคำถาม หนึ่งการเรียก ผลลัพธ์ที่วัดได้จริงจากโมเดลที่เผยแพร่:
| คำถาม | ประเภท | คำตอบ | ความมั่นใจ |
|---|---|---|---|
| ทีมใดควรรับผิดชอบ | choice (billing, technical, sales) | billing, 96.3% | 0.83 |
| ลูกค้าหงุดหงิดแค่ไหน | score (ใจเย็น, หงุดหงิดแต่ สุภาพ, โกรธมาก) | 1.95 จาก 2 | 0.82 |
| ลูกค้าขอเงินคืนอย่างชัดเจนหรือไม่ | noul | P(ใช่) = 0.946 |
166 โทเคนขาเข้า 0 โทเคนขาออก ไป-กลับผ่านเกตเวย์ 0.23 วินาที คำขอและคำตอบเต็มอยู่ในหน้า API
กรณีใช้งาน
- จัดเส้นทาง ticket ไปทีมที่ถูกต้อง พร้อมให้คะแนนความเร่งด่วนในคราวเดียว
- คัดกรองคอมเมนต์: ความเป็นพิษเป็นใช่/ไม่ใช่ ความรู้สึกเป็นตัวเลือก
- ตรวจว่าคำตอบของ LLM อ้างอิงข้อความที่ค้นมาจริงหรือไม่
- เลือกองค์ประกอบหน้าจอที่ agent ควรกดถัดไป และควรทำอะไร จาก accessibility tree
- จัดหมวดเอกสารและฟิลด์ได้สูงสุด 255 หมวดในคำถามเดียว
- ให้คะแนนรีวิวบนสเกลเรียงลำดับ ได้ค่าเฉลี่ยเป็นทศนิยม ไม่ใช่แค่ป้ายชื่อ
แต่ละงานคือหนึ่งคำขอในหลักสิบมิลลิวินาทีบน GPU เซิร์ฟเวอร์ ธุรกิจไทยตัดสินใจแบบนี้วันละหลายล้านครั้ง และไม่สามารถเรียก LLM เต็มรูปแบบทุกครั้งได้
ประสิทธิภาพ
| การตั้งค่า | ค่าที่วัดได้ |
|---|---|
| GPU เซิร์ฟเวอร์ (H100) batch 1, 3 คำถาม | 40 ถึง 70 มิลลิวินาที |
| GPU โน้ตบุ๊ก (MacBook M3 Max, MPS) | 154 มิลลิวินาที |
| ไป-กลับผ่านเกตเวย์ ตัวอย่าง ticket ด้านบน | 0.23 วินาที |
| โทเคนขาออก | 0 |
ผลการวัด
ค่าเฉลี่ย macro 61.9 บน public benchmark 13 ชุดของ Bespoke Labs สำหรับโมเดล System One เทียบกับ 74.8 ของ Bespoke-Nimble-9B, 76.0 ของ Jev 1.13.0 และ 45.4 ของ Qwen3.5-0.8B ดิบ ใช้ชุดข้อมูล การแบ่ง คำสั่ง และตัวสุ่มเดียวกับ benchmark ที่ Bespoke เผยแพร่ ตัวเลขของพวกเขาตามที่เผยแพร่เมื่อ 18 ก.ย. 2569 ส่วนของเราวัดด้วยสคริปต์ประเมินผลที่เปิดเผย ตัวหนาคือชุดที่โมเดล 0.8B นำโมเดล 9B
| ชุดข้อมูล | ประเภท | n | OpenThai-SystemOne 0.8B | Nimble-9B | Jev 1.13.0 |
|---|---|---|---|---|---|
| aegis2 | noul | 250 | 58.0 | 81.2 | 80.4 |
| boolq | noul | 300 | 63.7 | 86.0 | 89.7 |
| civil_comments | noul | 300 | 78.0 | 70.3 | 81.0 |
| helpsteer2 | score | 250 | 42.8 | 39.0 | 34.1 |
| massive-de-DE | choice | 350 | 64.6 | 83.4 | 86.9 |
| massive-en-US | choice | 350 | 75.7 | 86.9 | 87.4 |
| multinli | choice | 299 | 85.6 | 85.3 | 82.9 |
| paws | noul | 250 | 67.2 | 82.8 | 89.2 |
| pubmedqa | choice | 250 | 53.6 | 75.6 | 77.2 |
| squad2 | noul | 299 | 50.2 | 80.6 | 82.9 |
| summeval-consistency | score | 144 | 84.0 | 75.7 | 81.2 |
| summeval-relevance | score | 240 | 13.8 | 49.2 | 35.0 |
| vitaminc-dev | choice | 599 | 67.1 | 76.6 | 80.1 |
| ค่าเฉลี่ย macro | 61.9 | 74.8 | 76.0 |
อ่านตามจริง: นำโมเ ดล 9B ใน 4 จาก 13 ชุด (NLI, ความสอดคล้องของบทสรุป, การให้คะแนนความช่วยเหลือ, ข้อความเป็นพิษ) และตามหลังชัดเจนในงานใช่/ไม่ใช่แบบอ่านจับใจความ (squad2 เท่าการสุ่ม, boolq, pubmedqa) และการให้คะแนนความเกี่ยวข้องของบทสรุป ซึ่งหัวคะแนนยังปรับเทียบไม่ดี (ECE 0.79)
ชุดทดสอบภาษาไทยที่กันไว้ ไม่เคยใช้เทรน (ECE = ค่าความคลาดเคลื่อนของการปรับเทียบ ยิ่งต่ำยิ่งดี):
| ชุดข้อมูล | ประเภท | n | ความแม่นยำ | ECE |
|---|---|---|---|---|
| MASSIVE-th intent (60 หมวด) | choice | 5,007 | 86.4 | 0.048 |
| หัวข้อข่าว Prachathai67k | choice | 3,501 | 97.7 | 0.005 |
| XNLI-th | choice | 2,490 | 76.5 | 0.028 |
| หัวข้อ SIB-200 ภาษาไทย (7 หมวด) กันทั้งชุด | choice | 204 | 77.5 | 0.074 |
| ดาวรีวิว Wongnai (1 ถึง 5) | score | 6,203 | 63.3 | 0.010 |
| การเลือกเครื่องมือ xLAM (อังกฤษ) | choice | 884 | 99.4 | 0.007 |
| ความรู้สึก Wisesight (4 หมวด) กันทั้งชุด | choice | 2,671 | 38.7 | 0.341 |
| intent banking77 (77 หมวด, อังกฤ ษ) กันทั้งชุด | choice | 3,076 | 32.7 | 0.165 |
หลังปรับเทียบ ค่า confidence เชื่อถือได้บนชุดภาษาไทยและงาน NLI/หัวข้อ (ECE ไม่เกิน 0.05) การปรับเทียบภาษาอังกฤษอ่อนกว่า (ECE มัธยฐาน 0.15 บน public bench) เพราะตั้งใจให้ข้อมูลเทรนหนักไปทางภาษาไทย ความหน่วง batch 1 สำหรับหนึ่งคำถาม 255 ตัวเลือกบน H100 ที่ใช้ร่วมกัน: 44 มิลลิวินาที ตารางเต็ม Brier score และการเปรียบเทียบก่อน/หลังปรับเทียบอยู่ในmodel card
API แบบโฮสต์ใช้ฟรี
endpoint บน api.iapp.co.th ใช้ฟรีในช่วงพรีวิวด้วย iApp API key ใดก็ได้ (สมัครฟรี) จำกัด 1,000 การตัดสินใจต่อวันต่อ key ราคาต่อการตัดสินใจจะประกาศในเดือนตุลาคม 2569
| Endpoint | POST https://api.iapp.co.th/v3/store/openthai/systemone |
| การยืนยันตัวตน | header apikey |
| Body | {"state": ..., "questions": {...}} |
| เอกสารและสนามทดลอง | /docs/llm/openthai-systemone |
รันด้วยตัวเอง
pip install "git+https://github.com/iapp-technology/openthai-systemone"
OPENTHAI_SYSTEMONE_MODEL=iapp/OpenThai-SystemOne uvicorn openthai_systemone.server:app --port 8000
จากนั้น POST http://localhost:8000/v1/systemone ด้วย body เดียวกับ API แบบโฮสต์
สถาปัตยกรรม
ส่วนประมวลผลข้อความของ Qwen3.5-0.8B (ตัดตัวเข้ารหัสภาพออก) เทร นต่อด้วยข้อความไทยราว 5 พันล้านโทเคน หัวโมเดลภาษาขนาด 248K โทเคนถูกแทนที่ด้วยหัวตัดสินใจแบบ linear 1024 ไป 256 ช่อง ตัวเลือกถูกแนะนำด้วยโทเคนควบคุม ทุกตำแหน่งคำตอบถูกอ่านออกเป็น 256 logit ช่องที่เกินจำนวนตัวเลือกถูกปิด และช่อง 255 คือ "ไม่มีตัวเลือกใดเหมาะ" (abstain) choice ใช้ค่าสูงสุด score คือดัชนีระดับถ่วงน้ำหนักด้วยความน่าจะเป็น noul คือ P(ใช่) ลำดับตัวเลือกถูกสลับระหว่างเทรน จึงไม่มีอคติตามตำแหน่ง เทรนด้วยชุดข้อมูลสาธารณะด้านการจัดหมวดหมู่ NLI ถาม-ตอบ และ agent รวมกับงานตัดสินใจภาษาไทยและอังกฤษที่สังเคราะห์ขึ้น แล้วผ่านการปรับเทียบ
ข้อจำกัด บอกไว้ก่อน
- เวอร์ชัน 0.1 โมเดลขนาด 0.8B ไม่ใช่โมเดลคิดวิเคราะห์
- ตอบตัวเลือกที่ไม่ถูกต้องไม่ได้ แต่ยังเลือกผิดได้ ส่งคำตอบที่
confidenceต่ำไปโมเดลใหญ่หรือคน - รับข้อความอย่างเดียว
- สูงสุด 255 ตัวเลือกต่อ
choice, 2 ถึง 10 ระดับต่อscore, 64K โทเคนต่อคำขอ - จุดอ่อนที่รู้แล้วใน v0.1: ความรู้สึกในโซเชียลไทย (Wisesight 38.7), intent ภาษาอังกฤษละเอียด 77 หมวด (banking77 32.7), ใช่/ไม่ใช่แบบถาม-ตอบจากข้อความ (squad2 เท่าการสุ่ม) และการให้คะแนนความเกี่ยวข้องของบทสรุป v0.2 เพิ่มชุดข้อมูลความรู้สึกภาษาไทยสังเคราะห์และการเทรนรอบสอง มุ่งแก้ข้อแรก
- "System One" เป็นชื่อหมวด นี่ไม่ใช่ผลิตภัณฑ์ของ TypeSafe AI
ลิงก์
- น้ำหนักโมเดลและ model card: huggingface.co/iapp/OpenThai-SystemOne
- โค้ด สูตรการเทรน และเซิร์ฟเวอร์: github.com/iapp-technology/openthai-systemone
- เอกสาร API และสนามทดลอง: /docs/llm/openthai-systemone
- โมเดลอื่นในครอบครัว: OpenThai 2.0, OpenThai 2.0 Legal