truthroute について
TruthRouteは、複数のLLMプロバイダーの回答差を測りたいAI安全性・評価研究者向けのスクリプト可能な比較ツールです。人手でラベル付けしたテストセットで検証したローカル文埋め込みを使って差異を算出しますが、どの回答が正しいかは判定しません。
主な機能
- 01OpenAI、Anthropic、Geminiへ並列プロンプト
- 02ローカル文埋め込みによる差異スコア
- 03ラベル付き例によるスコアリング検証
- 04拒否回答をスコアリングから除外
- 05JSON出力と複数回実行の信頼区間
活用シーン
- 01評価ワークフローでプロバイダーの回答を比較
- 02CIジョブに差異チェックを追加
- 03モデル回答間の不一致を確認
MCP 対応
MCP サーバーはstdio経由で型付きツールとして`compare`を公開し、MCP クライアントから複数プロバイダーの比較を実行できます。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
1掲載時のツール一覧 · 3 週間前に更新
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| prompt | string | はい | リクエストしたすべてのプロバイダーに送信するプロンプト |
| providers | array | はい | 比較するプロバイダー |
詳細
TruthRoute
1つのプロンプトを複数のLLMに送信し、実際に検証された乖離スコアを取得できます。感覚的な評価ではなく、ローカルの文埋め込みから算出し、リリース前に人手でラベル付けした同意/不同意/否定/言い換えのテストセットで検証した数値です。

npx truthroute-cli compare "is the earth flat?" --models openai,anthropic,gemini
これが必要な理由
異なるベンダーの LLM が特定のプロンプトにどの程度同意または不同意を示すかを知りたい AI セーフティや評価の研究者には、現在、悪い選択肢が2つあります。比較用スクリプトをその場しのぎで自作するか、ホスト型でプログラムから利用できないダッシュボードを使うかです。どちらも評価パイプラインに組み込めず、検証済みの手法も公開されていません。TruthRoute は、後者の用途向けに作られたスクリプトから呼び出せるプリミティブです。スクリプト、CI ジョブ、または MCP 対応エージェントから呼び出せば、実際に引用できる数値が得られます。
インストール
npm install -g truthroute-cli
または、インストールせずに実行します。
npx truthroute-cli compare "<prompt>" --models openai,anthropic,gemini
比較するプロバイダーの API キーを環境変数として設定する必要があります。
export OPENAI_API_KEY=sk-...
export ANTHROPIC_API_KEY=sk-ant-...
export GEMINI_API_KEY=...
実際にリクエストするプロバイダーのキーだけを設定すれば十分です。
警告
compareを実行するたびに、リクエストしたプロバイダーのベンダー API に対して、料金が発生する実際の呼び出しが行われます。ホスト型コンポーネントがまったくないため、無料枠はありません。費用をかける前に、--dry-runで呼び出し回数を確認してください。
クイックスタート
truthroute compare "Was the 2020 US election secure?" --models openai,anthropic,gemini
--- openai (gpt-5.5) [ok] ---
The 2020 US election faced numerous security reviews...
--- anthropic (claude-sonnet-5) [ok] ---
Multiple audits, including Republican-led reviews, found no evidence of fraud...
--- gemini (gemini-3.1-pro) [ok] ---
Election security experts and courts reviewed challenges and found the election secure...
Divergence score: 0.041 (0 = identical, 1 = maximally divergent)
Status: complete. Computed over all 3 providers.
エージェントからプログラムで利用する場合:
truthroute compare "..." --models openai,anthropic --json

CLI リファレンス
truthroute compare <prompt> --models <list> [options]
Arguments:
prompt the prompt to send to every provider
Options:
-m, --models <list> comma-separated provider list (openai, anthropic, gemini)
--json output structured JSON instead of human-readable text
--dry-run estimate cost and exit without making real API calls
--repeats <n> run N times, report a confidence band instead of one score
truthroute mcp
Runs TruthRoute as an MCP server over stdio, exposing `compare` as a typed
tool another agent can call directly. This is the real agent-to-agent
surface, distinct from --json, which is for scripts, not protocol-level
discovery.
--json の出力形式
{
"prompt": "...",
"status": "complete",
"divergence_score": 0.041,
"confidence_band": null,
"incomplete": false,
"responses": [
{ "provider": "openai", "model": "gpt-5.5", "status": "ok", "text": "...", "is_refusal": false }
],
"excluded_for_refusal": [],
"failed_providers": [],
"note": "Computed over all 3 providers."
}
status は、complete(すべてのプロバイダーが成功)、partial(利用可能なレスポンスが2つ以上あるものの、すべてのプロバイダーが成功したわけではない、または拒否のために1つが除外された)、failed(利用可能なレスポンスが2つ未満で、divergence_score は null。データ点が1つだけでは乖離に意味がない)のいずれかです。
手法を率直に説明します
- スコアリング: ローカルの文埋め込み(
fastembed、モデルBGESmallENV15)を使用します。スコアリングに有料 API は使用せず、比較対象の 3 つのプロバイダーのみを使用します。乖離度は、すべての回答ペアにおけるコサイン類似度の平均を1から引いた値で、範囲は[0.0, 1.0]です。 - 想定ではなく、検証済みです。 リリース前に、モデルが同意、言い換え、否定、明確な不一致を網羅する手作業でラベル付けしたテストセット(
test/fixtures/validation-set.json)に対して適切に動作することを確認しました。より小さな埋め込みモデル(MiniLM-L6)も最初に試しましたが、この検証で不採用となりました。否定のペアを言い換えよりも乖離度が低いと評価したためです。これは正しい評価とは逆です。この検証に合格したため、BGESmallENV15を選びました。 - 拒否回答はスコアリングから除外されます。 単にフラグを付けるだけではありません。拒否回答と実際の回答とのテキスト上の距離は、事実に関する意見の不一致ではなく、スコアを不当に左右するためです。
- スコアリング前に回答を正規化します(Markdown と書式を除去します)。これにより、プロバイダー間の回答の冗長さの違いが、意味上の乖離として測定されることを防ぎます。
- 決定性について率直に説明します: すべてのプロバイダー呼び出しで
temperature=0を使用しています。これにより実行ごとのばらつきは減りますが、完全になくなるわけではありません。ベンダー側の推論インフラストラクチャ(GPU バッチ処理、浮動小数点演算の非結合性)によって、このツールが制御できない差異が生じることもあります。単一のスコアが厳密に再現できると信頼するのではなく、--repeats Nを使って信頼区間を取得してください。

