OpenThai-SystemOne v1.0 เดโมแรก: สั่งคอมพิวเตอร์ด้วยเสียงภาษาไทย ไม่แตะเมาส์เลยสักครั้ง
ทำได้แล้ว! สั่งคอมพิวเตอร์ด้วย เสียงภาษาไทยล้วนๆ ไม่แตะเมาส์ ไม่แตะคีย์บอร์ดเลยสักครั้ง ค้นราคาทอง เปิด YouTube หาโรงพยาบาลใกล้บ้าน ไปจนถึงกดไลก์และคอมเมนต์ Facebook นี่คือเดโมแรกของ OpenThai-SystemOne v1.0 โมเดลโอเพนซอร์สขนาดไม่ถึง 1B ที่มองเห็นหน้าจอได้ ในคลิปผมพูดอย่างเดียว แล้วเครื่องก็ทำตาม
System 1 กับ System 2
สมองมนุษย์มีระบบความคิดสองแบบ System 1 ตัดสินใจเร็วตามสัญชาตญาณ เช่น เห็นปุ่มแล้วรู้ทันทีว่าต้องกดตรงไหน ส่วน System 2 คิดช้าและเป็นขั้นตอน เช่น การเขียนบทความ ซึ่ง LLM ทั่วไปทำงานแบบหลัง คือค่อยๆ พิมพ์คำตอบทีละ token
โมเดลแนว System One ทำงานต่างออกไป มันไม่เขียนข้อความเลย แต่รับ "สถานการณ์" กับ "คำถามที่มีตัวเลือก" แล้วตอบเป็นความน่าจะเป็นของแต่ละตัวเลือกในรอบเดียว (one forward pass) ตัวอย่างในต่างประเทศคือ Jev ของ TypeSafe AI ส่วน OpenThai-SystemOne คือโมเดลแนวเดียวกันที่ทีมเราพัฒนาขึ้นเองอย่างอิสระ เน้นภาษาไทย และเปิดเป็นโอเพนซอร์ส งานที่เหมาะมาก ได้แก่ การจัดหมวดหมู่ Ticket คัดกรองข้อความ จับเจตนาของผู้ใช้ และเลือก action ให้ agent ที่ควบคุมคอมพิวเตอร์ (computer use)
จาก v0.3 สู่ v1.0
| v0.3 (ใช้ได้แล้ววันนี้) | v1.0 (ในคลิปนี้ กำลังจะออก) | |
|---|---|---|
| Input | ข้อความหรือ JSON อย่างเดียว | ข้อความ + ภาพหน้าจอ |
| ขนาด | 0.8B พารามิเตอร์ | ไม่ถึง 1B |
| สถานะ | โอเพนซอร์ส Apache-2.0 | เดโมแรก |
v0.3 ต่อยอดจาก Qwen3.5-0.8B-Base ที่ผ่านการ continued pretraining ภาษาไทยราว 5 พันล้าน token แล้วเปลี่ยนส่วนหัวที่ใช้สร้างข้อความเป็นส่วนหัวที่เลือกตัวเลือกได้สูงสุด 255 ตัวในรอบเดียว v1.0 เพิ่มความสามารถสำคัญคือมองเห็นภาพหน้าจอ ซึ่งทำให้ควบคุมคอมพิวเตอร์ได้จริง คนสั่งจะเป็นเราที่พูดหรือพิมพ์ก็ได้ หรือจะให้ agent อีกตัวสั่งผ่านมันก็ได้
เบื้องหลังเดโม
- เสียงพูดแปลงเป็นข้อความ ด้วยระบบรู้จำเสียงภาษาไทย iApp ASR Realtime (Base model)
- OpenThai-SystemOne ดูคำสั่ง ภาพหน้าจอ และปุ่มต่างๆ บนจอ แล้วตัดสินใจว่าจะทำอะไร และกดตรงไหน
- ตัดสินใจจบในรอบเดียว ไม่ต้องรอพิมพ์คำตอบทีละคำเหมือน LLM ทั่วไป คำสั่งส่วนใหญ่จึงตอบสนองในเสี้ยววินาที
มุมขวาล่างของจอในคลิปจะเห็นกล่องสถานะที่บอกว่าระบบได้ยินคำสั่งว่าอะไร เลือก action ไหน และมั่นใจแค่ไหน
เช่น SEARCH 97% เราจึงระบุได้ตรงๆ ว่าจะเอาลิงก์แรก ลิงก์ที่สอง หรือปุ่มที่มีคำว่าอะไร แล้วระบบก็ทำตาม
ในคลิปสั่งอะไรไปบ้าง
| เวลา | คำสั่งเสียง | สิ่งที่เกิดขึ้น |
|---|---|---|
| 2:04 | "ค้นหาราคาทองวันนี้หน่อยซิ" → "เข้าลิงก์แรก" → "เลื่อนลงมา" → "ย้อนกลับ" | ค้นหา เปิดผลลัพธ์แรก เลื่อนหน้า แล้วย้อนกลับ |
| 2:41 | "YouTube" → "ค้นหาสวดมนต์ก่อนนอน" → "เล่นที่ลิงก์แรก" | เปิด YouTube ค้นหา แล้วเล่นคลิปแรก |
| 3:05 | "ช่วยค้นหาเนเน่ Royal ร้องเพลง" → "เลือกลิงก์แรก" | ค้นและเล่นเพลง |
| 3:35 | "อยากดูสภาพอากาศวันพรุ่งนี้" → "อยากหาโรงพยาบาลใกล้สุดแถวนี้" | ค้นพยากรณ์อากาศ แล้วเปิด Google Maps แสดงโรงพยาบาลใกล้ที่สุด |
| 4:13 | "เปิด Facebook" → "เลื่อนลง" → "กดไลก์" → "คอมเมนต์ว่าเจ๋งมากครับ" → "ออกจากโพสต์นี้" | ใช้ Facebook ครบด้วยเสียงอย่างเดียว |
| 4:42 | "เปิดเครื่องคิดเลข" → "เปิดเมล" → "ปิดเมล" → "ปิดโปรแกรม" | เปิดและปิดโปรแกรม |
ยังเป็นเดโมแรก จึงมีพลาดบ้าง เช่น ตอนสั่งหาโรงพยาบาล ระบบถอดเสียงคำว่า "โรงพยาบาล" ออกมาเป็น "เทศบาล" ผมต้องพูดซ้ำอีกสองรอบจึงได้ผลถูกต้อง และตอนนี้ยังมีกฎช่วยอยู่บางส่วน ทีมกำลังเทรนเวอร์ชันที่เข้าใจคำสั่งเสียงภาษาไทยได้โดยตรง
ทำไมผมถึงทำเรื่องนี้
เพราะยังมีคนไทยอีกมากที่ใช้มือไม่สะดวก ทั้งผู้พิการ ผู้สูงอายุ หรือใครก็ตามที่พิมพ์ไม่คล่อง ลองนึกภาพว่าแขนหักอยู่แต่ยังต้องใช้คอมพิวเตอร์ ถ้าแค่ พูดภาษาไทย แล้วท่องเว็บ ดู YouTube หาข้อมูล หรือคุยกับเพื่อนบน Facebook ได้ด้วยตัวเอง ชีวิตจะง่ายขึ้นอีกเยอะ และทั้งหมดนี้ทำงานด้วยโมเดลขนาดเล็ก ภาษาไทย ที่เปิดให้ทุกคนเอาไปใช้ได้
ลองใช้ v0.3 (text-only) ได้แล้ววันนี้
ติดตั้งด้วย pip แล้วถามได้หลายคำถามในครั้งเดียว:
pip install openthai-systemone
from openthai_systemone import SystemOneClient, Choice, Score, Noul
client = SystemOneClient("iapp/OpenThai-SystemOne")
resp = client.system_one(
state={"ticket": "ลูกค้าแจ้งว่าโดนหักเงินซ้ำสองครั้ง ขอเงินคืนด่วน โทรมาสามรอบแล้ว"},
questions={
"department": Choice(instructions="ทีมใดควรรับผิดชอบ", criteria={"billing": "การเงิน/ค่าบริการ", "technical": "ระบบใช้งานไม่ได้", "sales": None}),
"frustration": Score(instructions="ลูกค้าหงุดหงิดแค่ไหน", criteria=["ใจเย็น", "หงุดหงิดแต่สุภาพ", "โกรธมาก"]),
"refund_requested": Noul(instructions="ลูกค้าขอเงินคืนอย่างชัดเจนหรือไม่"),
},
)
print(resp.answers["department"].choice, resp.answers["department"].probabilities)
หรือรันบนเครื่องด้วย Ollama (เวอร์ชัน 0.35 ขึ้นไป) โดยไม่ต้องใช้ API key และข้อมูลไม่ออกจากเครื่อง:
ollama pull iapp/openthai-systemone
ตัวเลขจาก model card ที่น่าสนใจ:
- Benchmark สาธารณะ 13 ชุด: ค่าเฉลี่ย 74.3 ใกล้เคียง Nimble-9B (74.8) และ Jev 1.13.0 (76.0) ทั้งที่มีขนาดเพียง 0.8B
- ชุดทดสอบภาษาไทยที่ไม่เคยเห็นตอนเทรน: จับเจตนาผู้ใช้ MASSIVE-th (60 ตัวเลือก) ถูก 90.0% และจัดหมวดข่าว Prachathai ถูก 98.1%
- ความเร็ว: ราว 40 มิลลิวินาทีบน H100 และ 154 มิลลิวินาทีบน MacBook M3 Max สำหรับ Ticket ภาษาไทยที่ถาม 3 คำถาม
ข้อจำกัดที่ควรรู้: v0.3 รับข้อความอย่างเดียว ไม่ใช่โมเดล reasoning จึงไม่เหมาะกับงานคิดหลายขั้นหรือคำนวณ
และควรใช้ค่า confidence ส่งเคสที่ไม่มั่นใจต่อให้โมเดลที่ใหญ่กว่าหรือคน
ลิงก์ที่เกี่ยวข้อง: โมเดลบน Hugging Face · โค้ดบน GitHub · Ollama
ใครอยากให้ลองสั่งคำสั่งเสียงอะไรต่อ คอมเมนต์ไว้ใต้คลิปได้เลยครับ เดี๋ยวผมเลือกไปทดสอบให้ดู ทุกฟีดแบ็กเป็นกำลังใจให้ทีมพัฒนาโมเดลมาก
