⚖️ OpenThai 2.0 Legal

AI กฎหมายไทยที่จำตัวบทได้ขึ้นใจ — สร้างโดยคนไทย เพื่อคนไทย
openthai2.0-legal-thaillm-nemotron-3-nano-30b-a3b
โมเดลแบบเปิดที่ทดลองผลักขีดจำกัดว่า ความรู้กฎหมายไทยและการอ้างอิงระดับมาตราที่ตรวจสอบได้ จะไปได้ไกลแค่ไหนบนโมเดลขนาด 30B ที่นำไปติดตั้งใช้งานเองได้ ทั้งแบบมีและไม่มีระบบค้นคืนเอกสาร
พัฒนาโดยทีม OpenThai (AIEAT / iApp Technology) บนแพลตฟอร์ม NVIDIA NeMo ร่วมกับสถาบันข้อมูลขนาดใหญ่ (BDI) โครงการ ThaiLLM และ NVIDIA
🎮 ทดล องใช้สด ๆ ตรงนี้
API ที่โฮสต์ให้ค้นคืนจากคลังตัวบทกฎหมายไทย 39 ฉบับ กว่า 6,300 มาตรา (hybrid: BM25 + Qwen3 vector search + reranker) แล้วให้โมเดลตอบโดยอ้างอิงตัวบทฉบับปัจจุบัน เดโมจะแสดงมาตราที่ระบบเลือกมาไว้ใต้คำตอบทุกครั้ง ให้เห็นขั้นตอนการค้นคืนจริง ๆ หากต้องการเรียกโมเดลเปล่า ส่ง "rag": false (แท็บ "ปิดตำรา" ทำแบบนั้นให้ดูอยู่แล้ว)
ทดลองใช้ OpenThai 2.0 Legal — สดจากโมเดลจริง
API ฟรี · 1 เดือนใช้ฟรีด้วย iApp API key ของคุณ ถึง 24 ส.ค. 2569
API นี้ค้นคืนจากคลังตัวบทกฎหมายไทย 39 ฉบับ กว่า 6,300 มาตรา (hybrid: BM25 + vector search + reranker) แล้วให้โมเดลตอบโดยอ้างอิงตัวบทฉบับปัจจุบัน มาตราที่ระบบเลือกมาจะแสดงใต้คำตอบทุกครั้ง สลับไปโหมด "ปิดตำรา" (rag: false ใน API) เพื่อเปรียบเทียบกับโมเดลเปล่า
วิเคราะห์กฎหมายแบบความเรียงเต็มรูปแบบ พร้อมอ้างมาตราจากตัวบทฉบับปัจจุบันที่ระบบค้นให้
🧑💻 มุมมองนักพัฒนา — คำสั่ง API เบื้องหลังเดโมนี้
คำสั่ง curl นี้อัปเดตสดตามคำถาม โหมด และตัวเลือกที่คุณตั้งด้านบน คัดลอกไปรันในเทอร์มินัลด้วย API key ของคุณได้เลย — เป็นคำขอเดียวกับที่หน้านี้ส่งจริง
curl -s https://api.iapp.co.th/v3/llm/openthai2p0-legal/chat/completions \
-H "Content-Type: application/json" \
-H "apikey: YOUR_IAPP_API_KEY" \
-d '{
"model": "openthai2.0-legal",
"rag": true,
"rag_inject": "system",
"messages": [
{
"role": "system",
"content": "You are a Thai legal expert. Answer with legal analysis and cite the relevant มาตรา."
},
{
"role": "user",
"content": "จำเลยขีดฆ่าและฉีกเอกสารหลักฐานแห่งหนี้ แม้ยังอ่านได้ ถือเป็นความผิดสำเร็จหรือเพียงพยายามกระทำผิด"
}
],
"temperature": 0,
"top_p": 1,
"max_tokens": 4096,
"chat_template_kwargs": {
"enable_thinking": true
}
}'ผลลัพธ์เป็นเครื่องมือช่วยตัดสินใจ มิใช่คำปรึกษาทางกฎหมาย โปรดตรวจสอบการอ้างอิงกับตัวบทฉบับปัจจุบันทุกครั้ง ใช้ฟรีด้วย iApp API key ถึง 24 ส.ค. 2569 หลังจากนั้นคิดราคามาตรฐาน 0.01/0.02 IC ต่อ 1พันโทเคน เข้า/ออก (เท่ากับ Thanoy Legal AI)
🔓 API โฮสต์ให้ฟรี — 1 เดือน (ต้องมี iApp API key ซึ่งสมัครฟรี)
ไม่อยากรัน GPU เอง เราโฮสต์ให้ Endpoint เป็นแบบ OpenAI-compatible และ ใช้ฟรีถึง 24 สิงหาคม 2569 เพียงมี iApp API key ซึ่งสมัครได้ฟรี: สมัครสมาชิก → API Keys → Create New API Key (จำกัด 30 คำขอ/นาที) หลังหมดโปรโมช ัน ยังใช้ต่อได้ในราคามาตรฐานเท่ากับ Thanoy คือ 0.01 / 0.02 IC ต่อ 1พันโทเคน เข้า/ออก
| Base URL | https://api.iapp.co.th/v3/llm/openthai2p0-legal |
| Endpoint | POST /chat/completions (OpenAI-compatible) |
| โมเดล | openthai2.0-legal |
| การยืนยันตัวตน | iApp API key (เฮดเดอร์ apikey หรือ Authorization: Bearer) · สมัครฟรี ใช้ฟรีถึง 24 ส.ค. 2569 |
| RAG | เปิดเป็นค่าเริ่มต้น — เซิร์ฟเวอร์ค้นคืนตัวบทแบบไฮบริดให้อัตโนมัติ ส่ง "rag": false เพื่อเรียกโมเดลเปล่า และ "rag_top_k" (1–20 ค่าเริ่มต้น 8) เพื่อปรับจำนวนมาตรา และ "rag_inject": "system" สำหรับโจทย์เขียนวิเคราะห์/ความเรียง (ค่าเริ่มต้น "user" เหมาะกับโหมดอ้างอิง JSON) |
ทุกคำตอบที่ใช้ RAG จะมีฟิลด์ retrieved_documents — มาตราที่ระบบใช้อ้างอิง (ชื่อกฎหมาย มาตรา ตัวบทปัจจุบัน และคะแนน reranker) นำไปแสดงหรือตรวจสอบในระบบของคุณได้ทันที:
from openai import OpenAI
client = OpenAI(base_url="https://api.iapp.co.th/v3/llm/openthai2p0-legal", api_key="YOUR_IAPP_API_KEY")
r = client.chat.completions.create(
model="openthai2.0-legal",
messages=[{"role": "user", "content": "ลักทรัพย์ในเวลากลางคืน ผิดมาตราใด"}],
max_tokens=1024,
# extra_body={"rag": False} # เรียกโมเดลเปล่า (ปิดตำรา)
)
print(r.choices[0].message.content)
print(r.model_extra.get("retrieved_documents")) # มาตราที่คำตอบ ใช้อ้างอิง
curl -s https://api.iapp.co.th/v3/llm/openthai2p0-legal/chat/completions \
-H "Content-Type: application/json" -H "apikey: YOUR_IAPP_API_KEY" \
-d '{"model":"openthai2.0-legal","messages":[{"role":"user","content":"ลักทรัพย์ในเวลากลางคืน ผิดมาตราใด"}],"max_tokens":1024}'
🔗 โฮสต์เองพร้อม RAG
โมเดลนี้เก่งที่สุดเมื่อตัวบทกฎหมายอยู่ในคำถาม: ความแม่นยำการอ้างอิงแบบ open-book สูงถึง 0.99 เทียบกับ 0.07–0.40 จากความจำล้วน — จึงเป็นเหตุผลที่ API ที่เราโฮสต์ให้มีระบบค้นคืนในตัวมาเลย หากคุณโฮสต์น้ำหนักโมเดลเปิดเอง ควรต่อระบบค้นคืนของคุณแบบเดียวกัน
- คู่มือฉบับเต็ม: Open WebUI และ OpenThaiRAG → — เชื่อมกับ UI แชตโฮสต์เองที่นิยมที่สุด หรือเฟรมเวิร์กไทยแท้ OpenThaiRAG (หน้าโครงการ) เสร็จภายในหนึ่งชั่วโมง
- ชุดข้อมูลแนะนำ: WangchanX-Legal-ThaiCCL-RAG สำหรับคู่ฝึก/ประเมิน, NitiBench สำหรับวัดผลไปป์ไลน์ และ krisdika.go.th สำหรับตัวบทฉบับทางการ
- ตัดชิ้นข้อมูลตามมาตรา — หนึ่งมาตราต่อชิ้น พร้อม metadata
law_name+sectionตรงกับสัญญาการอ้างอิงที่โมเดลถูกฝึกด้วย RL มาโดยตรง
โหมดคิดปิดเป็นค่าเริ่มต้น จึงได้คำตอบตรง ๆ ทันที หากต้องการเห็นการใ ห้เหตุผลทีละขั้น ให้เพิ่ม "chat_template_kwargs": {"enable_thinking": true} — การให้เหตุผลจะอยู่ใน content ภายในแท็ก <think>...</think>
✨ จุดเด่น
🔓 1. น้ำหนักโมเดลเปิด ติดตั้งใช้งานเองได้
โมเดล Mixture-of-Experts ขนาด 30B ที่ทำงานจริงเพียง ~3B พารามิเตอร์ต่อโทเคน รันได้บน GPU เพียงตัวเดียวที่มี VRAM ขั้นต่ำ 24 GB ด้วย NVFP4 (4-bit) สำนักงานกฎหมายและหน่วยงานต่าง ๆ จึงเก็บข้อมูลคดีที่เป็นความลับไว้บนโครงสร้างพื้นฐานของตนเองได้ทั้งหมด
📖 2. อ้างอิงตัวบทจริง ไม่ใช่การเดา
ทุกคำตอบส่งคืนชื่อกฎหมายและ มาตรา ที่ถูกต้องในรูปแบบ JSON ที่กำหนดไว้ตายตัว พร้อมนำไปต่อยอดกับระบบ RAG เครื่องมือร่างเอกสาร และผลิตภัณฑ์ legal-tech ได้ทันที
🧠 3. จำประมวลกฎหมายได้จากความจำ
เมื่อถามโดยไม่ใส่ตัวบทกฎหมายมาในคำถาม โมเดลยังจดจำและอ้างอิงมาตราที่ถูกต้องได้ โดยจำได้แม่นกว่าโมเดล Qwen3.6-35B ซึ่งใหญ่กว่ามาก ราว 4 เท่า ในหมวดประมวลกฎหมาย แพ่งและพาณิชย์
✍️ 4. เขียนได้อย่างนักกฎหมาย
ชนะ Qwen3.6-35B ครบทั้งสี่ด้าน ของการประเมินการเขียนวิเคราะห์ทางกฎหมาย ทั้งการอ้างอิง ข้อวินิจฉัย ความครอบคลุม และคุณภาพการเขียน โดยประเมินบนคำพิพากษาศาลฎีกาที่กันไว้ต่างหาก
🇹🇭 5. ตั้งอยู่บนแหล่งกฎหมายไทยจริง
ฝึกฝนบนตัวบทกฎหมายและคำพิพากษาที่เผยแพร่ต่อสาธารณะ โดยทุกคำตอบผูกกลับไปยังมาตราต้นทางเสมอ
📊 ผลการทดสอบมาตรฐาน

