Skip to main content

ChindaMT API แปลภาษาไทย-อังกฤษ

ChindaMT แปลระหว่างภาษาไทยและภาษาอังกฤษ และทำตามกฎที่คุณส่งมาพร้อมข้อความ ได้แก่ ต้องใช้คำศัพท์ใด เขียนด้วยน้ำเสียงแบบใด ผลลัพธ์ยาวได้เท่าใด และต้องคงรูปแบบใดไว้ คำแปลที่ถูกต้องทุกคำอาจยังไม่เหมาะกับงาน ซับไตเติลต้องใช้น้ำเสียงของตัวละคร สัญญาต้องใช้คำศัพท์ที่กำหนดไว้ แชตกลุ่มต้องใช้ภาษาพูดแบบเป็นกันเอง และแบรนด์ต้องมีสไตล์ของตัวเอง ChindaMT ได้รับการเทรนให้ทำตามคำสั่งเหล่านี้โดยไม่เสียคุณภาพการแปล งานวิจัยเบื้องหลังตีพิมพ์ที่ AACL-IJCNLP 2026 (Main Conference) และน้ำหนักโมเดลเปิดภายใต้สัญญาอนุญาต Apache 2.0 API นี้ให้บริการด้วย ChindaMT-4B

ทดลองใช้งาน​

เลือกตัวอย่างหรือพิมพ์ข้อความเอง เพิ่มกฎได้ตามต้องการ แล้วกดแปล เมื่อเลือก "แปลแบบไม่มีกฎด้วย เพื่อเปรียบเทียบ" หน้าทดลองจะแปลข้อความเดียวกันโดยไม่ใช้กฎของคุณอีกชุดหนึ่ง เพื่อให้เห็นว่ากฎเปลี่ยนผลลัพธ์อย่างไร การแปลแต่ละครั้งคิดค่าบริการ 1 IC ต่อ 400 ตัวอักษร

62 ตัวอักษร · 1 IC
เลือกตัวอย่างหรือพิมพ์ข้อความเอง เพิ่มกฎได้ตามต้องการ แล้วกดแปล
คำขอในรูปแบบ cURL
curl -X POST 'https://api.iapp.co.th/v3/store/text/mt/translate' \
  -H 'apikey: YOUR_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"text":"The meeting has been moved to Friday because the boss is busy.","source_lang":"en","target_lang":"th","rules":["Use a casual, friendly tone"]}'

เริ่มต้นใช้งาน​

ต้องมี API key จาก iApp AI Portal ส่งข้อความเป็น JSON พร้อม header apikey:

curl -X POST https://api.iapp.co.th/v3/store/text/mt/translate \
-H "apikey: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"text": "The meeting has been moved to Friday because the boss is busy.",
"source_lang": "en",
"target_lang": "th",
"rules": ["Use a casual, friendly tone"]
}'
{
"translation": "ประชุมย้ายไปวันศุกร์แล้วนะ เพราะเจ้านายยุ่งมาก",
"source_lang": "en",
"target_lang": "th",
"warnings": []
}

หากไม่มีกฎ ประโยคเดียวกันจะได้ภาษาไทยแบบภาษาเขียนทั่วไป: "การประชุมถูกเลื่อนไปเป็นวันศุกร์เนื่องจากเจ้านายยุ่ง" ตัวอย่างโค้ด Python และ JavaScript อยู่ในข้อมูลอ้างอิงทางเทคนิค

Endpoint และราคา​

Endpointรายละเอียดราคา
POST /v3/store/text/mt/translateแปลข้อความ 1 ข้อความ ไม่เกิน 100,000 ตัวอักษร1 IC ต่อ 400 ตัวอักษร
POST /v3/store/text/mt/translate/batchแปลรายการข้อความที่แยกจากกัน (ข้อความบน UI, เซลล์ในตาราง) ในคำขอเดียว รวมกันไม่เกิน 100,000 ตัวอักษร1 IC ต่อ 400 ตัวอักษร

