สารบัญ — บทที่ ๑๒ / ๑๖
PART 1 · รู้จัก
๑ · BOMLLM คืออะไร
๒ · สถาปัตยกรรม 4 เครื่อง
๓ · ฮาร์ดแวร์ที่ต้องมี
PART 2 · ติดตั้ง
๔ · เตรียมเครือข่าย
๕ · Mac Mini = สมอง
๖ · VPS = หน้าบ้าน
๗ · .env และ litellm.yaml
๘ · Virtual keys และงบประมาณ
PART 3 · ใช้งาน
๙ · Open WebUI ครั้งแรก
๑๐ · ลงโมเดลเพิ่มและส่วนเสริม
๑๑ · ภาพและเสียง (optional)
▸ ๑๒ · สูตรภาษาไทย
PART 4 · ต่อช่องทาง
๑๓ · LINE และ Telegram bot
๑๔ · MT5 EA อ่านอย่างเดียว และ content pipeline
PART 5 · ดูแล
๑๕ · ความปลอดภัยและ monitoring
๑๖ · อัปเกรดและแก้ปัญหา
PART 3 · ใช้งาน

๑๒12สูตรภาษาไทย

The Thai recipe

TL;DR — สรุปใน 30 วินาทีtldr

บทนี้คือ "มงกุฎ" ของทั้งคู่มือ — วิธีทำให้โมเดลเปิดตอบภาษาไทย ดีพอจนแทนคลาวด์ที่เคยจ่ายเงินได้จริง ทุกค่าที่เห็นผ่านการทดสอบแบบมีเกณฑ์ (50 เคสจริง ให้คะแนนโดยกรรมการ 2 ตัว) ไม่ใช่ความรู้สึก

ตัวชี้วัดBOMLLM (Mac 27B MLX)คลาวด์เดิม (GLM-4.5-Flash)ผล
คะแนนรวม (1–10)7.246.02ชนะ 1.20 เท่า ✅
คุณภาพถาม-ตอบ LINE8.936.33ชนะ 1.41 เท่า ✅
ความเร็วคำตอบ (ค่ากลาง)5.2 วิ35.1 วิเร็ว ~7 เท่า ✅
อัตรา error (30 วิ)4% (2/50)0%ยอมรับตรง ๆ ⚠️
ความบริสุทธิ์ไทย (thai_ratio)0.797 (0.832 แบบเข้ม)0.762สูงกว่า ✅
ตัวจีนหลุด (ต่อ 100 คำตอบ)1543น้อยกว่าครึ่ง ✅

เมื่อไหร่ควรใช้ / 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):

  1. ตัวตน + บุคลิก (ผู้ช่วยไทย สุภาพ โดเมนการเงิน/เทค)
  2. กฎภาษา: ตอบภาษาไทยเสมอ (เว้นแต่ผู้ใช้ใช้ภาษาอื่น) + ห้ามส่งออกอักษรจีนโดยเด็ดขาด (Han ban)
  3. กฎสไตล์: ตอบตรงคำถามก่อน ไม่มีน้ำ ไม่แต่งตัวเลข
  4. ตัวอย่างคู่ถาม-ตอบ 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

★ PROD LESSON
อย่าตัดสินภาษาไทยด้วยตา — คนฟังแล้ว "รู้สึกว่าโอเค" ไม่นับ — ใช้ตัววัด (thai_ratio + การนับอักษรจีนหลุด) กับสถิติ (paired bootstrap 10,000 รอบ) เช่นเดียวกับที่ repo ทำ ไม่งั้นคุณจะเทรดคุณภาพจริงกับ placebo ไปเงียบ ๆ
★ PRO TIP
อักษรจีนหลุด 15/100 — ซื่อสัตย์ไว้ — แม้ Config G จะลดการหลุดจาก 43 เหลือ 15 แต่ไม่ใช่ศูนย์ — กรณี prompt ผสมภาษา+JSON เข้มงวดยังมีโอกาสเจอ วิธีกันเพิ่ม: กรอง output อีกชั้นฝั่งบอท หรือส่งเคสโหด ๆ ไป Tier 3

คำถามที่พบบ่อย / FAQfaq

ถาม: แล้วถามภาษาอังกฤษล่ะ ตอบภาษาไหน? — สูตรมาตรฐานของเราตอบไทยก่อนเสมอ (เจ้าของธุรกิจเลือกแบบนี้) ถ้าอยากให้ภาษาอังกฤษเทคนิคตอบอังกฤษ มี override ระดับ route — แต่เตรียมใจว่าค่าความบริสุทธิ์ไทยจะขยับ

ถาม: โมเดลใหม่ออกมาต้องเริ่มใหม่ไหม? — โปรโตคอลเดิมรันซ้ำได้ (สคริปต์ bench_thai.py ใน repo) โมเดลท้าชิงต้องชนะ incumbent แบบ CI ไม่ครอบศูนย์จึงจะได้เลื่อน

คำถามอื่น ๆ ดูที่ FAQ

ดูเพิ่ม / See alsosee also

ภาพประกอบ / Figuresfigures

ภาพผล benchmark จาก repository — เทียบคะแนนและความเร็วกับคลาวด์เดิม
ตารางผลทดสอบ 50 เคสจริง (แหล่งข้อมูล: benchmarks/ ใน repo — สคริปต์วัดแนบมาให้รันซ้ำเองได้)

วิดีโอ / Videovideo

🎬
วิดีโอกำลังผลิต — ติดตามที่ YouTube @icafefx
คลิปสาธิตทีละขั้นของบทนี้จะอัปโหลดที่ youtube.com/@icafefx เร็ว ๆ นี้