| การประเมิน | OpenThai 2.0 Legal | Qwen3.6-35B | Nemotron-3-30B (ฐาน) |
|---|---|---|---|
| Closed-book: จำกฎหมายได้เอง | |||
| แพ่งและพาณิชย์: จำประมวลกฎหมายแพ่งและพาณิชย์ (n=3,729) | 0.07 | 0.02 | 0.001 |
| ภาษี: จำประมวลรัษฎากร (n=50) | 0.40 | 0.36 | 0.31 |
| Open-book: ใช้ตัวบทที่ให้มา (โหมด RAG) | |||
| แพ่งและพาณิชย์: อ้างมาตราที่ใช้บังคับจากบริบท (n=3,729) | 0.99 | 0.99 | 0.98 |
| ภาษี (echo): อ้างมาตราที่ให้มาทั้งหมด (n=50) | 0.84 | 0.84 | 0.64 |
| ภาษี (selection): อ้างเฉพาะมาตราที่ใช้บังคับ ท่ามกลางตัวเลือกลวง (n=50) | 0.69 | 0.64 | 0.45 |
| การเขียนวิเคราะห์ (คำพิพากษาศาลฎีกา) | |||
| การอ้างอิง: ความถูกต้องของการอ้างอิงในบทวิเคราะห์ (n=72) | 0.25 | 0.09 | 0.02 |
| ข้อวินิจฉัย: สรุปผลทางกฎหมายได้ถูกต้อง (n=72) | 0.57 | 0.50 | 0.31 |
| ความครอบคลุม: ครอบคลุมประเด็นกฎหมายสำคัญ (n=72) | 0.60 | 0.55 | 0.27 |
| คุณภาพการเขียน (n=72) | 0.46 | 0.43 | 0.13 |
คะแนนอยู่ระหว่าง 0 ถึง 1 ยิ่งสูงยิ่งดี แถวที่เป็นการอ้างอิงใช้ตัวให้คะแนน citation-F1 ของ NitiBench (รันครั้งเดียว temperature 0 ปิดโหมดคิด) ส่วนข้อวินิจฉัย ความครอบคลุม และคุณภาพการเขียน ตัดสินโดย Gemini 3.1 Flash Lite ทุกโมเดลถูกรันใหม่ทั้งหมดภายใต้โปรโตคอลเดียวกัน
นี่คือความสามารถในการจดจำกฎหมายไทยแบบ closed-book ที่ดีที่สุดเท่าที่เราวัดได้ในกลุ่มโมเดลที่นำไปติดตั้งใช้งานเองได้ โดยตรวจให้คะแนนด้วยโปรแกรม ไม่ใช้ AI เป็นผู้ตัดสิน ทั้งนี้ยังมีบริการคลาวด์แบบปิดที่ทำคะแนนได้สูงกว่า ข้อความนี้จึงจำกัดเฉพาะโมเดลที่ผู้ใช้รันบนเครื่องของตนเองได้
🔬 ฝึกฝนมาอย่างไร

