メソッドプラグイン仕様
バージョン: 1.1
対象読者: プラグイン開発者
正規スキーマ:schemas/rosetta-plugin.schema.json
概要
i18n-rosettaはプラガブルなメソッドシステムを使用しています。各言語ペアで異なる翻訳メソッド(LLM、coached、script-converterなど)を使用できます。メソッドはlib/translate.jsに登録され、lib/pairs.jsを介してペアごとに解決されます。
eval harness(評価ハーネス)の役割は、翻訳メソッドを開発、テスト、およびエクスポートすることです。i18n-rosettaの役割は、それらを消費し、実行することです。ハーネスがrosetta内で実行されることはありません。
データフロー
メソッドプラグインのフォーマット
メソッドプラグインは、単一の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",
"register": "formal",
"batchSize": 80,
"temperature": 0.2
},
"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 | ✅ | 一意のメソッド識別子(ケバブケース) |
type | string | ✅ | Rosettaメソッドタイプ: 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.register | string | — | ターゲット言語のレジスター/トーン |
config.batchSize | number | — | APIバッチあたりのキー数(1〜200、デフォルト: 80) |
config.temperature | number | — | LLMのtemperature(0.0〜2.0、デフォルト: 0.3) |
benchmarks | object | — | ロケールごとのベンチマーク結果 |
provenance | object | — | ライセンスおよびリソースの依存関係 |
coaching.dir | string | — | コーチングデータディレクトリへの相対パス |
Benchmarkオブジェクト(ロケールごと)
| フィールド | 型 | 必須 | 説明 |
|---|---|---|---|
date | string | ✅ | ベンチマーク実行のISO 8601タイムスタンプ |
corpus_size | number | ✅ | 評価されたエントリ数 |
exact_match_rate | number | ✅ | 0.0〜1.0、完全一致(exact match)の割合 |
corpus_chrf | number | — | chrF++スコア(0〜100) |
corpus_bleu | number | — | BLEUスコア(0〜100) |
model | string | ✅ | 評価中に使用されたモデル |
harness_version | string | ✅ | 使用された評価ハーネスのバージョン |
:::info どの指標が表示されるか?
rosetta statusコマンドは、ベンチマークブロックから**chrF++と完全一致率(exact match rate)**を表示します。corpus_bleuはマニフェストで受け入れられますが、現在rosettaのどのコマンドでも表示または使用されていません。メソッドリーダーボードでは、chrF++、完全一致、およびFSTの承認率を追跡します。
:::
Provenanceオブジェクト
provenanceブロックは、プラグインにバンドルされているリソースのライセンスステータスを伝達します。
| フィールド | 型 | デフォルト | 説明 |
|---|---|---|---|
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
Rosettaによるプラグインの消費方法
インストール
i18n-rosetta plugin install ./french-formal-v1/
.rosetta/methods/french-formal-v1/に保存されます。
設定
{
"pairs": {
"en:fr": {
"methodPlugin": "french-formal-v1"
}
}
}
:::info マージのセマンティクス
プラグインは、どのメソッドを使用するか(type)を定義します。ペア設定は、それをどのように実行するか(model、register、batchSize)を調整します。ペアでmodelが設定されている場合、プラグインのデフォルトを上書きします。
:::
ランタイム
- Rosettaは
.rosetta/methods/french-formal-v1/からmethod.jsonを読み込みます。 - プラグインの
typeフィールドが翻訳メソッドを設定します(例:llm-coached)。 - プラグインの
coaching/ディレクトリからコーチングデータを読み込みます。 configブロックを使用して、モデル/レジスター/temperatureのギャップを埋めます。benchmarksブロックはrosetta statusの出力に表示されます。provenanceブロックは、ライセンスフラグを確認するためにrosetta provenanceによってチェックされます。
スキーマ検証
プラグインマニフェストは、インストール時にschemas/rosetta-plugin.schema.jsonに対して検証されます。
IDEの自動補完を利用するには、method.jsonでスキーマを参照してください:
{
"$schema": "./node_modules/i18n-rosetta/schemas/rosetta-plugin.schema.json",
"name": "my-method-v1"
}
含めるべきではないもの
- ❌ Pythonコードやハーネスの依存関係
- ❌ 生のコーパスデータや実行ログ
- ❌ APIキーや認証情報
- ❌ ハーネスの設定
- ❌ 内部のプロンプトテンプレート(これらはrosettaのメソッド実装内に存在します)
プラグインはデータのみで構成されます。設定、コーチングコンテンツ、およびベンチマーク結果のみを含めてください。
関連項目
- 翻訳メソッド — 各組み込みメソッドの仕組み
- 設定 — ペアごとおよび言語ごとの設定
- API経由でのメソッドの提供 — HTTPサービスとしてメソッドをホストする方法
- クックブック: FSTゲートパイプライン — パイプラインの構築とパッケージ化
- MT評価 — リーダーボード提出のためのメソッドのベンチマーク
- 低リソース言語のサポート — コミュニティプラグインのユースケース