การคิดค่าบริการนับตัวอักษรของ text หรือของ texts ทั้งหมด ตามที่คุณส่งมาทุกตัว แล้วปัดขึ้นเป็นทวีคูณถัดไปของ 400 ต่อคำขอ:

  • นับทุกอย่างในข้อความ รวมถึงช่องว่าง การขึ้นบรรทัดใหม่ และบรรทัดที่ส่งกลับมาโดยไม่เปลี่ยนแปลง
  • ไม่คิดค่ากฎ
  • ตัวอักษรนับเป็น Unicode code point สระและวรรณยุกต์ไทยแต่ละตัวจึงนับเป็น 1 ตัวอักษร: ที่ นับเป็น 3 ตัวอักษร
  • คิดค่าบริการเฉพาะคำตอบ 200 ที่สำเร็จ คำขอที่ถูกปฏิเสธหรือล้มเหลวไม่คิดค่าบริการ

ประโยคยาว 44 ตัวอักษรคิด 1 IC ย่อหน้ายาว 401 ตัวอักษรคิด 2 IC และคำขอเต็ม 100,000 ตัวอักษรคิด 250 IC จำนวนตัวอักษรที่คิดค่าบริการส่งกลับใน response header iapp-input-chars ก่อนประมวลผลคำขอ เกตเวย์จะตรวจว่ายอดเครดิตเพียงพอสำหรับค่าใช้จ่ายทั้งหมดของคำขอ หากไม่พอจะตอบ 402 โดยไม่แปล

กฎการแปล​

กฎคือคำสั่งสั้น ๆ เป็นภาษาอังกฤษธรรมดา ส่งเป็นรายการ string ในฟิลด์ rules กฎมีผลกับข้อความทั้งหมด (หรือกับทุกข้อความใน batch) ความยาวรวมไม่เกิน 2,000 ตัวอักษร ChindaMT ได้รับการเทรนกับกฎ 5 ประเภท:

ประเภทตัวอย่างกฎ
คำศัพท์Translate บาท as THB, Keep product names such as iApp Portal in English
น้ำเสียงและระดับภาษาUse a formal, polite tone suitable for a business email, Use a casual, friendly tone
ความยาวUse exactly one sentence, Keep it short enough for a subtitle
รูปแบบReturn only the translation, no quotes, Keep the numbering of the list
ภาษาAvoid English contractions, Write numbers as digits

กฎได้ผลดีที่สุดเมื่อเจาะจงและตรวจสอบได้จากผลลัพธ์ ตัวอย่างเช่น เมื่อใช้กฎ Keep product names such as iApp Portal, API Keys and Document OCR in English ประโยค "press Create Key to start using Document OCR" จะคง "Create Key" ไว้เป็นภาษาอังกฤษ หากไม่มีกฎนี้ ชื่อปุ่มจะถูกแปล สำหรับอภิธานศัพท์ขนาดยาว ให้ส่งเฉพาะคำที่ปรากฏในข้อความจริง แทนที่จะส่งทั้งรายการ

ความแม่นยำ​

ในบทความวิจัยที่ตีพิมพ์คู่กัน ChindaMT ได้รับการประเมินเทียบกับโมเดลแปลภาษาแบบเปิดอื่นที่มีขนาดเท่ากัน ทั้งสองทิศทาง (อังกฤษเป็นไทย 200 รายการ และไทยเป็นอังกฤษ 200 รายการต่อการทดสอบ) ทั้งแบบมีและไม่มีกฎ ตัวเลขคือสัดส่วนของการเปรียบเทียบที่โมเดลผู้ตัดสิน (judge model) เลือกคำแปลของ ChindaMT-4B โดยปรับแก้ผลจากความยาวของคำตอบแล้ว (50% หมายถึงเสมอกัน)

ChindaMT-4B เทียบกับแปลแบบไม่มีกฎแปลตามกฎ
Typhoon-Translate-1.5-4B61.8%68.4%
TranslateGemma-4B87.2%
MiLMMT-46-4B89.5%

ในการทดสอบแบบปกปิด (blind test) ผู้ใช้ภาษาไทยเป็นภาษาแม่ 3 คนเลือก ChindaMT-4B มากกว่า Typhoon-Translate-1.5-4B ใน 64% ของการแปลแบบไม่มีกฎ และ 69% ของการแปลตามกฎ (รวม 67% ชุดละ 100 รายการ) คุณภาพเมื่อไม่มีกฎไม่ลดลง: บน benchmark สาธารณะ FLORES-200 ChindaMT-4B ได้คะแนน 90.7 จากค่าเฉลี่ยของ CometKiwi, GEMBA-DA และ GEMBA-MQM สูงที่สุดในกลุ่มโมเดลขนาด 4B ถึง 9B ที่ทดสอบ และได้ 87.8 บนชุดข่าวของ WMT24++ เป็นอันดับสองรองจากโมเดลขนาด 7B ที่ได้ 89.4 ตารางฉบับเต็ม วิธีการ และชุดประเมินผลอยู่ในบทความวิจัย

