Skip to main content

⚖️ OpenThai 2.0 Legal

OpenThai 2.0 Legal — โมเดลภาษาไทยด้านกฎหมายแบบเปิด พัฒนาบน NVIDIA Nemotron 30B-A3B

AI กฎหมายไทยที่จำตัวบทได้ขึ้นใจ — สร้างโดยคนไทย เพื่อคนไทย

openthai2.0-legal-thaillm-nemotron-3-nano-30b-a3b

โมเดลแบบเปิดที่ทดลองผลักขีดจำกัดว่า ความรู้กฎหมายไทยและการอ้างอิงระดับมาตราที่ตรวจสอบได้ จะไปได้ไกลแค่ไหนบนโมเดลขนาด 30B ที่นำไปติดตั้งใช้งานเองได้ ทั้งแบบมีและไม่มีระบบค้นคืนเอกสาร

เปิดเผยน้ำหนักโมเดลแบบเปิด · 24 กรกฎาคม 2569

พัฒนาโดยทีม OpenThai (AIEAT / iApp Technology) บนแพลตฟอร์ม NVIDIA NeMo ร่วมกับสถาบันข้อมูลขนาดใหญ่ (BDI) โครงการ ThaiLLM และ NVIDIA

🎮 ทดลองใช้สด ๆ ตรงนี้

เชื่อมต่อ RAG ในตัว — คำตอบอ้างอิงตัวบทกฎหมายจริง

API ที่โฮสต์ให้ค้นคืนจากคลังตัวบทกฎหมายไทย 39 ฉบับ กว่า 6,300 มาตรา (hybrid: BM25 + Qwen3 vector search + reranker) แล้วให้โมเดลตอบโดยอ้างอิงตัวบทฉบับปัจจุบัน เดโมจะแสดงมาตราที่ระบบเลือกมาไว้ใต้คำตอบทุกครั้ง ให้เห็นขั้นตอนการค้นคืนจริง ๆ หากต้องการเรียกโมเดลเปล่า ส่ง "rag": false (แท็บ "ปิดตำรา" ทำแบบนั้นให้ดูอยู่แล้ว)

⚖️

ทดลองใช้ OpenThai 2.0 Legal — สดจากโมเดลจริง

API ฟรี · 1 เดือน

ใช้ฟรีด้วย iApp API key ของคุณ ถึง 24 ส.ค. 2569

📚
เชื่อมต่อ RAG แล้ว — คำตอบอ้างอิงตัวบทกฎหมายจริง

API นี้ค้นคืนจากคลังตัวบทกฎหมายไทย 39 ฉบับ กว่า 6,300 มาตรา (hybrid: BM25 + vector search + reranker) แล้วให้โมเดลตอบโดยอ้างอิงตัวบทฉบับปัจจุบัน มาตราที่ระบบเลือกมาจะแสดงใต้คำตอบทุกครั้ง สลับไปโหมด "ปิดตำรา" (rag: false ใน API) เพื่อเปรียบเทียบกับโมเดลเปล่า

วิเคราะห์กฎหมายแบบความเรียงเต็มรูปแบบ พร้อมอ้างมาตราจากตัวบทฉบับปัจจุบันที่ระบบค้นให้

ลองตัวอย่าง:
🧑‍💻 มุมมองนักพัฒนา — คำสั่ง API เบื้องหลังเดโมนี้

คำสั่ง curl นี้อัปเดตสดตามคำถาม โหมด และตัวเลือกที่คุณตั้งด้านบน คัดลอกไปรันในเทอร์มินัลด้วย API key ของคุณได้เลย — เป็นคำขอเดียวกับที่หน้านี้ส่งจริง

คำขอ (curl)
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 KeysCreate New API Key (จำกัด 30 คำขอ/นาที) หลังหมดโปรโมชัน ยังใช้ต่อได้ในราคามาตรฐานเท่ากับ Thanoy คือ 0.01 / 0.02 IC ต่อ 1พันโทเคน เข้า/ออก

Base URLhttps://api.iapp.co.th/v3/llm/openthai2p0-legal
EndpointPOST /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. ตั้งอยู่บนแหล่งกฎหมายไทยจริง

ฝึกฝนบนตัวบทกฎหมายและคำพิพากษาที่เผยแพร่ต่อสาธารณะ โดยทุกคำตอบผูกกลับไปยังมาตราต้นทางเสมอ

📊 ผลการทดสอบมาตรฐาน

