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

สถาปัตยกรรม

ระบบนิเวศการแปลของ Champollion ประกอบด้วยเครื่องมือสามชิ้นที่เป็นอิสระจากกัน และทำงานร่วมกันผ่านสัญญาที่กำหนดไว้อย่างชัดเจน ไม่มีชิ้นใดพึ่งพาชิ้นอื่นในเวลา build เครื่องมือเหล่านี้สื่อสารกันผ่าน รูปแบบ method plugin และ สัญญา REST API ที่ใช้ร่วมกัน

สามส่วนประกอบ

champollion (โปรเจกต์นี้)

เครื่องมือสำหรับนักพัฒนาแบบโอเพนซอร์ส แปลไฟล์ locale โดยใช้ method แบบ pluggable ไม่มี dependency ภายนอก ไม่จำเป็นต้องมีไฟล์ config ก็ใช้งานได้ทันที

Method ที่มีในตัว:

  • llm → OpenRouter / LLM ใดก็ได้ (200+ โมเดล)
  • llm-coached → LLM + การโค้ชด้านไวยากรณ์/พจนานุกรม
  • openai → OpenAI API โดยตรง (GPT-4o, GPT-4o-mini)
  • anthropic → Anthropic API โดยตรง (Claude Sonnet, Haiku, Opus)
  • gemini → Google Gemini API โดยตรง (Flash, Pro — มี free tier)
  • google-translate → Google Cloud Translation API v2
  • deepl → DeepL API พร้อมรองรับ glossary
  • microsoft-translator → Azure Cognitive Services Translator
  • libretranslate → LibreTranslate แบบ self-hosted (AGPL, ฟรี)
  • api → ท่อส่งข้อมูลบางๆ ไปยัง REST endpoint ระยะไกลใดก็ได้

Eval Harness (โปรเจกต์เสริม)

เครื่องมือวิจัยสำหรับพัฒนา ทดสอบ และวัดประสิทธิภาพของ translation method เมื่อ method มีคุณภาพถึงระดับที่ยอมรับได้ harness จะส่งออก method plugin — manifest method.json และไฟล์ข้อมูลการโค้ชเสริม (ถ้ามี)

harness ไม่เคยทำงานภายใน champollion เป็นเครื่องมือแยกต่างหากที่ผลิต output แบบ static (ไฟล์ JSON) Champollion เพียงแค่อ่านไฟล์เหล่านั้น

→ Eval Harness บน GitHub

Champollion Translate (อยู่ในแผน)

บริการ API แบบคิดค่าใช้จ่ายตามการใช้งาน ที่โฮสต์ translation method แบบ proprietary ไว้ฝั่งเซิร์ฟเวอร์ — prompt, ข้อมูลการโค้ช และ linguistic pipeline จะไม่ออกจากเซิร์ฟเวอร์

การเชื่อมต่อระหว่างส่วนประกอบ

Eval Harness → champollion (ส่งออกทางเดียว)

สัญญา: Plugin Specification

Champollion Translate → champollion (API ขณะ runtime)

APIMethod ของ Champollion เป็น ท่อส่งข้อมูลแบบ passive ส่ง key ออกไปและรับคำแปลกลับมา ไม่มี translation logic และไม่มีเนื้อหา proprietary ใดๆ อยู่ภายใน

สิ่งที่แต่ละส่วนรู้เกี่ยวกับส่วนอื่น

เครื่องมือรู้จัก champollion?รู้จัก Champollion Translate?รู้จัก harness?
champollion(คือ champollion)ใช่ — method api เรียกใช้งานไม่ — เพียงแค่อ่าน plugin export
Champollion Translateใช่ — ให้บริการตามคำขอ(คือ Champollion Translate)ไม่ — รับ method ที่ deploy มาแล้ว
Eval Harnessใช่ — ส่งออกในรูปแบบ pluginไม่ — method ถูก deploy แยกต่างหาก(คือ harness)

สถานการณ์การใช้งาน

สถานการณ์ที่ 1: ฟรี ไม่ต้องตั้งค่า (ผู้ใช้ส่วนใหญ่)

export OPENROUTER_API_KEY=sk-...
npx champollion sync

ใช้ method llm ที่มีในตัว ไม่ต้องใช้ plugin, Champollion Translate หรือ harness

สถานการณ์ที่ 2: Google Translate เป็น baseline

export GOOGLE_TRANSLATE_API_KEY=AIza...
npx champollion sync

ใช้ method google-translate ที่มีในตัว ไม่ต้องใช้ plugin

สถานการณ์ที่ 3: Open plugin พร้อม coaching ที่รวมมาด้วย

champollion plugin install ./french-formal-v1/
champollion sync

Plugin มี type: "llm-coached" → champollion ใช้ OpenRouter key ของผู้ใช้เอง ข้อมูลการโค้ชอยู่ในเครื่อง (ไม่มีการเรียกเซิร์ฟเวอร์)

สถานการณ์ที่ 4: DIY coaching (ไม่มี plugin ไม่มี harness)

champollion.config.json
{
"pairs": {
"en:fr": { "method": "llm-coached" }
}
}

ผู้ใช้ดูแลกฎไวยากรณ์และพจนานุกรมของตนเองใน .champollion/coaching/fr.json

Language Card

แต่ละภาษาใน champollion ถูกกำหนดค่าผ่าน Language Card — ไฟล์ JSON รวมที่ประกอบด้วย register preset, กฎความเป็นทางการ, flag รองรับ method, รูปแบบการพิมพ์, การจำแนกตระกูลภาษา และข้อมูลอ้างอิงทางภาษาศาสตร์

Card จะถูกโหลดทันทีเมื่อ import แต่ละ card มี metadata ทั้งหมดที่ translation engine และเอกสารสำหรับนักพัฒนาต้องการ — ไม่มีชั้นข้อมูลอ้างอิงแยกต่างหาก Card ถูกสร้างจากแหล่งข้อมูลที่เชื่อถือได้ (IANA, CLDR, Glottolog, WALS) โดยใช้ scripts/generate-language-card.mjs และ scripts/build-language-tree.mjs จากนั้นผ่านการตรวจสอบโดยมนุษย์เพื่อความถูกต้องทางภาษาศาสตร์

หลักการออกแบบ

  1. ไม่มี circular dependency สะพานเชื่อมต่อเป็นทิศทางเดียว
  2. Champollion คือ core ที่มีน้ำหนักเบา ไม่มี dependency ภายนอก ไม่จำเป็นต้องมี config Plugin และ API เป็นส่วนเสริม
  3. การปกป้อง IP เป็นเรื่องของสถาปัตยกรรม เทคนิค proprietary อยู่ฝั่งเซิร์ฟเวอร์เท่านั้น npm package ไม่มีเนื้อหา proprietary ใดๆ
  4. รูปแบบ plugin คือสัญญา ทุกอย่างไหลผ่าน method.json
  5. แต่ละเครื่องมือมีหน้าที่เดียว Harness → พัฒนา method, Champollion Translate → โฮสต์ method, Champollion → แปลไฟล์

ดูเพิ่มเติม

  • Translation Methods — วิธีการทำงานของแต่ละ method ที่มีในตัว
  • Plugin Specification — รูปแบบ manifest ของ method.json
  • Eval Harness — เครื่องมือวิจัยเสริม
  • Serving a Method via API — การโฮสต์ translation pipeline แบบกำหนดเอง
  • Support a Low-Resource Language — กรณีการใช้งานที่เป็นแรงผลักดันให้เกิดสถาปัตยกรรมนี้