ข้อจำกัดที่ทราบ:

  • โมเดลรองรับเฉพาะภาษาไทยและภาษาอังกฤษ
  • โมเดลทำตามกฎที่คำแปลอ้างอิงที่ดีสามารถทำได้ โทเคน placeholder ที่ต้องคงไว้อย่างเคร่งครัดและอภิธานศัพท์บังคับขนาดใหญ่อยู่นอกขอบเขตที่เทรนมา ควรตรวจผลลัพธ์ลักษณะนี้ก่อนนำไปใช้
  • เช่นเดียวกับการแปลด้วยเครื่องทุกระบบ โมเดลอาจสร้างข้อความที่อ่านลื่นไหลแต่ไม่ถูกต้อง ควรตรวจทานคำแปลสำหรับงานด้านกฎหมาย การแพทย์ และงานอื่นที่มีความเสี่ยงสูง ฟิลด์ warnings ระบุส่วนที่น่าจะผิด

ประสิทธิภาพ​

วัดผ่าน API gateway วันที่ 29 กันยายน 2569 ทีละ 1 คำขอ ค่ามัธยฐานจาก 3 ถึง 9 รอบ รวมเวลาเครือข่ายจากกรุงเทพฯ:

คำขอตัวอักษรเวลาไป-กลับ
1 ประโยค ไทยเป็นอังกฤษ820.36 วินาที
2 ประโยค อังกฤษเป็นไทย1830.38 วินาที
ข้อความเดียวกัน พร้อมกฎ 2 ข้อ1830.40 วินาที
1 ย่อหน้า อังกฤษเป็นไทย6530.60 วินาที
ประมาณ 1 หน้า อังกฤษเป็นไทย2,0280.71 วินาที
ประมาณ 1 หน้า ไทยเป็นอังกฤษ2,0440.61 วินาที
ประมาณ 5 หน้า อังกฤษเป็นไทย10,0711.72 วินาที
ขีดจำกัดค่า
ข้อความต่อคำขอ100,000 ตัวอักษร (text หรือ texts ทั้งหมดรวมกัน)
กฎต่อคำขอรวมไม่เกิน 2,000 ตัวอักษร
เวลาต่อคำขอ90 วินาที เกินจากนั้นตอบ 504
ขีดจำกัดอัตราการเรียก (ต่อ API key)5 ครั้งต่อวินาที 120 ครั้งต่อนาที 3,000 ครั้งต่อชั่วโมง

เวลาเพิ่มขึ้นช้ากว่าความยาวมาก: 5 หน้าใช้เวลาประมาณ 4 เท่าของ 1 ประโยค หากมีข้อความสั้นจำนวนมาก การส่งคำขอ /translate/batch ครั้งเดียวเร็วกว่าการส่งคำขอเดี่ยวหลายครั้ง

โมเดลแบบเปิด​

กลุ่มโมเดล ข้อมูลเทรน และชุดประเมินผล เปิดให้ทุกคนนำไปรันหรือพัฒนาต่อได้:

สิ่งที่เผยแพร่ลิงก์
น้ำหนักโมเดล ChindaMT-4B, 2B และ 0.8B (Apache 2.0)huggingface.co/iapp/ChindaMT-4B, 2B, 0.8B
ข้อมูลเทรน 1.97 ล้านรายการhuggingface.co/datasets/iapp/ChindaMT-Grounded
ชุดประเมินผลChindaMT-CoreEval, ChindaMT-BroadEval
โค้ดสำหรับคัดสรรข้อมูลgithub.com/iapp-technology/ChindaMT-RGDC
บทความวิจัยarxiv.org/abs/2609.34770

API แบบโฮสต์เป็นวิธีที่เร็วที่สุดในการใช้ ChindaMT-4B โดยไม่ต้องจัดหา GPU เอง สำหรับการติดตั้งแบบ on-premise พร้อมคำศัพท์เฉพาะขององค์กร ติดต่อ sale@iapp.co.th

