跳转到主要内容

Agent 指南:赢得竞技场

MT Eval Arena 是一个开放的机器翻译方法基准测试平台。构建一个比现有方法翻译效果更好的方法,用可重现的评分证明其有效性,获胜的方法将被部署到生产环境——收益流向它所服务的语言社区。

:::tip 为什么这很重要 商业翻译服务覆盖约 130 种语言。Meta 的 OMT-1600 声称覆盖 1,600 种更多语言——但对于约 1,300 种资源最少的语言,质量未经独立评估验证,模型权重也不可用。竞技场提供了独立的测试基础设施。如果你的方法有效,它可以用于那些没有独立验证 MT 的语言。 :::


环境设置

# Clone the harness
git clone https://github.com/gamedaysuits/arena.git
cd arena

# Create a virtual environment (do NOT install into global Python)
python -m venv .venv
source .venv/bin/activate # Linux/macOS
# .venv\Scripts\activate # Windows

# Install dependencies
pip install -e .

API 密钥 — 测试框架使用 OpenRouter 调用 LLM 模型。设置你的密钥:

# Option 1: export (session only)
export OPENROUTER_API_KEY="sk-or-..."

# Option 2: .env file (persistent, gitignored)
echo 'OPENROUTER_API_KEY=sk-or-...' > .env

openrouter.ai/keys 获取密钥。免费层模型适合实验。


运行你的第一个基准测试

# Run a baseline LLM against the Cree evaluation corpus
mt-eval run --corpus data/edtekla-dev-v1.json

# Or specify a model explicitly
mt-eval run --corpus data/edtekla-dev-v1.json -m google/gemini-2.5-flash

测试框架生成一个运行日志 — 一个 JSON 文件,保存到 eval/logs/,包含每个翻译、每个指标分数,以及一个将结果与精确实验配置绑定的密码学指纹。

有用的标志:

标志功能
-m <model>OpenRouter 模型 slug(用逗号分隔以进行多模型并行运行)
--condition <name>方法标签(显示在排行榜上)
--temperature <float>采样温度(较低 = 更确定性)
--batch-size <n>每个 API 调用的条目数(默认:25)
--dry-run验证配置而不进行 API 调用
--ids 0,1,2,3仅运行特定条目 ID
# Multi-model comparison (runs in parallel)
mt-eval run --corpus data/edtekla-dev-v1.json -m gemini-2.5-flash,claude-sonnet-4,gpt-4.1

# Dry run to validate config
mt-eval run --corpus data/edtekla-dev-v1.json --dry-run

其他命令:mt-eval test <log.json>(对已完成的运行评分)、mt-eval compare <log1> <log2>(比较运行)、mt-eval dashboard <logs/*.json>(生成 HTML 仪表板)、mt-eval list models --live(浏览可用模型)。


构建你自己的方法

测试框架接受任何实现 TranslationMethod 协议的 Python 类:

from mt_eval_harness.config import RunConfig

class YourMethod:
"""Build whatever you want inside. The harness only sees this interface."""

async def translate(
self,
entries: list[dict],
config: RunConfig,
) -> list[dict]:
"""
Args:
entries: [{"id": 1, "source": "Hello"}, ...]
config: RunConfig with source_locale, target_locale, model, etc.

Returns: one result dict per entry, each containing:
- id: int — entry ID from the corpus
- predicted: str — the translated text
- latency_s: float — time taken in seconds
- usage: dict — token usage {prompt_tokens, completion_tokens}
- error: str|None — error message if failed
- metadata: dict — any process-specific metadata
"""
results = []
for entry in entries:
# Your translation logic here — LLM prompting, FST pipeline,
# dictionary lookup, fine-tuned model, anything.
translated = await self._my_translate(entry["source"])
results.append({
"id": entry["id"],
"predicted": translated,
"latency_s": 0.5,
"usage": {"prompt_tokens": 100, "completion_tokens": 20},
"error": None,
"metadata": {"method": "my-custom-pipeline"},
})
return results

结构化类型 — 你的类不需要继承任何东西。如果它有正确的 translate 方法签名,它就能工作。这意味着现有管道可以用一个薄包装器进行适配。

将其连接到测试框架:

import asyncio
from mt_eval_harness.config import RunConfig
from mt_eval_harness.runner import execute_run

async def main():
config = RunConfig(
corpus_path="data/edtekla-dev-v1.json",
model="google/gemini-2.5-flash",
condition="my-method-v1",
)
results = await execute_run(config, method=YourMethod())
print(f"Composite: {results['scores']['composite']}")

asyncio.run(main())

方法思路

每种方法都有一个完整的食谱,包含实现指导:

方法描述食谱
FST 门控管道形态学验证捕捉 LLM 遗漏的内容教程
指导 LLM将语法规则和字典注入提示教程
字典增强强制术语一致性教程
少样本提示在提示中包含示例翻译教程
微调模型在平行数据上训练(只是不在评估集上)教程
链式模型多轮:草稿 → 精化 → 验证教程
基于规则的混合结合确定性规则和 LLM 灵活性教程

理解你的分数

基准测试运行后,你会看到如下输出:

══════════════════════════════════════════════════
Composite Score: 0.67 (Functional)
──────────────────────────────────────────────────
chrF++: 0.72
FST acceptance: 0.82
Exact match: 0.31
Morphological acc.: 0.88
Semantic score: 0.64
══════════════════════════════════════════════════

关键指标:

指标测量内容权重
chrF++字符级翻译准确度30%
FST 接受度形态学有效性(对于有 FST 的语言)25%
精确匹配与参考完全相同的字符串15%
形态学准确度词元 + 特征正确性15%
语义分数意义保留,不考虑表面形式15%

质量等级:

等级综合范围含义
基线0.00–0.30低于该语言的随机概率
新兴0.30–0.50显示潜力但不可用
功能性0.50–0.70可用于后编辑
可部署0.70–0.85准备好生产,需要使用者审查
流畅0.85–1.00接近本地人质量

完整详情:评分规范


提交到排行榜

当你对分数满意时:

  1. 对运行评分mt-eval test eval/logs/your_run.json 生成一个评分的 TestReport
  2. 审查你的分数mt-eval dashboard eval/logs/your_run.json 生成一个可视化仪表板
  3. 提交 — 按照提交方法指南操作

每个提交都被指纹识别到特定的配置和数据集版本。对测试内容没有歧义。


部署到生产

经过验证的方法可以通过 champollion 部署,这是生产翻译 CLI。测试框架评估的相同接口成为一个翻译真实内容的插件。

# Export your benchmark as a champollion plugin
mt-eval export --report eval/logs/report.json --name crk-v1 --type llm-coached --locales crk

→ 部署到生产 — 将你的方法从竞技场带到生产。


故障排除

问题解决方案
OPENROUTER_API_KEY not set导出密钥或将其添加到 .env(见上面的设置)
Model not found运行 mt-eval list models --live 浏览可用模型
所有翻译都是空的检查你的 API 密钥是否有额度。先尝试 --dry-run
ModuleNotFoundError确保你激活了 venv 并运行了 pip install -e .
运行日志未保存检查 eval/logs/ — 日志按时间戳命名

另见