กระดานคะแนน: closed-book, open-book (RAG) และการเขียนวิเคราะห์ทางกฎหมาย เทียบกับ Qwen3.6-35B และโมเดลฐาน Nemotron

การประเมินOpenThai 2.0 LegalQwen3.6-35BNemotron-3-30B (ฐาน)
Closed-book: จำกฎหมายได้เอง
แพ่งและพาณิชย์: จำประมวลกฎหมายแพ่งและพาณิชย์ (n=3,729)0.070.020.001
ภาษี: จำประมวลรัษฎากร (n=50)0.400.360.31
Open-book: ใช้ตัวบทที่ให้มา (โหมด RAG)
แพ่งและพาณิชย์: อ้างมาตราที่ใช้บังคับจากบริบท (n=3,729)0.990.990.98
ภาษี (echo): อ้างมาตราที่ให้มาทั้งหมด (n=50)0.840.840.64
ภาษี (selection): อ้างเฉพาะมาตราที่ใช้บังคับ ท่ามกลางตัวเลือกลวง (n=50)0.690.640.45
การเขียนวิเคราะห์ (คำพิพากษาศาลฎีกา)
การอ้างอิง: ความถูกต้องของการอ้างอิงในบทวิเคราะห์ (n=72)0.250.090.02
ข้อวินิจฉัย: สรุปผลทางกฎหมายได้ถูกต้อง (n=72)0.570.500.31
ความครอบคลุม: ครอบคลุมประเด็นกฎหมายสำคัญ (n=72)0.600.550.27
คุณภาพการเขียน (n=72)0.460.430.13
เกณฑ์การให้คะแนน

คะแนนอยู่ระหว่าง 0 ถึง 1 ยิ่งสูงยิ่งดี แถวที่เป็นการอ้างอิงใช้ตัวให้คะแนน citation-F1 ของ NitiBench (รันครั้งเดียว temperature 0 ปิดโหมดคิด) ส่วนข้อวินิจฉัย ความครอบคลุม และคุณภาพการเขียน ตัดสินโดย Gemini 3.1 Flash Lite ทุกโมเดลถูกรันใหม่ทั้งหมดภายใต้โปรโตคอลเดียวกัน

นี่คือความสามารถในการจดจำกฎหมายไทยแบบ closed-book ที่ดีที่สุดเท่าที่เราวัดได้ในกลุ่มโมเดลที่นำไปติดตั้งใช้งานเองได้ โดยตรวจให้คะแนนด้วยโปรแกรม ไม่ใช้ AI เป็นผู้ตัดสิน ทั้งนี้ยังมีบริการคลาวด์แบบปิดที่ทำคะแนนได้สูงกว่า ข้อความนี้จึงจำกัดเฉพาะโมเดลที่ผู้ใช้รันบนเครื่องของตนเองได้

🔬 ฝึกฝนมาอย่างไร

ขั้นตอนการฝึก: โมเดลฐาน 30B → CPT → SFT → GRPO → เปิดตัว

สามขั้นตอนบนแพลตฟอร์ม NVIDIA NeMo แต่ละขั้นแก้ปัญหาคนละอย่าง

  1. CPT (การฝึกต่อเนื่อง) สอนตัวบทกฎหมาย โดยฝึกอ่านตัวบทเต็มของทุกมาตราทั้งสองทิศทาง ความรู้จึงฝังอยู่ในน้ำหนักโมเดล — 360,985 แบบฝึก ราว 800 ล้านโทเคนกฎหมายไทย
  2. SFT (การปรับแต่งแบบมีผู้สอน) สอนการตอบแบบอ้างอิงแหล่งที่มา ทุกคำตอบอยู่ในรูปแบบ JSON ที่กำหนดไว้ และอ้างเฉพาะมาตราที่ได้รับมา — 16,436 ตัวอย่างคำตอบข้อสอบและบทวิเคราะห์
  3. 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)

⚙️ ค่าที่แนะนำสำหรับการสร้างคำตอบ

กรณีใช้งานtemperaturetop_pmax_tokens (แนะนำ)โหมดคิด
ตอบพร้อมอ้างอิง (RAG หรือ closed-book)0.01.01024ปิด
ร่างบทวิเคราะห์กฎหมาย0.70.92048–4096เปิดหรือปิดก็ได้
แชตทั่วไป0.70.91024ปิด
  • ค่า 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 ไปใช้ในองค์กร หรืออยากให้ปรับจูนกับคลังเอกสารของคุณเอง