ความปลอดภัยของข้อมูลและการปฏิบัติตามกฎระเบียบ​

  • บริการนี้สอดคล้องกับ GDPR และ PDPA
  • ข้อความถูกแปลบนเซิร์ฟเวอร์ที่ iApp ดูแลเองในประเทศไทย และไม่ถูกส่งไปยังผู้ให้บริการภายนอกรายใด
  • ระบบไม่เก็บข้อความที่คุณส่งมา บันทึกการทำงานของบริการเก็บเฉพาะทิศทางภาษาและจำนวนตัวอักษร ไม่เก็บเนื้อหา

ข้อมูลอ้างอิงทางเทคนิค​

การยืนยันตัวตน​

Base URL: https://api.iapp.co.th/v3/store/text/mt ส่ง API key ใน header apikey ทุกคำขอ

POST /translate​

แปลข้อความ 1 ข้อความ

ฟิลด์ชนิดจำเป็นรายละเอียด
textstringใช่ข้อความที่ต้องการแปล ไม่เกิน 100,000 ตัวอักษร ยาวหลายบรรทัดได้
source_lang"th" หรือ "en"ใช่ภาษาของ text
target_lang"th" หรือ "en"ใช่ภาษาที่ต้องการแปลเป็น ต้องไม่ซ้ำกับ source_lang
rulesarray of stringsไม่คำสั่งสำหรับโมเดล เช่น คำศัพท์ที่ต้องใช้ น้ำเสียง หรือรูปแบบผลลัพธ์ ตัวอย่าง ["Use a formal tone", "Translate บาท as THB"] ความยาวรวมไม่เกิน 2,000 ตัวอักษร
{
"text": "The weather is nice today.\nSee you tomorrow.",
"source_lang": "en",
"target_lang": "th"
}

คำตอบ:

{
"translation": "วันนี้สภาพอากาศดีครับ\nพบกันพรุ่งนี้ครับ",
"source_lang": "en",
"target_lang": "th",
"warnings": []
}
ฟิลด์รายละเอียด
translationข้อความที่แปลแล้ว
source_lang, target_langทิศทางที่ใช้
warningsส่วนของคำแปลที่อาจผิด ดูคำเตือน

POST /translate/batch​

แปลข้อความที่แยกจากกันหลายข้อความในคำขอเดียว เช่น ข้อความบน UI หรือเซลล์ในตาราง ทุกข้อความแปลในทิศทางเดียวกันและใช้กฎชุดเดียวกัน

ฟิลด์ชนิดจำเป็นรายละเอียด
textsarray of stringsใช่อย่างน้อย 1 ข้อความ รวมกันไม่เกิน 100,000 ตัวอักษร แต่ละข้อความยาวหลายบรรทัดได้
source_lang, target_lang, rulesเหมือน /translate และใช้กับทุกข้อความ
{
"texts": ["The weather is nice today.", "See you\ntomorrow."],
"source_lang": "en",
"target_lang": "th"
}

คำตอบ:

{
"translations": [
{"translation": "วันนี้สภาพอากาศดีครับ", "warnings": []},
{"translation": "พบกันใหม่\nพรุ่งนี้", "warnings": []}
],
"source_lang": "en",
"target_lang": "th"
}

translations มี 1 รายการต่อ 1 ข้อความ เรียงตามลำดับเดียวกับ texts และแต่ละรายการมีคำเตือนของข้อความนั้นเอง batch สำเร็จหรือล้มเหลวทั้งชุด: หากล้มเหลว จะไม่มีคำแปลส่งกลับและไม่คิดค่าบริการ ให้ส่งทั้ง batch ใหม่อีกครั้ง

การจัดการข้อความ​

  • บรรทัด: แต่ละบรรทัดถูกแปลแยกกัน การขึ้นบรรทัดใหม่ และช่องว่างที่ต้นและท้ายของแต่ละบรรทัดจะคงไว้ตามเดิม
  • บรรทัดที่คงไว้ตามเดิม: บรรทัดที่ไม่มีตัวอักษรของภาษาต้นทางจะส่งกลับโดยไม่เปลี่ยนแปลง เช่น บรรทัดว่าง บรรทัดที่มีแต่ตัวเลข หรือบรรทัดที่เป็นภาษาเป้าหมายอยู่แล้ว บรรทัดเหล่านี้ยังนับรวมในการคิดค่าบริการ