สามขั้นตอนบนแพลตฟอร์ ม NVIDIA NeMo แต่ละขั้นแก้ปัญหาคนละอย่าง
- CPT (การฝึกต่อเนื่อง) สอนตัวบทกฎหมาย โดยฝึกอ่านตัวบทเต็มของทุกมาตราทั้งสองทิศทาง ความรู้จึงฝังอยู่ในน้ำหนักโมเดล — 360,985 แบบฝึก ราว 800 ล้านโทเคนกฎหมายไทย
- SFT (การปรับแต่งแบบมีผู้สอน) สอนการตอบแบบอ้างอิงแหล่งที่มา ทุกคำตอบอยู่ในรูปแบบ JSON ที่กำหนดไว้ และอ้างเฉพาะมาตราที่ได้รับมา — 16,436 ตัวอย่างคำตอบข้อสอบและบทวิเคราะห์
- GRPO (การเรียนรู้แบบเสริมกำลัง) สอนความแม่นยำ โดยใช้ค่า citation F1 ของชุดทดสอบมาตรฐานเป็นรางวัล และหักคะแนนการอ้างอิงที่ผิดหรือขาดหาย — 8,568 คำถามที่ให้คะแนน ราว 68,500 ร่างคำตอบ
🧾 รายละเอียดโมเดล
| โมเดลฐาน | nvidia/Nemotron-3-Nano-Omni-30B-A3B-Reasoning (โมเดลต้นทางเป็นแบบมัลติโมดัล เรานำมาใช้เฉพาะส่วนประมวลผลข้อความ · สถาปัตยกรรม MoE ลูกผสม Mamba2-Transformer) |
| จำนวนพารามิเตอร์ | รวม 30B แต่ใช้งานจริงเพียง ~3B ต่อโทเคน (จึงเบาและเร็ว) |
| ความยาวบริบท | ทดสอบที่ 32,768 (สถาปัตยกรรมรองรับถึง 256k) |
| ภาษา | ไทย (หลัก), อังกฤษ (การให้เหตุผล) |
| รูปแบบไฟล์น้ำหนัก | bfloat16 (safetensors แบ่งเป็น 17 ไฟล์) · บีบอัดเป็น NVFP4 เพื่อรันบน GPU ตัวเดียว 24 GB ได้ |
| เครื่องมือฝึก | NVIDIA NeMo (Megatron-Bridge สำหรับ CPT/SFT, NeMo-RL สำหรับ GRPO) |
| การรันโมเดล | vLLM (ทดสอบแล้ว) และ NVIDIA NIM (รองรับ API แบบเดียวกับ OpenAI) |
| สัญญาอนุญาต | NVIDIA Open Model Agreement |
| สถานะ | เปิดเผยน้ำหนักโมเดล (open-weight) |
🧪 ประเมินผลอย่างไร
โหมด RAG หมายถึงการใส่มาตราที่คัดมาไว้ในคำถาม แล้วให้โมเดลอ้างอิงเฉพาะมาตราที่ใช้บังคับจริง ใช้ได้กับระบบค้นคืนเอกสารที่คุณมีอยู่แล้ว ไม่ผูกกับโมเดล embedding หรือ rerank ตัวใดเป็นการเฉพาะ และเนื่องจากโมเดลเก่งในโหมด closed-book ด้วย คำถามจำนวนมากจึงไม่จำเป็นต้องใช้ระบบค้นคืนเลย
| โหมด | ทดสอบอะไร | รูปแบบการทดสอบ |
|---|---|---|
| Open-book "echo" | กรณีดีที่สุดของ RAG: ได้เอกสารที่ถูกต้องพอดี | ให้เฉพาะมาตราที่เกี่ยวข้อง และต้องอ้างครบทุกมาตรา |
| Open-book "selection" | กรณีจริงของ RAG: ต้องปฏิเสธเอกสารที่ใกล้เคียงแต่ไม่ใช่ | ผสมมาตราที่เกี่ยวข้องกับที่ไม่เกี่ยวข้อง ต้องอ้างเฉพาะชุดที่ถูกต้อง |
| Closed-book | ความจำล้วน ไม่ มีการค้นคืน | ให้เฉพาะคำถาม ต้องระบุชื่อกฎหมายและมาตราจากน้ำหนักโมเดล |
| การเขียนวิเคราะห์ | งานเขียนกฎหมายขนาดยาว | คำพิพากษาศาลฎีกา 72 คดีที่กันไว้ แปลงเป็นคำถามเชิงวิเคราะห์ ให้คะแนน 4 ด้าน |
ผลลัพธ์จริงของโมเดล
ตัวอย่างทั้งหมดด้านล่างคือผลลัพธ์จริงของโมเดลบนคำถามชุดทดสอบที่กันไว้
Open-book selection — โหมดที่ยากที่สุด ให้มา 5 มาตรา ใช้บังคับจริง 3 มาตรา
คำถาม: บริษัทจัดตั้งขึ้นตามกฎหมายประเทศไทย ... ได้แต่งตั้งให้ผู้บริหารหรือพนักงานไปดำรงตำแหน่งกรรมการในบริษัทลูกในต่างประเทศ โดยจะได้รับค่าตอบแทนเงินเดือน สวัสดิการต่าง ๆ
คำตอบ: 1. บริษัทมีหน้าที่ต้องนำเงินได้ที่จ่ายจากหน้าที่งานที่ทำให้นายจ้างในประเทศไทยมารวมคำนวณเป็นรายได้เพื่อนำส่งภาษีหัก ณ ที่จ่าย ตามมาตรา 50 (1) แห่งประมวลรัษฎากร ... 2. ... หากไม่ได้นำเงินค่าตอบแทนที่ได้รับเข้ามาในประเทศไทยในปีภาษีเดียวกัน ผู้บริหารหรือพนักงานดังกล่าวไม่มีหน้าที่ต้องเสียภาษีเงินได้บุคคลธรรมดา
อ้างมาตรา 41, 50 และ 56 และไม่อ้างมาตรา 40 กับ 48 ได้ค่า citation F1 เท่ากับ 1.00
Closed-book — ไม่มีตัวบทกฎหมายในคำถามเลย
คำถาม: บริษัทฯ ได้นำเข้าสินค้าชื่อว่า "C." เพื่อใช้ทดแทน Choline Chloride ในอาหารสัตว์ โดยมีสรรพคุณใช้เพื่อช่วยในการทำงานของตับ ... ได้รับยกเว้นภาษีมูลค่าเพิ่มหรือไม่
คำตอบ: การนำเข้าสินค้าชื่อ "C." ... โดยบริษัทฯ เป็นผู้รับใบอนุญาตนำเข้าอาหารสัตว์ควบคุมเฉพาะ ถือเป็นการนำเข้าอาหารสัตว์ที่ได้รับยกเว้นภา ษีมูลค่าเพิ่มตามมาตรา 81 (1) (ง) และมาตรา 81 (2) (ก) แห่งประมวลรัษฎากร
จำทั้งมาตราและอนุมาตราได้จากน้ำหนักโมเดล โดยไม่มีตัวบทให้ ได้ค่า citation F1 เท่ากับ 1.00
การเขียนวิเคราะห์ — ให้คะแนน 4 ด้าน
คำถาม: จำเลยเป็นหนี้เงินกู้ยืมและเงินเล่นแชร์จำนวน 95,600 บาทแก่โจทก์ร่วม ซึ่งได้จดทะเบียนไว้ในสมุดบันทึกของโจทก์ร่วม โดยมีข้อความและตัวเลขเป็นหลักฐานแห่งหนี้ และจำเลยได้ลงลายมือชื่อรับรองข้อความและตัวเลขในเอกสารนั้นไว้ ต่อมาจำเลยได้ใช้ปากกาขีดฆ่าเป็นเครื่องหมายกากบาทและเครื่องหมายวงกลมลงบนข้อความและตัวเลข
คำตอบ (ตัดตอน): ศาลฎีกาพิพากษายืนตามศาลอุทธรณ์ โดยวินิจฉัยว่า การกระทำของจำเลยเป็นความผิดฐานทำให้เสียหายหรือทำลายเอกสารในประการที่น่าจะเกิดความเสียหายแก่ผู้อื่น ตามประมวลกฎหมายอาญา มาตรา 188 ... แม ้เอกสารที่ยังเหลืออยู่จะสามารถอ่านเข้าใจข้อความและตัวเลขเดิมได้ ก็ถือเป็นการทำให้เสียหายหรือทำลายเอกสารในประการที่น่าจะเกิดความเสียหายแก่ผู้อื่นแล้ว
🚀 การติดตั้งใช้งาน
โมเดลเปิด API ที่รองรับรูปแบบเดียวกับ OpenAI ทั้งสองเส้นทางด้านล่าง ตัวอย่างโค้ด Python ที่ตามมาจึงใช้ได้เหมือนกันทั้งคู่
vLLM (2 GPU แบบ tensor parallel)
vllm serve iapp/openthai2.0-legal-thaillm-nemotron-3-nano-30b-a3b \
--tensor-parallel-size 2 --trust-remote-code \
--max-model-len 32768 --enforce-eager
NVIDIA NIM
เนื่องจากโมเดลฐานเป็น NVIDIA Nemotron จึงใช้เส้นทาง NIM for LLMs ได้
docker run --rm --gpus all --shm-size=16g \
-v <path-to-model>:/model \
-e NIM_MODEL_NAME=/model \
-e NIM_SERVED_MODEL_NAME=openthai2.0-legal \
-p 8000:8000 \
nvcr.io/nim/nvidia/llm-nim:latest
โปรดใช้แท็กคอนเทนเนอร์และค่าตั้งค่าล่าสุดจาก NVIDIA NIM for LLMs catalog โดย NIM เปิด endpoint รูปแบบเดียวกับ OpenAI
vLLM 0.19.1, tensor-parallel 2 บน 2× H100 (80 GB), --max-model-len 32768, --gpu-memory-utilization 0.90, --enforce-eager, --trust-remote-code ทดสอบครบทั้งเปิดและปิดโหมดคิด และที่ temperature 0.0 กับ 0.7 สำหรับการรันบน GPU ตัวเดียว ให้ใช้น้ำหนักแบบ NVFP4 (4-bit) บนการ์ดที่มี VRAM อย่างน้อย 24 GB
🛠️ เริ่มต้นใช้งาน
การตอบพร้อมอ้างอิงตัวบท (โหมด RAG)
ตัวอย่างนี้รันจริงกับน้ำหนักโมเดลที่เผยแพร่ ผลลัพธ์ที่แสดงคือคำตอบจริงของโมเดล
from openai import OpenAI
client = OpenAI(base_url="http://localhost:8000/v1", api_key="none")
SYSTEM = ("You are OpenThaiGPT-Legal, an expert assistant on Thai law. You are given a legal "
"question and the exact statutory sections needed to answer it. Reason step by step in "
"English, then give the final answer in Thai. Cite ONLY sections present in the provided "
"context, using each section's exact law_name and bare section number (e.g. 132, 77/1). "
'Output the final answer as JSON: {"answer": "<Thai answer>", '
'"citations": [{"law": "<law_name>", "section": "<bare id>"}]}.')
USER = """Provided context:
<law law_name="ประมวลกฎหมายแพ่งและพาณิชย์" section="420">
ผู้ใดจงใจหรือประมาทเลินเล่อ ทำต่อบุคคลอื่นโดยผิดกฎหมายให้เขาเสียหาย ... จำต้องใช้ค่าสินไหมทดแทนเพื่อการนั้น
</law>
Question (ตอบเป็นภาษาไทย):
นาย ก. ขับรถโดยประมาทชนรถของนาย ข. เสียหาย นาย ก. ต้องรับผิดตามกฎหมายใด"""
r = client.chat.completions.create(
model="openthai2.0-legal-thaillm-nemotron-3-nano-30b-a3b",
messages=[{"role": "system", "content": SYSTEM}, {"role": "user", "content": USER}],
temperature=0.0, max_tokens=1024,
extra_body={"chat_template_kwargs": {"enable_thinking": False}})
print(r.choices[0].message.content)
ผลลัพธ์จริงของโมเดล
{"answer": "นาย ก. ต้องรับผิดตามประมวลกฎหมายแพ่งและพาณิชย์ มาตรา 420",
"citations": [{"law": "ประมวลกฎหมายแพ่งและพาณิชย์", "section": "420"}]}
โหมด closed-book
ไม่มีบริบทใด ๆ โมเดลจำมาตราได้จากน้ำหนักของตนเอง
SYSTEM = ("You are an expert on Thai law. You are given ONLY a legal question, with NO reference "
"material provided. Using your OWN knowledge of Thai statutes, answer in Thai and cite the "
"specific sections that apply (law name + bare section number, มาตรา). "
'Output ONLY a JSON object: {"answer":"<Thai answer>","citations":[{"law":"<law name>",'
'"section":"<bare section number e.g. 40 or 77/1>"}]}.')
USER = """บริษัท ก. (บริษัทฯ) ได้หารือเกี่ยวกับภาษีมูลค่าเพิ่ม กรณีการนำเข้าสินค้าที่ใช้ชื่อ C. โดยบริษัทฯ ได้นำเข้าสินค้าชื่อว่า "C." เพื่อใช้ทดแทน Choline Chloride ในอาหารสัตว์ ซึ่งบริษัทฯ เป็นผู้รับใบอนุญาตนำเข้าอาหารสัตว์ควบคุมเฉพาะ จึงขอหารือว่า การนำเข้าสินค้าดังกล่าวได้รับยกเว้นภาษีมูลค่าเพิ่มหรือไม่"""
r = client.chat.completions.create(
model="openthai2.0-legal-thaillm-nemotron-3-nano-30b-a3b",
messages=[{"role": "system", "content": SYSTEM}, {"role": "user", "content": USER}],
temperature=0.0, max_tokens=1024,
extra_body={"chat_template_kwargs": {"enable_thinking": False}})
print(r.choices[0].message.content)
โหมดเขียนว ิเคราะห์
ใช้ system prompt สั้น ๆ กับโจทย์ข้อสอบ โมเดลจะเขียนบทวิเคราะห์กฎหมายเต็มรูปแบบ โดยอ้างมาตราในเนื้อความแทน JSON จึงควรเพิ่มค่า max_tokens
SYSTEM = "You are a Thai legal expert. Answer the question with legal analysis and cite the relevant มาตรา."
USER = """จำเลยเป็นหนี้เงินกู้ยืมและเงินเล่นแชร์จำนวน 95,600 บาทแก่โจทก์ร่วม ซึ่งได้จดทะเบียนไว้ในสมุดบันท ึกของโจทก์ร่วม โดยมีข้อความและตัวเลขเป็นหลักฐานแห่งหนี้ ต่อมาจำเลยได้ใช้ปากกาขีดฆ่าและฉีกเอกสารจนขาดออกจากกัน แม้เอกสารที่ยังเหลืออยู่จะสามารถอ่านเข้าใจข้อความและตัวเลขเดิมได้ จำเลยมีความผิดฐานใด หรือเป็นเพียงการพยายามกระทำความผิดหรือไม่"""
r = client.chat.completions.create(
model="openthai2.0-legal-thaillm-nemotron-3-nano-30b-a3b",
messages=[{"role": "system", "content": SYSTEM}, {"role": "user", "content": USER}],
temperature=0.7, max_tokens=3000,
extra_body={"chat_template_kwargs": {"enable_thinking": False}})
print(r.choices[0].message.content)
⚙️ ค่าที่แนะนำสำหรับการสร้าง คำตอบ
| กรณีใช้งาน | temperature | top_p | max_tokens (แนะนำ) | โหมดคิด |
|---|---|---|---|---|
| ตอบพร้อมอ้างอิง (RAG หรือ closed-book) | 0.0 | 1.0 | 1024 | ปิด |
| ร่างบทวิเคราะห์กฎหมาย | 0.7 | 0.9 | 2048–4096 | เปิดหรือปิดก็ได้ |
| แชตทั่วไป | 0.7 | 0.9 | 1024 | ปิด |
- ค่า
max_tokensเป็นเพียงคำแนะนำ ไม่ใช่ขีดจำกัด ใช้ได้ถึงขนาดหน้าต่าง 32k และคำตอบจะจบเองตามธรรมชาติ (คำตอบแบบอ้างอิงมักไม่เกิน 700 โทเคน) เพิ่มได้ตามต้องการสำหรับบทวิเคราะห์ยาวหรือโหมดคิด - โหมดคิดรองรับเต็มรูปแบบ โมเดลจะให้เหตุผลเป็นภาษาอังกฤษในบล็อกความคิด แล้วตอบเป็นภาษาไทย ช่วยได้มากกับบทวิเคราะห์และคำถามซับซ้อน ตัวเลขในชุดทดสอบด้านบนใช้โหมดคิ ดแบบปิด ซึ่งเป็นเส้นทางที่ปรับจูนไว้สำหรับงานอ้างอิงมาตรา หากเปิดโหมดคิด ควรเผื่องบโทเคนราว 2 เท่า
- ตั้งค่า
--max-model-len 32768เสมอเมื่อรันโมเดล เพราะตัวบทกฎหมายจริง (เช่น ประมวลรัษฎากร) มักยาวเกินหน้าต่างบริบทที่เล็กกว่านี้
✅ เหมาะกับงานแบบใด
- ระบบค้นคืนและ RAG ด้านกฎหมาย — ใช้ร่วมกับระบบค้นคืนใดก็ได้ โมเดลจะอ้างเฉพาะมาตราที่ใช้บังคับจริงจากที่ให้มา
- เครื่องมือร่างและตรวจเอกสาร — รูปแบบ JSON สำหรับการอ้างอิงต่อยอดเป็นระบบอัตโนมัติได้ทันที
- ที่ปรึกษากฎหมายภายในองค์กรและงานกำกับดูแล — ติดตั้งใช้งานเอง ข้อมูลลูกความและคดีไม่ออกนอกองค์กร
- หน่วยงานภาครัฐ — ควบคุมถิ่นที่อยู่ของข้อมูลและการกำกับดูแลได้เองทั้งหมด
- งานวิจัยและการปรับแต่งโมเดล — น้ำหนักโมเดลเปิด พร้อมนำไปปรับให้เข้ากับสาขากฎหมายเฉพาะของคุณ
⚠️ ข้อจำกัดและการใช้งานอย่างรับผิดชอบ
- คุณภาพของระบบค้นคืนมีผลต่อผลลัพธ์โดยตรง หากได้มาตราที่ถูกต้อง การอ้างอิงจะเกือบสมบูรณ์ แต่ถ้าระบบค้นคืนส่งมาตราผิดมา คำตอบก็จะผิดตามไปด้วย การใช้งานจริงจึงควรจับคู่กับระบบค้นคืนที่ดีและติดตามคุณภาพอย่างต่อเนื่อง
- การแยกมาตราที่ใกล้เคียงกันคืองานที่ยากที่สุด การเลือกมาตราที่ใช้บัง คับท่ามกลางตัวเลือกที่คล้ายกัน (tax selection) เป็นด้านที่ได้คะแนนต่ำที่สุดของทุกโมเดล รวมถึงของเราด้วย จึงควรปรับจูนระบบค้นคืนและให้ผู้เชี่ยวชาญตรวจทานในงานที่มีความเสี่ยงสูง
- ผลลัพธ์แบบมีโครงสร้างคือจุดแข็ง รูปแบบ JSON สำหรับการอ้างอิงเหมาะกับงานอัตโนมัติและระบบ legal-tech ส่วนการแชตแบบอิสระรองรับได้แต่มีโครงสร้างน้อยกว่า
- ขอบเขตความรู้ ฝึกบนกฎหมายลายลักษณ์อักษรของไทย (ประมวลรัษฎากร ประมวลกฎหมายแพ่งและพาณิชย์ และกฎหมายที่เกี่ยวข้อง) และข้อหารือของกรมสรรพากร ความครอบคลุมในสาขาเฉพาะทางหรือการแก้ไขกฎหมายล่าสุดอาจยังบางกว่า และกฎหมายเปลี่ยนแปลงได้ตลอดเวลา
- ต้องมีผู้เชี่ยวชาญกำกับดูแล ผลลัพธ์เป็นเพียงเครื่องมือช่วยตัดสินใจ มิใช่คำปรึกษาทางกฎหมาย ผู้ประกอบวิชาชีพควรตรวจสอบการอ้างอิงทุ กครั้งกับตัวบทกฎหมายฉบับปัจจุบันก่อนนำไปใช้
- ที่มาของข้อมูล ข้อมูลฝึกส่วนที่เป็นบทวิเคราะห์บางส่วนมาจากเอกสารประกอบการสอบเนติบัณฑิต โปรดตรวจสอบเงื่อนไขการเผยแพร่ซ้ำให้เหมาะกับเขตอำนาจและกรณีใช้งานของท่าน
🙏 แหล่งที่มาและกิตติกรรมประกาศ
- โมเดลฐาน: NVIDIA Nemotron-3-Nano-Omni-30B-A3B-Reasoning ภายใต้ NVIDIA Open Model Agreement (โมเดลต้นทางเป็นแบบมัลติโมดัล เรานำเฉพาะส่วนประมวลผลข้อความมาฝึกต่อ)
- การประเมินผล: NitiBench (VISAI-AI, MIT) และข้อมูล SFT สร้างจาก WangchanX-Legal-ThaiCCL (VISTEC, MIT)
- พัฒนาโดยทีม OpenThai (AIEAT / iApp Technology) บนแพลตฟอร์ม NVIDIA NeMo ร่วมกับ สถาบันข้อมูลขนาดใหญ่ (BDI) โครงการ ThaiLLM และ NVIDIA
📬 ติดต่อเรา
ต้องการนำ OpenThai 2.0 Legal ไปใช้ในองค์กร หรืออยากให้ปรับจูนกับคลังเอกสารของคุณเอง
- อีเมล: sale@iapp.co.th · โทร: 086-322-5858
- Discord: ชุมชน iApp
- โมเดลเปิดอื่น ๆ: OpenThai Chinda 4B