モデル比較(lait compare)
同一プロンプトを複数モデルへ並行送信し、応答・所要時間・usage を比較する方法。
lait compare は同じプロンプトを複数のモデルへ並行に送信し、応答・所要時間・usage をモデルごとに区切って表示します。ローカル LLM の選定で「同じプロンプトでどのモデルが良いか」を確認したいときに使います。
使い方
$ lait compare --model gemma-4-12b --model qwen-3-14b "日本の首都はどこ?"
=== gemma-4-12b (gemma-4-12b-it) ===
time: 812ms
usage: prompt=12 completion=8 total=20
日本の首都は東京です。
=== qwen-3-14b (qwen3-14b-instruct) ===
time: 1340ms
usage: prompt=12 completion=15 total=27
日本の首都は東京(Tokyo)です。
--modelは2回以上指定する必要があります(lait.config.ymlのmodels:エイリアス名、またはサーバーが受け付けるモデル ID をそのまま指定できます)。- PROMPT は省略して標準入力から渡すこともできます(
git diff | lait compare --model a --model b "このdiffをレビューして"のように、他のPROMPT系サブコマンドと同じ規約です)。 - リクエストは並行に送信されます。1つのモデルが失敗しても他のモデルの結果は表示され、いずれか1つでも失敗すると終了コードは非ゼロになります。
--modelに指定したエイリアスにpricing:が設定されていれば、usage:の行に概算USDコストが併記されます(例:usage: prompt=12 completion=8 total=20 ($0.0001))。設定されていないモデルはコストを表示しません。
サンプリングパラメータの一律適用
--reasoning-effort/--temperature/--top-p/--max-tokens を指定すると、各モデル自身の設定(lait.config.yml の models: エントリが持つ既定値)を上書きして、比較する全モデルに同じ値が一律適用されます。指定しない場合は各モデルの既定値がそのまま使われます。
$ lait compare --model gemma-4-12b --model qwen-3-14b --temperature 0 "厳密に比較したいプロンプト"
システムプロンプトとツール
次のオプションは、比較する全モデルに同じ値が一律適用されます。
| オプション | 説明 |
|---|---|
--system <TEXT> |
全モデルに送るシステムプロンプト。 |
--system-file <FILE> |
システムプロンプトをファイルから読み込みます(--system とは同時に指定できません)。 |
--mcp <NAME> |
全モデルが呼び出せる mcp_servers: のエントリ。複数指定できます。 |
--subagent <NAME> |
全モデルがサブエージェントとして呼び出せる agents: のエントリ。複数指定できます。 |
--tool <NAME> |
全モデルが呼び出せる tools: のエントリ。複数指定できます。 |
--system/--system-file を省略した場合は、チャットと同じく lait.config.yml の
default.system が使われます。--mcp/--subagent/--tool を省略した場合も、それぞれ
default.mcp/default.subagents/default.tools にフォールバックします。ツールを指定すると、
各モデルが独立に tool loop を回すため、time/usage はツール呼び出しを含む全ラウンドの合計です。
$ lait compare --model a --model b --system "日本語で簡潔に" --tool ripgrep "TODO を数えて"
--markdown
--markdown を指定すると、モデルごとの所要時間・usage・コスト・成否をまとめた表の後に、各モデルの
応答をモデルごとの見出しの下に並べた Markdown を出力します。比較結果を PR やドキュメントに
貼り付けたいときに使います(--json とは同時に指定できません)。
| model | model_id | time | prompt | completion | total | cost | status |
| --- | --- | ---: | ---: | ---: | ---: | ---: | --- |
| gemma-4-12b | gemma-4-12b-it | 812ms | 12 | 8 | 20 | - | ok |
| qwen-3-14b | qwen3-14b-instruct | 1340ms | 12 | 15 | 27 | - | ok |
## gemma-4-12b (gemma-4-12b-it)
日本の首都は東京です。
--json
機械可読な出力が必要な場合は --json を付けます。各モデルの結果を1要素とする配列が返り、成功時は error が null、失敗時は content/usage/cost_usd が null になります。cost_usd は該当モデルに pricing: が設定されていない場合も null です(コスト0ではなく「不明」を表します)。
$ lait compare --model gemma-4-12b --model qwen-3-14b --json "..." | jq '.[].model'
[
{
"model": "gemma-4-12b",
"model_id": "gemma-4-12b-it",
"duration_ms": 812,
"usage": {"prompt_tokens": 12, "completion_tokens": 8, "total_tokens": 20},
"cost_usd": null,
"content": "日本の首都は東京です。",
"error": null
},
{
"model": "qwen-3-14b",
"model_id": "qwen3-14b-instruct",
"duration_ms": 1340,
"usage": {"prompt_tokens": 12, "completion_tokens": 15, "total_tokens": 27},
"content": "日本の首都は東京(Tokyo)です。",
"error": null
}
]
制限事項
--streamには対応していません(複数モデルのストリームを同時に表示する仕組みが複雑になるため)。--approve-tools(対話的なツール承認)には対応していません。tool_policyは通常どおり効きます。--file/--imageによる添付には対応していません。