คำเตือน​

คำเตือนระบุส่วนของข้อความที่คำแปลอาจผิด คำขอยังคงสำเร็จ และ translation มีผลลัพธ์ที่ดีที่สุดสำหรับส่วนนั้น

{"reason": "truncated", "source": "…", "translation": "…"}
reasonความหมาย
truncatedคำแปลถูกตัดก่อนแปลเสร็จ
too_shortคำแปลสั้นกว่าต้นฉบับมาก บางส่วนอาจหายไป
wrong_languageคำแปลไม่ใช่ภาษาเป้าหมาย

source คือส่วนของข้อความของคุณ และ translation คือผลลัพธ์ที่ได้สำหรับส่วนนั้น

Response header​

Headerรายละเอียด
iapp-input-charsจำนวนตัวอักษรที่คิดค่าบริการสำหรับคำขอนี้ (เฉพาะคำตอบ 200)
X-Request-IDรหัสของคำขอ โปรดแนบรหัสนี้เมื่อแจ้งปัญหา

ข้อผิดพลาด​

สถานะสาเหตุวิธีแก้ไข
401ไม่มีหรือ apikey ไม่ถูกต้องตรวจสอบ key ที่หน้า API Keys ในพอร์ทัล
402ยอดเครดิตไม่พอสำหรับจำนวนตัวอักษรในคำขอนี้เติมเครดิต หรือส่งข้อความให้น้อยลงต่อคำขอ
413text ยาวเกิน 100,000 ตัวอักษร หรือ texts รวมกันเกินจำนวนนี้แบ่งข้อความส่งเป็นหลายคำขอ
422body ไม่ถูกต้อง: ใช้ภาษาอื่นที่ไม่ใช่ th หรือ en ใช้ภาษาเดียวกันทั้งสองฝั่ง rules ยาวเกิน 2,000 ตัวอักษร texts ว่าง หรือขาดฟิลด์ที่จำเป็นแก้ไขคำขอ
429เกินขีดจำกัดอัตราการเรียกของ API key นี้รอสักครู่แล้วลองใหม่
503โมเดลแปลภาษาไม่พร้อมให้บริการลองใหม่ภายหลัง
504การแปลไม่เสร็จภายใน 90 วินาทีลองใหม่ภายหลัง หรือส่งข้อความให้น้อยลงต่อคำขอ

สำหรับ 413, 503 และ 504 ฟิลด์ detail เป็นข้อความ:

{"detail": "text must be at most 100,000 characters"}

สำหรับ 422 ฟิลด์ detail เป็นรายการปัญหาของ body:

{
"detail": [
{
"type": "literal_error",
"loc": ["body", "target_lang"],
"msg": "Input should be 'th' or 'en'",
"input": "jp",
"ctx": {"expected": "'th' or 'en'"}
}
]
}

ข้อผิดพลาดไม่คิดค่าบริการ

ตัวอย่างโค้ด​

# One text, with rules
curl -X POST https://api.iapp.co.th/v3/store/text/mt/translate \
-H "apikey: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"text": "ผู้ซื้อต้องชำระเงินจำนวน 5,000 บาท ภายใน 7 วัน", "source_lang": "th", "target_lang": "en", "rules": ["Translate บาท as THB", "Use a formal tone"]}'

# Several texts in one request
curl -X POST https://api.iapp.co.th/v3/store/text/mt/translate/batch \
-H "apikey: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"texts": ["Save changes", "Delete account", "Are you sure?"], "source_lang": "en", "target_lang": "th", "rules": ["Use short, polite UI wording"]}'

บันทึกการเปลี่ยนแปลง​

เวอร์ชันวันที่การเปลี่ยนแปลง
v0.2.0-2026092929 ก.ย. 2569เปิดให้บริการสาธารณะครั้งแรก: แปลภาษาไทย-อังกฤษทั้งสองทิศทางพร้อมกฎ /translate และ /translate/batch คำเตือน รับข้อความสูงสุด 100,000 ตัวอักษรต่อคำขอ ราคา 1 IC ต่อ 400 ตัวอักษร