๑๒12สูตรภาษาไทย
The Thai recipe
TL;DR — สรุปใน 30 วินาทีtldr
บทนี้คือ "มงกุฎ" ของทั้งคู่มือ — วิธีทำให้โมเดลเปิดตอบภาษาไทย ดีพอจนแทนคลาวด์ที่เคยจ่ายเงินได้จริง ทุกค่าที่เห็นผ่านการทดสอบแบบมีเกณฑ์ (50 เคสจริง ให้คะแนนโดยกรรมการ 2 ตัว) ไม่ใช่ความรู้สึก
| ตัวชี้วัด | BOMLLM (Mac 27B MLX) | คลาวด์เดิม (GLM-4.5-Flash) | ผล |
|---|---|---|---|
| คะแนนรวม (1–10) | 7.24 | 6.02 | ชนะ 1.20 เท่า ✅ |
| คุณภาพถาม-ตอบ LINE | 8.93 | 6.33 | ชนะ 1.41 เท่า ✅ |
| ความเร็วคำตอบ (ค่ากลาง) | 5.2 วิ | 35.1 วิ | เร็ว ~7 เท่า ✅ |
| อัตรา error (30 วิ) | 4% (2/50) | 0% | ยอมรับตรง ๆ ⚠️ |
| ความบริสุทธิ์ไทย (thai_ratio) | 0.797 (0.832 แบบเข้ม) | 0.762 | สูงกว่า ✅ |
| ตัวจีนหลุด (ต่อ 100 คำตอบ) | 15 | 43 | น้อยกว่าครึ่ง ✅ |
เมื่อไหร่ควรใช้ / When to usewhen to use
ใช้สูตรนี้ทันทีที่โมเดลลงเครื่องแล้ว (บทที่ ๕) — และกลับมาอ้างอิงทุกครั้งที่เปลี่ยนโมเดล/เวอร์ชัน เพราะ "พารามิเตอร์ที่ดี" เป็นของเฉพาะคู่ (โมเดล + ชุดข้อมูล) ไม่ย้ายฟรีข้ามโมเดล
วิธีทำ / How-tohow to
ชั้นที่ 0 ก่อน — พื้นความปลอดภัยของ completion (สำคัญสุด แต่คนมองข้าม): อาการ "ภาษาไทยแรง ๆ อ่อน ๆ สลับกันไป" ที่เราเคยเจอ (thai_ratio แกว่ง 0.72–0.92) ต้นตอไม่ใช่ prompt แต่คือ คำตอบถูกตัด/ว่างเปล่า เพราะเพดานคำตอบ (num_predict) น้อยเกินไปชนกับ "ความคิดในใจ" ของโมเดล — เมื่อยกพื้นให้ถูก การแกว่งหดเหลือแค่แถบกว้าง 0.036 และคำตอบครบ 300/300:
# พื้นความปลอดภัย (ใส่ก่อนแต่ง prompt ใด ๆ)
num_ctx: 32768 # ต่ำกว่านี้ รายงานไทยยาว ๆ โดนตัดหาง
num_predict: 8192 # งานเขียนยาว
num_predict_chat: 2048 # แชทปกติ
num_predict_bot: 1024 # บอท LINE/Telegram (งบ UX 30 วินาที)
think: false # เฉพาะเส้นทางบอท — เหตุผลด้านล่างที่มา: การทดสอบ 300/300 completions, ก.ย. 2026 — รายละเอียดใน docs/thai.md
กับดัด "งบความคิด" ของบอท: โมเดลแบบ reasoning เปิด think คู่กับ num_predict น้อย จะเผาโควตาคำตอบทั้งหมดไปกับการคิดในใที่ แล้วส่งกลับ คำตอบว่างเปล่า — บอท LINE ของเราเคยโดนจริง ทางแก้คือ pin think:false + เพดานตอบตามขนาดงาน (ตั้งไว้แล้วในบทที่ ๗)
ชั้นที่ 1 — พารามิเตอร์ sampling ที่ผ่านประตู:
# Config A_bom_nothink — ตัวเดียวที่ผ่านประตู 0.78 จากการทดสอบ 4 คอนฟิก
temperature: 0.7
top_p: 0.8
top_k: 20
repeat_penalty: 1.05 # เกินนี้ทำลาย code block
# วัดจริง: thai_median 0.7821, Han 12 ครั้ง/28 คำตอบ, 17.92 tok/sสิ่งที่เคยตั้งสมติฐานแล้วถูกหักล้างด้วยการทดลอง: presence_penalty 1.5 "ไม่" ทำให้ไทยแย่ลง (A/B n=23 ไม่ต่างกัน), sampling สูตร DavidAU ไม่ชนะ incumbent (0.7500 vs 0.7821)
ชั้นที่ 2 — system prompt สูตร "Config G": โครงสร้าง 4 ส่วน (ตัวเต็ม 4,101 ตัวอักษร อยู่ใน repo และ Hugging Face bomllm/turbo-thai-config):
- ตัวตน + บุคลิก (ผู้ช่วยไทย สุภาพ โดเมนการเงิน/เทค)
- กฎภาษา: ตอบภาษาไทยเสมอ (เว้นแต่ผู้ใช้ใช้ภาษาอื่น) + ห้ามส่งออกอักษรจีนโดยเด็ดขาด (Han ban)
- กฎสไตล์: ตอบตรงคำถามก่อน ไม่มีน้ำ ไม่แต่งตัวเลข
- ตัวอย่างคู่ถาม-ตอบ 2 คู่ (few-shot: หนึ่งทั่วไป หนึ่งแบบรายงาน)
ผลวัดจริงของ Config G: thai_ratio +0.029 เหนือ prompt คู่แข่ง (CI 95% ไม่ครอบศูนย์) และอักษรจีนหลุดลงครึ่งหนึ่ง (35 → 15 ต่อ 100)
ถ้าติดตรงไหน → บทที่ ๑๖
ตัวอย่างการตั้งค่า / Config exampleconfig example
แปะลงใช้จริง — route ของ LiteLLM (บทที่ ๗) + ไฟล์ configs/sampling-recipe.yaml ใน repo คือ "ใบเสร็จ" ทุกค่า:
# สรุปสูตรสำเร็จสำหรับโมเดล 27B บน Mac (สูตรที่รันอยู่ใน production)
system_prompt : Config G (ไทยเท่านั้น + ห้ามอักษรจีน + few-shot 2 คู่)
temperature : 0.7 top_p: 0.8 top_k: 20
repeat_penalty: 1.05 presence_penalty: 0.0
num_ctx : 32768
num_predict : 8192 เขียนยาว / 2048 แชท / 1024 บอท
think : false บนเส้นทางบอท, true เฉพาะเส้นทาง deepอย่าลองผสมเองแบบสุ่ม — ทุกค่าในนี้มีการทดลองรองรับ และมันเจ็บจริงเวลาพัง (repeat_penalty 8.0 พิมพ์ผิดครั้งเดียว = ผลลัพธ์พังทั้งก้อน)
Pro tip — เคล็ดลับจากสนามจริงpro tip
คำถามที่พบบ่อย / FAQfaq
ถาม: แล้วถามภาษาอังกฤษล่ะ ตอบภาษาไหน? — สูตรมาตรฐานของเราตอบไทยก่อนเสมอ (เจ้าของธุรกิจเลือกแบบนี้) ถ้าอยากให้ภาษาอังกฤษเทคนิคตอบอังกฤษ มี override ระดับ route — แต่เตรียมใจว่าค่าความบริสุทธิ์ไทยจะขยับ
ถาม: โมเดลใหม่ออกมาต้องเริ่มใหม่ไหม? — โปรโตคอลเดิมรันซ้ำได้ (สคริปต์ bench_thai.py ใน repo) โมเดลท้าชิงต้องชนะ incumbent แบบ CI ไม่ครอบศูนย์จึงจะได้เลื่อน
คำถามอื่น ๆ ดูที่ FAQ
ดูเพิ่ม / See alsosee also
- บทที่ ๕ · Mac Mini — ที่อยู่ของโมเดลที่รับสูตรนี้
- บทที่ ๑๓ · บอท — ที่ think:false สร้างความต่าง
- Hugging Face — ชุดสูตรภาษาไทยฉบับเต็ม
ภาพประกอบ / Figuresfigures
