ข้ามไปยังเนื้อหาหลัก

โอเพนเวท

OpenThai 2.0 Legal

โมเดลกฎหมายไทยที่จำตัวบทได้ และอ้างมาตราที่ใช้

  • พารามิเตอร์30Bทำงานจริง 3B
  • รันเองได้ตั้งแต่24GB VRAM
  • Citation F1 เมื่อให้ตัวบท0.99
  • Context256Ktokens

ดาวน์โหลดโมเดลเรียกใช้ API ที่โฮสต์ให้

เปิดน้ำหนักโมเดลเมื่อ 24 กรกฎาคม 2569 ส่วน API ที่โฮสต์ให้คิด 0.01 / 0.02 IC ต่อ 1K tokens ของ Input / Output

ทำอะไรได้บ้าง​

  • อ้างมาตราที่ใช้ตอบเป็นภาษาไทย พร้อมชื่อกฎหมายและมาตราที่ใช้ เป็น JSON ที่โค้ดของคุณตรวจต่อได้
  • จำตัวบทได้แม้ไม่ใส่ตัวบทมาในคำถาม ก็จำประมวลกฎหมายแพ่งและพาณิชย์ได้ราว 4 เท่าของ Qwen3.6-35B
  • เขียนวิเคราะห์กฎหมายชนะ Qwen3.6-35B ทั้งการอ้างอิง ข้อวินิจฉัย ความครอบคลุม และคุณภาพการเขียน ประเมินจากคดีศาลฎีกา
  • รันบนเครื่องของคุณรันน้ำหนักแบบ 4-bit บน GPU 24 GB ตัวเดียว ข้อมูลคดีจึงไม่ออกนอกเครือข่ายของคุณ

ทดลองใช้​

ถามเป็นภาษาไทย คำตอบอ้างอิงกฎหมายไทย 39 ฉบับ ราว 6,300 มาตรา และแสดงมาตราที่ใช้ทุกครั้ง

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

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

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

Request (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
  },
  "stream": true,
  "stream_options": {
    "include_usage": true
  }
}'

ผลลัพธ์เป็นเครื่องมือช่วยตัดสินใจ มิใช่คำปรึกษาทางกฎหมาย โปรดตรวจสอบการอ้างอิงกับตัวบทฉบับปัจจุบันทุกครั้ง

ผลการทดสอบ​

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

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

วิธีรัน​

เรียกใช้ด้วย iApp API key (สมัครสมาชิก แล้วไปที่ API Keys) คิด 0.01 / 0.02 IC ต่อ 1K tokens ของ Input / Output จำกัด 30 requests ต่อนาที ระบบค้นคืนตัวบทเปิดเป็นค่าเริ่มต้น และมาตราที่ใช้จะส่งกลับมาใน retrieved_documents ดูพารามิเตอร์ทั้งหมดได้ที่ API reference

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")) # มาตราที่คำตอบใช้อ้างอิง

ค่าที่ต้องตั้งให้ถูก​

รูปแบบคำตอบSamplingMax tokens
อ้างอิงมาตรา เป็น JSONtemperature 0.0 ปิดโหมดคิด1,024
บทวิเคราะห์temperature 0.7, top_p 0.92,048 ถึง 4,096

ใส่ "chat_template_kwargs": {"enable_thinking": true} เพื่อดูการให้เหตุผลใน <think>...</think> และตั้ง --max-model-len ไว้ที่ 32768 ขึ้นไป เพราะตัวบทจริงของประมวลรัษฎากรยาวเกิน context window ที่เล็กกว่านี้

Prompt สำหรับคำตอบอ้างอิงแบบ JSON และบทวิเคราะห์

เมื่อใส่ตัวบทมาในคำถาม (โหมด 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"}]}

หากให้ตอบจากความจำโดยไม่ใส่ตัวบท ให้ส่ง system prompt นี้พร้อมคำถามอย่างเดียว:

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>"}]}.')

สำหรับบทวิเคราะห์ ให้ส่ง system prompt สั้น ๆ นี้พร้อมคำถาม โมเดลจะอ้างมาตราในเนื้อความแทน JSON:

SYSTEM = "You are a Thai legal expert. Answer the question with legal analysis and cite the relevant มาตรา."

หากต้องการต่อระบบค้นคืนของคุณเอง ทำตามคู่มือ Open WebUI และ OpenThaiRAG และตัดตัวบทเป็นหนึ่งมาตราต่อหนึ่ง chunk พร้อม metadata law_name และ section หากต้องการนำไปใช้ในองค์กร หรือปรับจูนกับคลังเอกสารของคุณเอง ติดต่อ sale@iapp.co.th หรือโทร 02-124-4041

ข้อจำกัด​

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

สัญญาอนุญาต​

NVIDIA Open Model Agreement โมเดลนี้ฝึกต่อจากส่วนประมวลผลข้อความของ NVIDIA Nemotron-3-Nano-Omni-30B-A3B-Reasoning ด้วย continued pretraining บนแบบฝึกตัวบท 360,985 ชุด ตามด้วย fine-tuning บนคำตอบข้อสอบและบทวิเคราะห์ 16,436 ตัวอย่าง แล้วจึง reinforcement learning บนคำถามที่ให้คะแนนแล้ว 8,568 ข้อ โดยใช้ citation F1 เป็นรางวัล อ่านรายละเอียดได้ในบทความเปิดตัว

ข้อมูลฝึกด้านบทวิเคราะห์บางส่วนมาจากเอกสารการสอบเนติบัณฑิต โปรดตรวจสอบเงื่อนไขการเผยแพร่ซ้ำให้เหมาะกับการใช้งานของคุณ ประเมินผลด้วย NitiBench (VISAI-AI, MIT) และข้อมูล fine-tuning สร้างจาก WangchanX-Legal-ThaiCCL (VISTEC, MIT) พัฒนาโดยทีม OpenThai (AIEAT และ iApp Technology) ร่วมกับสถาบันข้อมูลขนาดใหญ่ โครงการ ThaiLLM และ NVIDIA