コーチングデータ
コーチングデータは、LLMがトレーニングされていない言語を学習させるための Champollion のメカニズムです。翻訳リクエストのたびに文法規則・辞書・スタイルノートを提供することで、汎用 LLM を任意の言語に対応したコンテキスト認識型翻訳エンジンへと変えることができます。機械翻訳のサポートがまったく存在しない言語にも対応しています。
仕組み
ペアのメソッドを llm-coached に設定すると、Champollion は .champollion/coaching/<locale>.json からコーチングファイルを読み込み、その内容をシステムメッセージの一部としてすべての LLM プロンプトに注入します。LLM は翻訳リクエストと同時に言語規則を参照するため、推測に頼らず、指定した文法や用語に従った出力を生成します。
┌──────────────────────────────────────────────────────┐
│ System Message (cached across batches) │
│ ┌──────────────────────────────────────────────────┐ │
│ │ Base translation rules │ │
│ │ + Register instructions │ │
│ │ + Coaching guidance (from coachingFile, if set) │ │
│ │ + Grammar rules (from coaching data) │ │
│ │ + Dictionary entries (from coaching data) │ │
│ │ + Style notes (from coaching data) │ │
│ └──────────────────────────────────────────────────┘ │
├──────────────────────────────────────────────────────┤
│ User Message (per batch) │
│ ┌──────────────────────────────────────────────────┐ │
│ │ Keys to translate (JSON) │ │
│ └──────────────────────────────────────────────────┘ │
└──────────────────────────────────────────────────────┘
コーチングコンテンツには 2 種類あります:
- 構造化コーチングデータ(
llm-coachedメソッド)— JSON 形式の文法規則・辞書・スタイルノート。.champollion/coaching/<locale>.jsonまたはプラグインのcoaching/ディレクトリから読み込まれます。 - フリーテキストコーチングプロンプト(
coachingFile設定フィールド)— システムプロンプトに注入される追加ガイダンスを記述したプレーンテキストファイル。llm-coachedに限らず、あらゆる LLM メソッドで使用できます。設定ファイルのcoachingFileまたは CLI の--coaching-fileで指定します。
両方を同時に使用することも可能です。評価ハーネスはまったく同じプロンプト構造を使用するため、ベンチマークスコアは実際の本番プロンプトを正確に反映します。
コーチングデータはシステムメッセージの一部であるため、プロンプトキャッシングの恩恵を受けられます。Anthropic や Google などのプロバイダーは繰り返されるシステムプレフィックスをキャッシュするため、コーチングコンテキストのコストはセッションごとに 1 回だけ発生し、バッチごとに課金されることはありません。
コーチングファイルの形式
.champollion/coaching/ にロケールごとの JSON ファイルを 1 つ作成します:
{
"grammar_rules": [
"Plains Cree is polysynthetic — a single word can express what English needs a full sentence for",
"Animate/inanimate noun distinction affects verb conjugation",
"Use SRO (Standard Roman Orthography) unless script converter handles conversion",
"Verb stems are modified by prefixes and suffixes to indicate person, number, tense, and evidentiality"
],
"dictionary": {
"home": "kīwēwin",
"settings": "isi-nākatohkēwin",
"search": "nānātawāpahtam",
"welcome": "tānisi",
"submit": "ispīhci",
"cancel": "pōni"
},
"style_notes": "Use formal register. Preserve English technical terms in parentheses when no Cree equivalent exists. Avoid loanwords when a descriptive Cree expression exists."
}
フィールド
| フィールド | 型 | 必須 | 説明 |
|---|---|---|---|
grammar_rules | string[] | いいえ | システムプロンプトに注入される文法規則の配列。各規則は LLM が従いやすい、簡潔で実行可能な指示として記述してください。 |
dictionary | object | いいえ | 英語の用語 → 対象言語の用語のキーと値のマップ。LLM が知らないドメイン固有の語彙に使用します。 |
style_notes | string | いいえ | 文体に関する自由記述の指示(語調・丁寧さ・表現の慣習など)。 |
すべてのフィールドは省略可能です。まず辞書だけで始め、改善を重ねながら文法規則を追加していくことができます。
フォールバックの動作
ペアが llm-coached に設定されているにもかかわらず、そのロケールのコーチングファイルが存在しない場合、Champollion はコンソール警告を表示したうえで標準の llm メソッドにフォールバックします:
[INFO] No coaching data for "crk" at .champollion/coaching/crk.json
Falling back to standard LLM method. Create coaching data for better results.
これにより、"defaultMethod": "llm-coached" をグローバルに設定しても安全に運用できます。コーチングデータが存在する言語はそれを使用し、それ以外の言語はエラーなしで標準の LLM 翻訳が適用されます。
コーチングを使うべき場面
| シナリオ | 推奨メソッド |
|---|---|
| Tier 1 言語(フランス語・スペイン語・ドイツ語) | llm または google-translate — LLM はこれらの言語を十分に習得済み |
| Tier 2 言語(韓国語・トルコ語・タイ語) | llm とレジスター指定 — スタイルガイダンスがあれば LLM で十分対応可能 |
| Tier 3 言語(Plains Cree・ヨルバ語・ケチュア語) | llm-coached — LLM には文法規則と辞書が必要 |
| 人工言語(クリンゴン語・シンダール語・クリプトン語) | llm-coached — LLM にある程度の学習データはあるが修正が必要 |
効果的なコーチングデータの作り方
文法規則
規則は言語理論の説明としてではなく、指示として記述してください。LLM は言語学的な解説を解釈するよりも、指示に従う方が精度が高くなります。
// ❌ Descriptive (the LLM learns nothing actionable)
"Plains Cree has animate and inanimate noun classes"
// ✅ Instructive (the LLM knows what to do)
"When translating nouns, check whether the Cree equivalent is animate (NA) or inanimate (NI) — this affects which verb conjugation to use"
辞書
LLM が誤訳したり造語したりしやすいドメイン固有の用語に絞って記載してください。LLM がすでに正しく扱える一般的な単語は不要です。アプリケーションの UI に固有の用語に集中しましょう。
スタイルノート
語調・丁寧さ・表現の慣習について具体的に記述してください:
"style_notes": "Use formal register (vous-form in French). Preserve brand names untranslated. UI labels should be imperative mood ('Save', not 'Saves'). Maximum 40 characters for button text."
コーチング済み翻訳のテスト
MT Eval Harness を使用して、参照コーパスに対してコーチング済み翻訳のベンチマークを実施できます:
# Install the harness
pip install mt-eval-harness
# Run coached translations against your test corpus
mt-eval run --corpus data/crk-corpus.json --model google/gemini-2.5-pro
# Score the results
mt-eval test eval/logs/run_*.json
chrF++・BLEU・完全一致スコアが得られます。複数のコーチングファイルバージョンを作成して比較してみてください。主観的なレビューよりも客観的な指標の方が信頼性があります。
関連情報
- 翻訳メソッド — llm-coached メソッドについて
- 低リソース言語のサポート — コーチングの実践例
- プラグイン仕様 — プラグインへのコーチングデータのパッケージング
- 品質ゲート — コーチング済み翻訳の検証方法
- 設定 — ペアごとのコーチング設定