メソッドプラグイン仕様
バージョン: 1.1 対象読者: プラグイン開発者 正規スキーマ:
shared/schemas/champollion-plugin.schema.json
概要
champollion はプラグイン可能なメソッドシステムを採用しています。言語ペアごとに異なる翻訳メソッド(LLM、コーチング付き、スクリプトコンバーターなど)を使用できます。メソッドは lib/translate.js に登録され、lib/pairs.js を通じてペアごとに解決されます。
eval ハーネスの役割は、翻訳メソッドの開発・テスト・エクスポートです。champollion の役割は、それらを消費・実行することです。プラグインはデータのみで構成されます — 設定、コーチングコンテンツ、ベンチマーク結果のみです。Python コードやハーネスへの依存関係は含みません。
データフロー
ハーネスは Python でメソッドを開発・テストします。メソッドがデプロイ可能な状態になると、ハーネスは method.json マニフェストとオプションのコーチングデータファイルをエクスポートします。Champollion は自身に組み込まれたメソッド実装を使用して、そのメソッドをインストール・実行します。
メソッドプラグインの形式
メソッドプラグインは、単一の JSON ファイル(method.json)とオプションのコーチングデータファイルで構成されます。
method.json — 必須
{
"name": "french-formal-v1",
"type": "llm-coached",
"version": "1.0.0",
"description": "Formally-tuned French with terminology enforcement and grammar coaching",
"author": "Plugin Author",
"config": {
"model": "google/gemini-3.5-flash",
"temperature": 0.2,
"batchSize": 80,
"register": "formal",
"coachingFile": null,
"coachingPrompt": null,
"promptContext": null,
"qualityTier": null
},
"locales": ["fr"],
"benchmarks": {
"fr": {
"date": "2026-05-11T00:00:00Z",
"corpus_size": 500,
"exact_match_rate": 0.42,
"corpus_chrf": 72.3,
"corpus_bleu": 45.1,
"model": "google/gemini-3.5-flash",
"harness_version": "1.0.0"
}
},
"provenance": {
"resources": [],
"commercialReady": false,
"flags": ["license-unclear"]
},
"coaching": {
"dir": "coaching"
}
}
フィールドリファレンス
| フィールド | 型 | 必須 | 説明 |
|---|---|---|---|
name | string | ✅ | 一意のメソッド識別子(kebab-case) |
type | string | ✅ | Champollion のメソッドタイプ: llm、llm-coached、api、google-translate、deepl、microsoft-translator、libretranslate、openai、anthropic、gemini |
version | string | ✅ | セマンティックバージョン(例: 1.0.0) |
locales | string[] | ✅ | このメソッドが対象とするロケールコード(最低1つ) |
description | string | — | 人間が読める説明文 |
author | string | — | このメソッドを開発・テストした担当者 |
config.model | string | — | OpenRouter モデル識別子 |
config.temperature | number | — | LLM の temperature(0.0〜2.0、デフォルト: 0.3) |
config.batchSize | number | — | API バッチあたりのキー数(1〜200、デフォルト: 80) |
config.register | string | null | — | ターゲット言語のレジスター/トーン(プリセットキーまたは自由記述テキスト) |
config.coachingFile | string | null | — | 自由記述コーチングプロンプトファイルへのパス(プロジェクトルートからの相対パス) |
config.coachingPrompt | string | null | — | 解決済みコーチングプロンプトテキスト(実行時に coachingFile から読み込まれる) |
config.promptContext | string | null | — | システムプロンプトに注入されるアプリケーションコンテキスト(例: "E-commerce product descriptions") |
config.qualityTier | string | null | — | ベンチマーク評価による品質ティア(standard、high、research、verified) |
benchmarks | object | — | eval ハーネスによるロケールごとのベンチマーク結果 |
provenance | object | — | ライセンスおよびリソースの依存関係 |
coaching.dir | string | — | コーチングデータディレクトリへの相対パス |
:::info 正規の MethodConfig の形式
config ブロックは正規の MethodConfig スキーマを使用しています — champollion.config.json、ハーネスのランカード、mt-eval export-config、リーダーボードのパブリッシュ/インストール全体で共通して使用される同じ 8 つのフィールドです。すべてのフィールドは常に存在し、未使用の値は null になります。これにより、評価と本番環境の間でのラウンドトリップがスムーズに行えます。
:::
ベンチマークオブジェクト(ロケールごと)
| フィールド | 型 | 必須 | 説明 |
|---|---|---|---|
date | string | ✅ | ベンチマーク実行の ISO 8601 タイムスタンプ |
corpus_size | number | ✅ | 評価したエントリ数 |
exact_match_rate | number | ✅ | 0.0〜1.0、完全一致の割合 |
corpus_chrf | number | — | chrF++ スコア(0〜100) |
corpus_bleu | number | — | BLEU スコア(0〜100) |
model | string | ✅ | 評価時に使用したモデル |
harness_version | string | ✅ | 使用した評価ハーネスのバージョン |
:::info 表示されるメトリクスについて
champollion status コマンドは、ベンチマークブロックから chrF++ と完全一致率を表示します。corpus_bleu はマニフェストで受け付けられますが、現在 champollion のどのコマンドでも表示・使用されていません。メソッドリーダーボードでは chrF++、完全一致、FST 受理率を追跡しています。
:::
プロベナンスオブジェクト
プロベナンスブロックは、プラグインにバンドルされたリソースのライセンス状況を伝えます。
| フィールド | 型 | デフォルト | 説明 |
|---|---|---|---|
resources | object[] | [] | name、license、type を持つバンドルリソースのリスト |
commercialReady | boolean | false | プラグインが商用配布の許可を受けているかどうか |
flags | string[] | ["license-unclear"] | 機械可読なステータスフラグ |
デフォルト状態 — エクスポートされたプラグインは commercialReady: false および flags: ["license-unclear"] の状態で出荷されます。
クリア状態 — ライセンスが確認された場合: commercialReady: true を設定し、フラグをクリアします。
コーチングデータの形式
type が llm-coached の場合、プラグインは coaching/ サブディレクトリにコーチングデータファイルを含める必要があります。
coaching/<locale>.json
{
"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."
}
| フィールド | 型 | 必須 | 説明 |
|---|---|---|---|
grammar_rules | string[] | — | このロケールのすべての LLM プロンプトに注入されるルール |
dictionary | object | — | 用語 → 翻訳のマップ。マッチした用語は必須用語として注入されます。 |
style_notes | string | — | プロンプトに追記される自由記述のスタイル指示 |
ディレクトリ構造
french-formal-v1/
method.json # Method manifest with benchmarks
coaching/
fr.json # Coaching data for French
複数ロケールのメソッドの場合:
european-formal-v2/
method.json # locales: ["fr", "de", "es", "it"]
coaching/
fr.json
de.json
es.json
it.json
Champollion によるプラグインの利用方法
インストール
champollion plugin install ./french-formal-v1/
.champollion/methods/french-formal-v1/ に保存されます。
設定
{
"pairs": {
"en:fr": {
"methodPlugin": "french-formal-v1"
}
}
}
:::info マージのセマンティクス
プラグインは使用するメソッドを定義します(type)。ペア設定は実行方法を調整します(model、register、batchSize)。ペアで model を設定した場合、プラグインのデフォルトを上書きします。
:::
実行時
- Champollion は
.champollion/methods/french-formal-v1/からmethod.jsonを読み込みます - プラグインの
typeフィールドが翻訳メソッドを設定します(例:llm-coached) - プラグインの
coaching/ディレクトリからコーチングデータを読み込みます configブロックを使用して、モデル/レジスター/temperature の空白を埋めますbenchmarksブロックはchampollion statusの出力に表示されますprovenanceブロックはchampollion provenanceによってライセンスフラグの確認に使用されます
スキーマ検証
プラグインマニフェストはインストール時に shared/schemas/champollion-plugin.schema.json に対して検証されます。
IDE のオートコンプリートを有効にするために、method.json でスキーマを参照してください:
{
"$schema": "./node_modules/champollion/shared/schemas/champollion-plugin.schema.json",
"name": "my-method-v1"
}
含めてはいけないもの
- ❌ Python コードやハーネスへの依存関係
- ❌ 生のコーパスデータや実行ログ
- ❌ API キーや認証情報
- ❌ ハーネスの設定
- ❌ 内部プロンプトテンプレート(それらは champollion のメソッド実装内に存在します)
プラグインはデータのみです: 設定、コーチングコンテンツ、ベンチマーク結果。
関連情報
- 翻訳メソッド — 各組み込みメソッドの動作について
- 設定 — ペアごと・言語ごとの設定
- メソッドを API として提供する — メソッドを HTTP サービスとしてホスティングする
- クックブック: FST ゲートパイプライン — パイプラインの構築とパッケージング
- MT 評価 — リーダーボード提出のためのメソッドベンチマーク
- 低リソース言語のサポート — コミュニティプラグインのユースケース