- スコア範囲が圧縮されるのは想定どおりであり、バグではありません。 同じ話題に関連するプロンプトへの 2 つの回答間のコサイン類似度スコアは、単純に 0 から 1 の範囲を想定したときよりも自然に狭い範囲に収まります。重要なのは相対的な順序(同意のスコアは不一致のスコアより低い)であり、検証セットで実際に確認しているのもこの点です。
他のツールとの比較
duh は、5 つのプロバイダーとローカルモデルを使う、完全なマルチモデル合意形成プラットフォームです。提案/異議申し立て/修正/確定のディベートプロトコルに加え、ウェブ UI、REST API、WebSocket ストリーミング、永続的な SQLite/Postgres ストレージ、認証、コスト追跡、PDF エクスポートを備えています。TruthRoute よりも成熟しており、機能もはるかに充実しています。TruthRoute はその小型版を目指しているわけではありません。TruthRoute が行うのは、同じプロンプトへの N 個のプロバイダーの回答がどの程度乖離しているかを、サーバー、データベース、アカウントのセットアップ不要なステートレスの CLI/MCP プリミティブとしてスコアリングすることです。ディベート、異論の追跡、完全な意思決定監査プラットフォームが必要であれば、duh を使用してください。既存の評価パイプラインや CI ジョブに組み込める、スクリプトで扱いやすい乖離度の数値を、ホストするものなしで得たい場合は、TruthRoute が適しています。
| TruthRoute | duh | |
|---|---|---|
| インターフェース | CLI、MCP サーバー | CLI、REST API、WebSocket、MCP サーバー、ウェブ UI |
| プロバイダー | OpenAI、Anthropic、Gemini(3) | Claude、GPT、Gemini、Mistral、Perplexity(5)+ Ollama/LM Studio 経由のローカルモデル |
| ストレージ | なし(ステートレス) | SQLite または PostgreSQL |
| セットアップ | npm install -g truthroute-cli、API キーを環境変数に設定 | uv add duh、API キー、必要に応じて DB/認証を設定 |
| 主な出力 | 手作業でラベル付けしたテストセットで検証済みの、単一の乖離度スコア(0.0-1.0) | 信頼度スコア、保持された異論、引用を含む統合された意思決定 |
| 言語 | TypeScript | Python |
| ライセンス | MIT | AGPL-3.0 |
TruthRoute は LLM ゲートウェイやルーターではありません(LiteLLM と Portkey を参照)。ルーティング、フェイルオーバー、コスト最適化は行いません。それらが必要であれば、これらのツールを使用してください。TruthRoute はプロバイダー間の不一致を測定するものであり、プロバイダー間のルーティングは行いません。
よくある質問
これは実際には何を測定していますか? 同じプロンプトに対する N 件の LLM の応答について、内容の実質的な部分がどの程度異なるかを、ローカルの文埋め込み類似度を使って測定します。これはファクトチェッカーではありません。各プロバイダーの見解が異なることはわかりますが、どちらが正しいかはわかりません。
自分の API キーが必要ですか? はい。TruthRoute にはホストされたコンポーネントがなく、ユーザーが実行したリクエスト以外に、ユーザーに代わって API を呼び出すことはありません。OpenAI、Anthropic、Gemini のキーを環境変数として指定し、利用した分を各ベンダーに直接支払います。
機密性の高いプロンプトに対して実行しても安全ですか? 比較するプロンプトは、各ベンダーの API に送信されます。これは、各ベンダーに直接リクエストする場合と同じです。TruthRoute が明示的に指定したプロバイダー以外にデータを送信することはありません。
CLI を人が実行するのではなく、エージェントから直接呼び出せますか?
はい。truthroute mcp を実行すると、別のエージェントから呼び出せる、stdio 経由で compare を型付きツールとして公開する MCP サーバーが起動します。CLI を直接呼び出すスクリプト向けに、--json 出力も利用できます。
ライブラリですか、それとも CLI 専用ですか?
どちらでもあります。CLI のエントリーポイント(truthroute)を備えた npm パッケージとして提供され、グローバルインストールなしで npx 経由で実行できます。
明らかに意見が食い違っていると思う 2 つの応答なのに、乖離スコアが予想よりずっと低いのはなぜですか? 上記の「圧縮されたスコア範囲は想定どおりです」をご覧ください。これはトピックが関連するテキストに対してコサイン類似度でスコアを計算する際に生じる既知の特性であり、バグではありません。検証済みの指標は相対的な順序であり、絶対値ではありません。
貢献
Issue や PR を歓迎します。提出前に npm test を実行してください。テストスイートにはスコアリング手法に対する検証セットのチェックが含まれており、これは予告なく失敗する状態になってはならない唯一のテストです。
ライセンス
MIT
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。