OpenThai 2.0 Legal ThaiLLM
OpenThai 2.0 Legal (iapp/openthai2.0-legal-thaillm-nemotron-3-nano-30b-a3b) คือโมเดลกฎหมายไทยแบบเปิด (open-weight) สร้างบน NVIDIA Nemotron-3-Nano-30B-A3B โดยทีม OpenThai (AIEAT / iApp Technology) — API ที่โฮสต์ให้นี้ เชื่อม RAG ในตัว: ทุกคำขอจะค้นคืนแบบไฮบริด (BM25 + Qwen3 vector + reranker) จากคลังตัวบทกฎหมายไทย 39 ฉบับ กว่า 6,300 มาตรา แล้วให้โมเดลตอบโดยอ้างอิงตัวบทฉบับปัจจุบัน พร้อมส่งมาตราที่ใช้กลับมาให้ตรวจสอบได้
- 📄 หน้าโมเดลและผลทดสอบ: OpenThai 2.0 Legal
- 🤗 ดาวน์โหลดน้ำหนักโมเดล: huggingface.co/iapp
- 🔗 โฮสต์เองพร้อม RAG ของคุณ: คู่มือ Open WebUI และ OpenThaiRAG
ทดลองใช้งาน
ทดลองใช้ 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
},
"stream": true,
"stream_options": {
"include_usage": true
}
}'ผลลัพธ์เป็นเครื่องมือช่วยตัดสินใจ มิใช่คำปรึกษาทางกฎหมาย โปรดตรวจสอบการอ้างอิงกับตัวบทฉบับปัจจุบันทุกครั้ง ใช้ฟรีด้วย iApp API key ถึง 24 ส.ค. 2569 หลังจากนั้นคิดราคามาตรฐาน 0.01/0.02 IC ต่อ 1พันโทเคน เข้า/ออก (เท่ากับ Thanoy Legal AI)
เริ่มต้นใช้งาน
-
สิ่งที่ต้องมี
- iApp API key ซึ่งสมัครได้ฟรี — สมัครสมาชิก → API Keys → Create New API Key
- คำถามกฎหมายภาษาไทย
-
Endpoint
Base URL https://api.iapp.co.th/v3/llm/openthai2p0-legalEndpoint POST /chat/completions(รูปแบบเดียวกับ OpenAI)โมเดล openthai2.0-legalการยืนยันตัวตน เฮดเดอร์ apikey: <key>หรือAuthorization: Bearer <key>(OpenAI SDK ใช้ได้ทันที)จำกัดอัตรา 30 คำขอ/นาที ต่อ IP (รุ่นฟรี) -
พารามิเตอร์ RAG (ส่วนเสริมของ API นี้จากรูปแบบ OpenAI มาตรฐาน)
ฟิลด์ ค่าเริ่มต้น ความหมาย ragtrueให้เซิร์ฟเวอร์ค้นตัวบทกฎหมายแล้วตอบโดยอ้างอิงตัวบท ส่ง falseเพื่อเรียกโมเดลเปล่า (ปิดตำรา)rag_top_k8 (สูงสุด 20) จำนวนมาตราที่ค้นได้และใส่ในพรอมป์ต (6 เมื่อใช้ rag_inject: "system")rag_inject"user""user"= รูปแบบ Provided context ที่โมเดลถูกฝึกมา เหมาะกับคำตอบ JSON อ้างอิงมาตรา ·"system"= แนบตัวบทเป็นข้อมูลอ้างอิงในพรอมป์ตระบบ เหมาะกับการเขียนวิเคราะห์/ความเรียงทุกคำตอบที่ใช้ RAG จะมีฟิลด์
retrieved_documents—{law, section, text, score}ของแต่ละมาตราที่คำตอบใช้อ้างอิง กรณีสตรีมมิ่ง ฟิลด์นี้จะมากับ SSE chunk แรก
ดู API key ของคุณหรือขอคีย์ใหม่ได้ที่หน้า จัดการ API Key
ตัวอย่างโค้ด
cURL — เปิด RAG (ค่าเริ่มต้น)
curl -X POST 'https://api.iapp.co.th/v3/llm/openthai2p0-legal/chat/completions' \
-H 'apikey: YOUR_API_KEY' \
-H 'Content-Type: application/json' \
-d '{
"model": "openthai2.0-legal",
"messages": [
{"role": "user", "content": "ลักทรัพย์ในเวลากลางคืน ผิดมาตราใด"}
],
"max_tokens": 1024
}'
ผลตอบกลับ (ตัดทอน)
{
"id": "chatcmpl-...",
"model": "openthai2.0-legal-thaillm-nemotron-3-nano-30b-a3b",
"choices": [
{"message": {"role": "assistant", "content": "ลักทรัพย์ในเวลากลางคืน เป็นการกระทำความผิดตามมาตรา ๓๓๕ (๑) แห่งประมวลกฎหมายอาญา ..."}}
],
"usage": {"prompt_tokens": 2874, "completion_tokens": 17},
"rag": true,
"retrieved_documents": [
{"law": "ประมวลกฎหมายอาญา", "section": "335", "text": "ผู้ใดลักทรัพย์ (๑) ในเวลากลางคืน ...", "score": 0.9989},
{"law": "ประมวลกฎหมายอาญา", "section": "334", "text": "ผู้ใดเอาทรัพย์ของผู้อื่น ...", "score": 0.9936}
]
}
Python — OpenAI SDK (ใช้ได้ทันที ผ่าน Bearer)
from openai import OpenAI
client = OpenAI(
base_url="https://api.iapp.co.th/v3/llm/openthai2p0-legal",
api_key="YOUR_API_KEY",
)
r = client.chat.completions.create(
model="openthai2.0-legal",
messages=[{"role": "user", "content": "ลักทรัพย์ในเวลากลางคืน ผิดมาตราใด"}],
max_tokens=1024,
# extra_body={"rag": False} # เรียกโมเดลเปล่า (ปิดตำรา)
# extra_body={"rag_inject": "system"} # โจทย์เขียนวิเคราะห์/ความเรียง
)
print(r.choices[0].message.content)
print(r.model_extra.get("retrieved_documents")) # มาตราที่คำตอบใช้อ้างอิง
สตรีมมิ่ง (SSE) — มาตราที่ค้นได้มากับ chunk แรก
stream = client.chat.completions.create(
model="openthai2.0-legal",
messages=[{"role": "user", "content": "อธิบายความผิดฐานลักทรัพย์โดยละเอียด"}],
max_tokens=2048,
stream=True,
)
for chunk in stream:
docs = chunk.model_extra.get("retrieved_documents")
if docs:
print("อ้างอิงจาก:", [(d["law"], d["section"]) for d in docs])
if chunk.choices and chunk.choices[0].delta.content:
print(chunk.choices[0].delta.content, end="", flush=True)
สัญญา JSON สำหรับการอ้างอิง (โหมด RAG ที่โมเดลถูกฝึกมา)
หากต้องการคำตอบแบบอ่านด้วยเครื่อง ใช้พรอมป์ตระบบที่โมเดลถูกฝึกด้วย RL มาโดยตรง — โมเดลจะอ้างเฉพาะมาตราที่อยู่ในบริบทที่ค้นได้เท่านั้น:
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>"}]}.'
)
r = client.chat.completions.create(
model="openthai2.0-legal",
messages=[
{"role": "system", "content": SYSTEM},
{"role": "user", "content": "หมิ่นประมาทโดยการโฆษณา มีความผิดตามมาตราใด"},
],
temperature=0.0, max_tokens=1024,
extra_body={"chat_template_kwargs": {"enable_thinking": False}},
)
# -> {"answer": "...มาตรา 328", "citations": [{"law": "ประมวลกฎหมายอาญา", "section": "328"}]}
ความสามารถ
จุดเด่น
- RAG ในตัวฝั่งเซิร์ฟเวอร์ — ค้นคืนไฮบริด BM25 + vector พร้อม reranker จากตัวบทฉบับปัจจุบันของกฎหมายไทย 39 ฉบับ (ประมวลกฎหมายอาญา ป.พ.พ. วิ.แพ่ง วิ.อาญา ประมวลรัษฎากร และอีก 34 ฉบับ) ตรวจสอบอัตราโทษหลังแก้ไขปี 2560 แล้ว
- อ้างอิงตรวจสอบได้ — ชื่อกฎหมาย + มาตรา ทั้งแบบความเรียงและแบบ JSON คงรูป พร้อม
retrieved_documentsให้ตรวจสอบทุกคำตอบ - โหมดให้เหตุผล — เพิ่ม
"chat_template_kwargs": {"enable_thinking": true}เพื่อดูการให้เหตุผลทีละขั้นใน<think>...</think> - น้ำหนักโมเดลเปิด — ดาวน์โหลดไปโฮสต์เองได้บน GPU ตัวเดียว 24 GB (NVFP4)
ตัวอย่างการใช้งาน
- แชตบอตและเครื่องมือค้นคว้ากฎหมาย — คำตอบอ้างอิงตัวบทที่ผู้ใช้ตรวจสอบได้
- ผู้ช่วยร่างและตรวจเอกสาร — สัญญา JSON นำไปต่อยอดเป็นระบบอัตโนมัติได้ทันที
- ผลิตภัณฑ์ legal-tech — แสดงแผง
retrieved_documentsให้ผู้ใช้เห็นว่าโมเดลตอบจากตัวบทใด
ค่าที่แนะนำ
| งาน | temperature | โหมดคิด | rag_inject |
|---|---|---|---|
| ตอบอ้างอิงมาตรา (JSON) | 0.0 | ปิด | user (ค่าเริ่มต้น) |
| เขียนวิเคราะห์กฎหมาย | 0.0 | เปิด | system |
| สนทนาทั่วไป | 0.7 | ตามต้องการ | user (ค่าเริ่มต้น) |
ผลลัพธ์ต้องได้รับการตรวจสอบกับตัวบทกฎหมายฉบับปัจจุบันโดยผู้ประกอบวิชาชีพก่อนนำไปใช้ คุณภาพการค้นคืนมีผลต่อคำตอบโดยตรง — ฟิลด์ retrieved_documents มีไว้เพื่อให้ตรวจสอบได้ทุกคำตอบ