วิธีการแปล
Champollion รองรับวิธีการแปลสิบวิธี แต่ละคู่ภาษาสามารถใช้วิธีการที่แตกต่างกันได้ — คุณไม่จำเป็นต้องยึดติดกับวิธีเดียวสำหรับทั้งโปรเจกต์
การเปรียบเทียบวิธีการ
ผู้ให้บริการ LLM
เน้นคุณภาพ รองรับ Markdown และ coaching เหมาะที่สุดสำหรับโปรเจกต์ที่มีเนื้อหาจำนวนมาก
| วิธีการ | Key | สิ่งที่ทำ |
|---|---|---|
llm (ค่าเริ่มต้น) | OPENROUTER_API_KEY | LLM ผ่าน OpenRouter — รองรับ 200+ โมเดล พร้อม auto-routing |
llm-coached | OPENROUTER_API_KEY | LLM + กฎไวยากรณ์ พจนานุกรม และหมายเหตุสไตล์ |
openai | OPENAI_API_KEY | เรียกใช้ OpenAI API โดยตรง (gpt-4o, gpt-4o-mini) |
anthropic | ANTHROPIC_API_KEY | เรียกใช้ Anthropic API โดยตรง (Claude Sonnet, Haiku, Opus) |
gemini | GEMINI_API_KEY | เรียกใช้ Google Gemini API โดยตรง (Flash, Pro) — มี free tier |
MT แบบดั้งเดิม
เน้นความเร็วและต้นทุน เหมาะที่สุดสำหรับคู่ key-value ปริมาณสูง
| วิธีการ | Key | สิ่งที่ทำ |
|---|---|---|
google-translate | GOOGLE_TRANSLATE_API_KEY | Google Cloud Translation API v2 (130+ ภาษา) |
deepl | DEEPL_API_KEY | DeepL API พร้อมรองรับ glossary (30+ ภาษา) |
microsoft-translator | MICROSOFT_TRANSLATOR_API_KEY | Azure Cognitive Services Translator (100+ ภาษา) |
libretranslate | (self-hosted) | LibreTranslate แบบ self-hosted (AGPL, ฟรี) |
โครงสร้างพื้นฐาน
| วิธีการ | Key | สิ่งที่ทำ |
|---|---|---|
api | (per provider) | HTTP client แบบบางสำหรับ REST endpoint การแปลใดก็ได้ |
แผนผังการตัดสินใจ
llm — การแปลด้วย LLM (ค่าเริ่มต้น)
แปลผ่าน LLM ใดก็ได้บน OpenRouter นี่คือวิธีการเริ่มต้นและมีความยืดหยุ่นสูงที่สุด
วิธีการทำงาน:
- จัดกลุ่ม key (ค่าเริ่มต้น 80 key/กลุ่ม) พร้อมคำสั่ง register และ context
- ส่งไปยัง OpenRouter ในรูปแบบ structured prompt
- แยกวิเคราะห์ JSON response
- ตรวจสอบการแปลแต่ละรายการผ่าน quality gate
- บันทึกการแปลที่ผ่านการตรวจสอบ ลองใหม่หรือปฏิเสธรายการที่ล้มเหลว
เมื่อใดควรใช้: เหมาะกับโปรเจกต์ส่วนใหญ่ โดยเฉพาะเว็บไซต์ที่มีเนื้อหา Markdown จำนวนมาก ซึ่ง code block และ shortcode จำเป็นต้องได้รับการป้องกัน
การกำหนดค่า:
{
"defaultMethod": "llm",
"model": "google/gemini-3.5-flash"
}
llm-coached — การแปลด้วย LLM แบบ Coached
เหมือนกับ llm แต่มีการฉีดกฎไวยากรณ์ พจนานุกรมคำศัพท์ และหมายเหตุสไตล์เข้าไปในทุก prompt
วิธีการทำงาน:
- โหลดข้อมูล coaching จาก
.champollion/coaching/<locale>.jsonหรือไดเรกทอรีcoaching/ของ plugin - ฉีดกฎไวยากรณ์ คำศัพท์จากพจนานุกรม และหมายเหตุสไตล์เข้าไปใน system prompt
- คำศัพท์ในพจนานุกรมที่ตรงกับ source key จะถูกรวมเป็นคำศัพท์บังคับ
- การแปลดำเนินการเหมือนกับ
llmโดยข้อมูล coaching ช่วยเพิ่มความแม่นยำ
เมื่อใดควรใช้: ภาษาที่มีทรัพยากรน้อย คำศัพท์เฉพาะทาง (กฎหมาย การแพทย์) ภาษาทางการ หรือกรณีที่ผลลัพธ์จาก LLM ทั่วไปไม่แม่นยำเพียงพอ
รูปแบบข้อมูล coaching:
{
"grammar_rules": [
"French adjectives agree in gender and number with the noun they modify",
"Use 'vous' for formal contexts, 'tu' for informal"
],
"dictionary": {
"dashboard": "tableau de bord",
"deployment": "déploiement",
"settings": "paramètres"
},
"style_notes": "Prefer active voice. Avoid anglicisms where a native French term exists."
}
ดูเพิ่มเติม: คู่มือภาษาที่มีทรัพยากรน้อย
openai — เรียกใช้ OpenAI API โดยตรง
แปลโดยตรงผ่าน OpenAI Chat Completions API โดยไม่ผ่าน OpenRouter — ใช้ key ของคุณเอง บัญชีของคุณเอง และ dashboard การใช้งานของคุณเอง
โมเดล: gpt-4o (ค่าเริ่มต้น), gpt-4o-mini
คุณสมบัติ:
- ✅ รองรับ Markdown (การแปลเนื้อหา)
- ✅ รองรับ coaching (กฎไวยากรณ์ การแทนที่คำในพจนานุกรม หมายเหตุสไตล์)
- ✅ JSON mode สำหรับ output แบบ key-value ที่มีโครงสร้าง
- ✅ Exponential backoff พร้อม retry
การกำหนดค่า:
{
"pairs": {
"en:fr": { "method": "openai", "model": "gpt-4o-mini" }
}
}
export OPENAI_API_KEY=sk-proj-...
รับ key ของคุณได้ที่ platform.openai.com/api-keys
anthropic — เรียกใช้ Anthropic API โดยตรง
แปลโดยตรงผ่าน Anthropic Messages API ใช้พารามิเตอร์ system สำหรับข้อมูล coaching เพื่อเปิดใช้งาน prompt caching ของ Anthropic
โมเดล: claude-sonnet-4-6 (ค่าเริ่มต้น), claude-haiku-4-5, claude-opus-4-7
คุณสมบัติ:
- ✅ รองรับ Markdown (การแปลเนื้อหา)
- ✅ รองรับ coaching (กฎไวยากรณ์ การแทนที่คำในพจนานุกรม หมายเหตุสไตล์)
- ✅ System prompt caching (กระจายต้นทุน coaching ข้ามหลาย batch)
- ✅ Exponential backoff พร้อม retry
การกำหนดค่า:
{
"pairs": {
"en:ja": { "method": "anthropic", "model": "claude-haiku-4-5" }
}
}
export ANTHROPIC_API_KEY=sk-ant-...
รับ key ของคุณได้ที่ console.anthropic.com
gemini — เรียกใช้ Google Gemini API โดยตรง
แปลโดยตรงผ่าน Google Gemini generateContent API มี free tier — จุดเริ่มต้นที่ดีที่สุดสำหรับการใช้งานโดยไม่มีค่าใช้จ่าย
โมเดล: gemini-2.5-flash (ค่าเริ่มต้น), gemini-2.5-pro
คุณสมบัติ:
- ✅ รองรับ Markdown (การแปลเนื้อหา)
- ✅ รองรับ coaching (กฎไวยากรณ์ การแทนที่คำในพจนานุกรม หมายเหตุสไตล์)
- ✅ JSON response mode ผ่าน
responseMimeType - ✅ Free tier (โควต้ารายวันที่ใจกว้าง)
- ✅ Exponential backoff พร้อม retry
การกำหนดค่า:
{
"pairs": {
"en:ko": { "method": "gemini", "model": "gemini-2.5-pro" }
}
}
export GEMINI_API_KEY=AI...
รับ key ของคุณได้ที่ aistudio.google.com/apikey
การตรวจสอบโมเดล
ผู้ให้บริการ LLM โดยตรง (openai, anthropic, gemini) จะตรวจสอบ string โมเดลของคุณในการใช้งานครั้งแรก ซึ่งช่วยตรวจจับข้อผิดพลาดสามประเภท:
รูปแบบ method ไม่ถูกต้อง — ใช้ path โมเดลแบบ OpenRouter กับผู้ให้บริการโดยตรง:
[WARN] OpenAI: model "google/gemini-3.5-flash" looks like an OpenRouter path.
Direct providers use bare model names (e.g., "gpt-4o").
To use OpenRouter models, set method to 'llm' instead.
ผู้ให้บริการไม่ถูกต้อง — ใช้โมเดลจากผู้ให้บริการอื่น:
[WARN] Gemini: model "claude-sonnet-4-6" is an Anthropic model.
This provider (gemini) cannot serve Anthropic models.
Use --method anthropic or set "method": "anthropic" in config.
โมเดลที่เลิกใช้แล้วหรือสะกดผิด — เมื่อเรียก API ครั้งแรก champollion จะดึงรายการโมเดลล่าสุดจากผู้ให้บริการและตรวจสอบโมเดลของคุณกับรายการนั้น:
[WARN] Gemini: model "gemini-1.5-flash" not found in available models.
Similar models: gemini-2.0-flash, gemini-2.5-flash, gemini-2.5-pro
The API call will proceed — the provider will give the final verdict.
:::note สิ่งเหล่านี้คือคำเตือน ไม่ใช่ข้อผิดพลาด การตรวจสอบโมเดลจะบันทึกคำเตือนแต่ไม่บล็อกการเรียก API การตัดสินขั้นสุดท้ายมาจาก provider API — ชื่อโมเดลในอนาคตอาจตรงกับรูปแบบที่แตกต่างออกไป และเราไม่ต้องการให้ heuristics เป็นตัวกำหนด :::
google-translate — Google Cloud Translation API
การเชื่อมต่อโดยตรงกับ Google Cloud Translation API v2 ใช้ REST API — ไม่ต้องใช้ SDK หรือ service account เพียงแค่ API key
เมื่อใดควรใช้: คู่ string key-value ปริมาณสูงที่ความเร็วและต้นทุนสำคัญกว่าความละเอียดอ่อน รองรับ 130+ ภาษาทันที
ข้อจำกัด:
- ⚠️ ไม่รองรับ Markdown จะทำให้ code block, shortcode และตัวแปร interpolation เสียหาย
- ไม่มีการควบคุม register/tone
- ไม่มี coaching หรือการบังคับใช้คำศัพท์
npx champollion sync --method google-translate
:::tip การตรวจจับอัตโนมัติ
หากตั้งค่าเฉพาะ GOOGLE_TRANSLATE_API_KEY (ไม่มี OpenRouter key) champollion จะสลับไปใช้ Google Translate โดยอัตโนมัติ ไม่จำเป็นต้องเปลี่ยนการกำหนดค่า
:::
deepl — DeepL API
การเชื่อมต่อโดยตรงกับ DeepL translation API รองรับ glossary สำหรับคำศัพท์ที่สอดคล้องกัน
เมื่อใดควรใช้: ภาษายุโรปที่ DeepL เชี่ยวชาญ (เยอรมัน ฝรั่งเศส สเปน ดัตช์ โปแลนด์ ฯลฯ) การรองรับ glossary ช่วยบังคับใช้คำศัพท์ที่สอดคล้องกันโดยไม่ต้องใช้ข้อมูล coaching
คุณสมบัติ:
- ✅ ตรวจจับ endpoint แบบ free/pro โดยอัตโนมัติ (suffix
:fxบน free key) - ✅ การสร้างและจัดการ glossary
- ✅ การควบคุมระดับความเป็นทางการ
- ⚠️ ไม่รองรับ Markdown — เฉพาะคู่ key-value เท่านั้น
การกำหนดค่า:
{
"pairs": {
"en:de": { "method": "deepl" }
}
}
export DEEPL_API_KEY=your-key-here
รับ key ของคุณได้ที่ deepl.com/pro-api
microsoft-translator — Azure Cognitive Services
การเชื่อมต่อโดยตรงกับ Microsoft Translator Text API v3
เมื่อใดควรใช้: สภาพแวดล้อมองค์กรที่มีโครงสร้างพื้นฐาน Azure อยู่แล้ว รองรับ 100+ ภาษา รวมถึงหลายภาษาที่ Google Translate ไม่ครอบคลุม
คุณสมบัติ:
- ✅ รองรับสูงสุด 100 segment ต่อ request (throughput สูง)
- ✅ พารามิเตอร์ region แบบเลือกได้สำหรับการปรับ latency
- ⚠️ ไม่รองรับ Markdown — เฉพาะคู่ key-value เท่านั้น
- ⚠️ ไม่รองรับการแปลเนื้อหา — เฉพาะคู่ key-value เท่านั้น
การกำหนดค่า:
{
"pairs": {
"en:ar": { "method": "microsoft-translator" }
}
}
export MICROSOFT_TRANSLATOR_API_KEY=your-key
export MICROSOFT_TRANSLATOR_REGION=global # optional
รับ key ของคุณได้จาก Azure Portal → Cognitive Services → Translator
libretranslate — การแปลแบบ Self-Hosted
การแปลแบบ open-source ที่ host เอง โดยใช้ LibreTranslate รันในเครื่องหรือบนโครงสร้างพื้นฐานของคุณเอง — ไม่มีค่าใช้จ่าย API และข้อมูลอยู่ในความควบคุมของคุณอย่างสมบูรณ์
เมื่อใดควรใช้: โปรเจกต์ที่ต้องการการแปลแบบออฟไลน์ การปฏิบัติตามข้อกำหนดความเป็นส่วนตัวของข้อมูล (GDPR) หรือการดำเนินงานโดยไม่มีค่าใช้จ่าย มีประโยชน์อย่างยิ่งสำหรับ CI pipeline ที่ไม่ควรพึ่งพา external API
คุณสมบัติ:
- ✅ Self-hosted — ไม่มีการเรียก external API
- ✅ ฟรีและ open source (AGPL-3.0)
- ✅ รองรับการ deploy ด้วย Docker
- ⚠️ ไม่รองรับ Markdown — เฉพาะคู่ key-value เท่านั้น
- ⚠️ ไม่รองรับการแปลเนื้อหา — เฉพาะคู่ key-value เท่านั้น
- ⚠️ คุณภาพแตกต่างกันตามคู่ภาษา
การตั้งค่า:
# Run LibreTranslate locally with Docker
docker run -d -p 5000:5000 libretranslate/libretranslate
# Configure (optional — defaults to localhost:5000)
export LIBRETRANSLATE_API_URL=http://localhost:5000/translate
{
"pairs": {
"en:es": { "method": "libretranslate" }
}
}
api — Remote Translation API
HTTP client แบบบางสำหรับ endpoint การแปลที่ host โดยชุมชนหรือที่ได้รับการคุ้มครองทรัพย์สินทางปัญญา Champollion ส่ง key ออกไปและรับการแปลกลับมา — ไม่มี logic การแปลอยู่ภายใน
เมื่อใดควรใช้: เมื่อวิธีการแปลถูก host ฝั่ง server (เช่น ข้อมูล coaching ที่เป็นกรรมสิทธิ์ โมเดลที่ fine-tune แล้ว หรือ FST pipeline ที่ไม่สามารถแจกจ่ายได้)
{
"pairs": {
"en:crk": {
"method": "api",
"endpoint": "https://api.example.com/v1/translate",
"apiKey": "your-key"
}
}
}
:::note การแปลโดยชุมชนที่รองรับ OCAP
วิธีการ api คือสะพานเชื่อมสู่ การแปลที่ host โดยชุมชนซึ่งรองรับ OCAP ชุมชนภาษาพื้นเมืองและภาษาชนกลุ่มน้อยสามารถ host endpoint การแปลของตนเอง — รักษาข้อมูล coaching โมเดลที่ fine-tune แล้ว และทรัพย์สินทางภาษาศาสตร์ไว้ภายใต้การควบคุมของชุมชน — ในขณะที่ Champollion เชื่อมต่อกับพวกเขาในฐานะ thin client
ดู การสนับสนุนภาษาที่มีทรัพยากรน้อย สำหรับคำแนะนำการ host โดยชุมชนฉบับสมบูรณ์ และ การให้บริการ Method ผ่าน API สำหรับข้อกำหนด endpoint :::
การกำหนดค่าแบบรายคู่ภาษา
พลังที่แท้จริงอยู่ที่การผสมวิธีการตามคู่ภาษา:
{
"version": 3,
"pairs": {
"en:fr": { "method": "deepl" },
"en:ja": { "method": "openai", "model": "gpt-4o" },
"en:ko": { "method": "gemini" },
"en:ar": { "method": "microsoft-translator" },
"en:crk": { "methodPlugin": "crk-coached-v1" }
}
}
ตัวอย่างนี้แปลภาษาฝรั่งเศสผ่าน DeepL (รองรับ glossary) ญี่ปุ่นผ่าน OpenAI (คุณภาพ) เกาหลีผ่าน Gemini (free tier) อาหรับผ่าน Microsoft Translator (ครอบคลุม) และ Plains Cree ผ่าน coached plugin (เฉพาะทาง)
Plugin
Plugin คือสูตรการแปลที่บรรจุไว้ล่วงหน้าสำหรับคู่ภาษาเฉพาะ เป็น JSON manifest — ไม่ใช่โค้ด — ที่บอก champollion ว่าจะใช้วิธีการใด ด้วยการตั้งค่าอะไร และคุณภาพที่ผ่านการ benchmark มาแล้วเป็นอย่างไร
:::tip จาก eval harness สู่ production ด้วยคำสั่งเดียว
Plugin ที่พัฒนาและพิสูจน์แล้วใน eval harness สามารถติดตั้งได้โดยตรง — วิธีการที่คุณตรวจสอบที่นั่นจะ deploy ที่นี่ด้วยคำสั่ง plugin install เพียงคำสั่งเดียว ดู MT Evaluation สำหรับขั้นตอนการประเมินฉบับสมบูรณ์
:::
champollion plugin install ./french-formal-v1/
champollion plugin list
champollion plugin remove french-formal-v1
ดู Plugin Specification สำหรับรูปแบบ manifest ฉบับสมบูรณ์
การสลับผู้ให้บริการ
ต้องการย้ายระหว่างวิธีการ? รูปแบบโมเดลและ env var จะเปลี่ยนไป — นี่คือแผนที่:
OpenRouter → ผู้ให้บริการโดยตรง
{
"pairs": {
"en:fr": {
- "method": "llm",
- "model": "openai/gpt-4o"
+ "method": "openai",
+ "model": "gpt-4o"
}
}
}
- export OPENROUTER_API_KEY=sk-or-v1-...
+ export OPENAI_API_KEY=sk-proj-...
ความแตกต่างหลัก:
- OpenRouter ใช้รูปแบบ
provider/model(เช่นopenai/gpt-4o) ผู้ให้บริการโดยตรงใช้ชื่อโมเดลแบบเรียบ (เช่นgpt-4o) - ผู้ให้บริการโดยตรงแต่ละรายมี env var ของตนเอง (
OPENAI_API_KEY,ANTHROPIC_API_KEY,GEMINI_API_KEY) - หากคุณใช้รูปแบบโมเดลที่ไม่ถูกต้อง champollion จะแจ้งเตือนคุณ — ดู การตรวจสอบโมเดล
ผู้ให้บริการโดยตรง → OpenRouter
{
"pairs": {
"en:ja": {
- "method": "anthropic",
- "model": "claude-sonnet-4-6"
+ "method": "llm",
+ "model": "anthropic/claude-sonnet-4-6"
}
}
}
:::tip เมื่อใดควรใช้ OpenRouter เทียบกับผู้ให้บริการโดยตรง ใช้ OpenRouter เมื่อต้องการสลับระหว่างโมเดลโดยไม่ต้องเปลี่ยน env var หรือเมื่อต้องการเข้าถึง 200+ โมเดลจาก key เดียว ใช้ผู้ให้บริการโดยตรง เมื่อต้องการการเรียกเก็บเงินที่เรียบง่ายกว่า latency ต่ำกว่า (ไม่มีตัวกลาง) หรือเข้าถึงคุณสมบัติเฉพาะของผู้ให้บริการ เช่น prompt caching ของ Anthropic :::
การเปรียบเทียบต้นทุน
ต้นทุนโดยประมาณต่อ 1,000 key ที่แปล (สมมติ ~10 token ต่อ key, 80 key ต่อ batch):
| วิธีการ | ต้นทุน / 1K Key | ความเร็ว | คุณภาพ | เหมาะที่สุดสำหรับ |
|---|---|---|---|---|
gemini (Flash) | ฟรี (ภายใน tier) | เร็ว | ดี | เริ่มต้นใช้งาน โปรเจกต์ส่วนตัว |
google-translate | ~$0.02 | เร็วที่สุด | พอใช้ | ปริมาณสูง ภาษายุโรป |
deepl | ~$0.02 | เร็ว | ดี | ภาษายุโรป คำศัพท์เฉพาะ |
microsoft-translator | ~$0.01 | เร็ว | พอใช้ | สภาพแวดล้อม Azure ครอบคลุมภาษาหลากหลาย |
libretranslate | ฟรี (self-hosted) | แตกต่างกัน | พอใช้ | Air-gapped, GDPR, CI pipeline |
gemini (Pro) | ~$0.07 | ปานกลาง | ดีมาก | เน้นคุณภาพ มี free quota |
openai (GPT-4o-mini) | ~$0.01 | เร็ว | ดี | LLM ประหยัดงบ |
openai (GPT-4o) | ~$0.10 | ปานกลาง | ดีมาก | เน้นคุณภาพ |
anthropic (Haiku) | ~$0.01 | เร็ว | ดี | LLM ประหยัดงบ |
anthropic (Sonnet) | ~$0.10 | ปานกลาง | ดีมาก | เน้นคุณภาพ |
anthropic (Opus) | ~$0.50 | ช้า | ยอดเยี่ยม | คุณภาพสูงสุด |
llm (OpenRouter) | แตกต่างตามโมเดล | แตกต่างกัน | แตกต่างกัน | เปรียบเทียบโมเดล ทดลองใช้งาน |
:::note ตัวเลขเหล่านี้เป็นการประมาณการ ต้นทุนจริงขึ้นอยู่กับความยาวของ source text ขนาด batch และการเปลี่ยนแปลงราคาของผู้ให้บริการ ตรวจสอบหน้าราคาปัจจุบันของผู้ให้บริการแต่ละรายสำหรับอัตราที่แน่นอน :::
ดูเพิ่มเติม
- ภาษาที่รองรับ
- ข้อมูล Coaching
- การสนับสนุนภาษาที่มีทรัพยากรน้อย
- Plugin Specification
- การให้บริการ Method ผ่าน API
- Quality Gate
- สถาปัตยกรรม
- การแก้ไขปัญหา — ข้อผิดพลาดของโมเดล ปัญหา API