mcpField
O
opengate-mcp

opengate-mcp

ローカル
github.com/nickjlamb開発ツール11 日前に更新

opengate-mcp について

opengate-mcpは、OpenGATEの決定論的な根拠検証をエージェントから利用できるようにします。RAGや文書QAシステムを対象に、必要な事実、出典に追跡できる数値、根拠がない場合の回答保留をLLM判定器なしで確認します。

主な機能

  1. 01回答とコンテキストの根拠を決定論的に検証
  2. 02必要な事実の有無を確認
  3. 03数値を出典まで追跡
  4. 04根拠不足時の回答保留を確認
  5. 05LLM判定器なしで実行

活用シーン

  1. 01エージェントのワークフローで回答を検証
  2. 02RAGシステムの根拠と数値を確認
  3. 03文書QAシステムの回答保留を評価
  4. 04プロンプトやモデル変更後に回帰チェック

MCP 対応

MCP サーバーとして、エージェントが対話中にOpenGATEの回答根拠チェックを呼び出せるようにします。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

mcp.json · 共通設定
{
"mcpServers": {
"nickjlamb-opengate": {
"command": "npx",
"args": [
"-y",
"@pharmatools/opengate-mcp"
]
}
}
}
起動コマンドnpx -y @pharmatools/opengate-mcp

ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
npm@pharmatools/opengate-mcp0.1.4

ツール

1

掲載時のツール一覧 · 3 週間前に更新

パラメーター型必須説明
answerstringはいチェックする回答。
contextanyはい回答の根拠とする取得済みコンテキスト(文字列または複数の文章の配列)。
questionstringいいえ元の質問(任意。質問中の数値を根拠ありとして扱えます)。
must_abstainbooleanいいえコンテキストに回答が含まれない場合は true に設定します。その場合、回答は捏造せず、回答を控える必要があります。
expected_factsarrayいいえ正しい回答に含める必要がある事実(例:"30 days"、"no restocking fee")。各項目が回答に含まれている必要があります。
allowed_new_numbersarrayいいえ回答で導入してよい、コンテキストに含まれていない数値(例:質問に由来する数値)。

詳細

AIを信じるな。検証せよ。— OpenGATE、証拠に基づくAIのためのオープンソース検証。LLM の判定役は不要
オープンな根拠付け AI のテストと評価

証拠に基づく AI のための、決定論的で正解データに基づく検証 — LLM の判定役は不要です。

CI npm npm downloads PyPI Docker Docker pulls Glama MCP server Listed on mcpservers.org node License: MIT PRs welcome

クイックスタート · アーキテクチャ · 利用方法 · 例 · ロードマップ · コントリビューション · 変更履歴


もっともらしさより、証拠を。 OpenGATE は、RAG パイプライン、文書 QA ツール、法律・科学分野のアシスタントなど、すべての回答を原資料に基づいて説明しなければならない AI システムを検証します。何よりもまず、次の問いに答えます。システムは、与えられた証拠から回答を証明できるでしょうか?

この検証は決定論的です — LLM を判定役にすることも、採点モデルも、6 段階の判定尺度もありません。必要な事実が含まれていなければならず、すべての数値は原資料までたどれる必要があります。また、コンテキストから回答できない場合、システムは捏造するのではなく回答を控えなければなりません。純粋なロジックで動作するため、再現性があり、無料で、すべての回答に対して実行したり、コミットごとにゲートとして実行したりできるほど高速です。

AI が重大な影響を及ぼす分野に進出するにつれ、評価は従来のソフトウェアにおける自動テストと同じくらい基本的なものになりつつあります。OpenGATE は根拠付けの失敗を追跡可能な数値に変え、すべてのプロンプト、モデル、ワークフローの変更をベースラインと照らしてゲートします — そのため、信頼性が気付かないうちに低下することはありません。

クイックスタート(60 秒)

API キーは不要です — オフラインスイートは、同梱の正解データセットに対して決定論的なスコアラーを実行します。

npx @pharmatools/opengate           # run the offline evaluation suite
npx @pharmatools/opengate init      # scaffold gold cases + HTTP config + a GitHub Action
OpenGATE — 39 case(s), online=false, adapter=refcheckr

  ✓ citation-detection   PASS
      perClaim_exactSetRate      100.0%
      perClaim_jaccardMean       100.0%
      supportedStyle_accuracy    100.0%
  ⊘ grounding            SKIPPED — online scorer (pass --online)

opengate.http.json をエンドポイントに指定し、--online --ci を追加すると、独自のシステムをゲートできます。詳しい手順は Getting Started をご覧ください。

1 つの検証を、さまざまな方法で

同じ決定論的な根拠付けロジックを、スタックに合わせて利用できます。

方法インストール用途
CLI + フレームワークnpx @pharmatools/opengate評価スイート全体、アダプター、リグレッションゲート
GitHub Actionuses: nickjlamb/opengate@v0あらゆるリポジトリに組み込める CI ゲート
Python パッケージpip install opengate-groundingcheck_grounding()、pytest ゲート、DeepEval メトリクス
MCP サーバーnpx @pharmatools/opengate-mcp回答をその場で自ら検証するエージェント
Docker イメージdocker run pharmatools/opengateCPU のみで動作するコンテナ化パイプライン

アーキテクチャ

OpenGATE のアーキテクチャ:テスト対象のシステムは、1 ファイルのアダプターを介して決定論的なコアに接続します。ゴールドデータセットとシステムの回答を純粋なロジックのスコアラーに渡し、バージョン管理されたスコアカードを生成します。回帰ゲートは各コミットでスコアカードをベースラインと比較し、改善または維持ならデプロイし、低下ならビルドを失敗させます。

スコアラーがシステムと直接やり取りすることはありません。小さなアダプターを介してアクセスするため、手法をそのまま適用でき、変更するのはゴールドセットだけです。開発ループでは、CI と同じ位置に配置されます。プロンプト、モデル、パイプラインを変更すると、回帰ゲートが新しいスコアカードをベースラインと比較し、改善または維持ならデプロイし、低下ならビルドを失敗させます。

DeepEval ではなく、なぜこれを使うのですか?

両方を使います。評価は測定し、OpenGATE は検証します。DeepEval や OpenAI Evals のような汎用フレームワークは、通常 LLM に出力を判定させて、AI システムを幅広く評価します。OpenGATE が検証するのは、より限定的で、より難しい約束です。すべての回答が証拠に基づいていることです。

  • 出典情報を第一級の要素として扱います — 引用された箇所は、実際に出典に一字一句そのまま存在しますか?
  • LLM による判定はありません — スコアは人手でラベル付けしたゴールドデータに対する決定論的なチェックなので、再現可能で CI でも無料で実行できます。判断基準はゴールドセットにあり、採点モデルにはありません。
  • 回帰検出を第一級の要素として扱います — 実行のたびにアダプターごとのベースラインと差分を取り、低下があればビルドを失敗させます。

幅広い品質指標には汎用フレームワークを使い、グラウンディングのゲートには OpenGATE を組み合わせてください。

コアコンセプト

ゴールドケース — 人手でラベル付けしたベンチマークケース(datasets/cases/)です。ソーステキスト、抽出すべき主張、抽出すべきでない文、正解が既知の判定を含む参照スニペットで構成されます。_template.json をコピーして追加します。形式については datasets/SCHEMA.md、ラベル付けのルールについては datasets/LABELING-GUIDE.md を参照してください。

スコアラー — 指標ファミリーごとのモジュールです(src/scorers/)。

スコアラーモード測定内容
citation-detectionオフライン主張ごとの引用セットの完全一致と Jaccard 係数、サポートスタイルの正解率
claim-extractionオンラインゴールドデータに対する適合率/再現率/F1、主張以外の混入、忠実度(主張がソースから一字一句そのまま抽出されているか)
verdict-accuracyオンライン6 段階評価での完全一致と隣接正解率、箇所の幻覚率、一貫性、レイテンシとトークンコスト
redactionオンラインゴールド識別子に対する再現率(漏えいを名前付きの失敗として扱います)、過剰な編集、既知のギャップの追跡
simplificationオンライン書き換えの忠実度:アンカー再現率(重要な事実が保持されているか)、捏造された数値、長さのゲート
retrievalオンライン権威ある情報源に対する取得レコードの忠実度:アンカーフィールドと構造上の不変条件
groundingオンライン汎用 RAG:回答アンカー再現率、コンテキストに対する捏造、および回答拒否。すぐに使える標準経路

オフラインスコアラーは API キーなしで実行でき、すべてのコミットで実行できるほど高速です。オンラインスコアラーは、アダプターを介して実稼働中のシステムを評価します。

スコアカード — 実行のたびに、Git SHA を記録した results/<timestamp>.json が書き込まれるため、すべての結果を再現・監査できます。モデルごとの実行には run_model ラベルが付与され、結果ディレクトリが測定に基づく比較(正解率 × 幻覚 × レイテンシ × コスト)に使えます。

回帰ゲート — --baseline で基準を保存します。以降の実行では、指標ごとの差分(パーセントポイント単位の ▲/▼)が表示され、--ci を指定すると、低下があればビルドを失敗させます。ベースラインはアダプターごとに作成されるため、あるシステムのスコアカードが別のシステムのものを上書きすることはありません。

HTML レポート — --report(または opengate report)を追加すると、単体で動作するダッシュボードが作成されます。スコアラーごとの合否、ベースラインとの差分、名前付きの失敗をすべて確認できます。ファイルは 1 つだけで、サーバーも依存関係も必要ありません。

独自のシステムを評価する

アダプターは1つのファイルで構成されます。2つの基本エクスポートである onlineAvailable()、onlineConfigHint() に加え、少なくとも1つの完全な機能(例:grounding → answer())を含みます。スコアラーは adapter.capabilities を確認し、境界をまたぐ場合は問題なくスキップします。アダプターは読み込み時に検証され、不足しているエクスポートがすべてメッセージに示されます。

OPENGATE_ADAPTER=./adapters/my-system.mjs npm run eval:online

REST ベースのシステムには、ノーコードの方法があります。同梱の汎用 HTTP アダプターは、opengate.http.json からエンドポイントのパスとヘッダーを読み込みます(${ENV} の補間、レイテンシー/トークンの組み込み計測)。完全な仕様と最小限のひな形については、ADAPTERS.md をご覧ください。

例

  • NIM を活用した RAG エージェントの評価 — NVIDIA NIM モデルを使って RAG エージェントを構築し、OpenGATE でその回答のグラウンディングを、LLM の判定者を使わず決定論的に評価します。実行可能な Python ノートブック(opengate-grounding)と、CI ゲート用の Node アダプターが含まれています。

本番環境での実績

4つの PharmaTools 製品が CI で OpenGATE を実行しています。機能の形はそれぞれ異なりますが、評価基準は共通です。RefCheckr のゴールドセットに対して実行したところ、OpenGATE は次の結果を示しました。

  • 複数クレームの判定の約50%に影響していた無言の解析失敗モードを検出し、構造化出力を強制することで解消しました(→ 0)。
  • 実測に基づく本番モデルの変更を促し、パッセージのハルシネーションを半減させました(5.8% → 2.4%)。評判ではなく数値に基づく判断です。
  • コミット済みベースラインで、クレーム抽出のF1値 0.91、再現率 0.93 を維持しています(実行ごとのばらつきは0.86〜0.94で、分割器は LLM です)。現在は独自のゲートに不合格となっています。既知の非クレーム2件がほとんどの実行で抽出に混入します。これは未解決の分割器の問題であり、ゲートは丸めて隠すのではなく、そのまま報告します。
Redacta — 匿名化機能(この手法が QA に偏っていないことを示す証拠)

Redacta は @pharmatools/redacta エンジンをラップし、識別子にゴールドラベルを付与した英国の臨床記録の合成データを使ってスコアを算出します。最初の実行で、評価はエンジンの実際のバグを2件(関係を示すフレーズが入れ子の名前を取り込む問題、アポストロフィを含む姓が欠落する問題)検出しました。どちらも修正・確認され(knownGap_closed: 2)、その後ゴールドに昇格しました。現在のスコアカードは、ゴールド識別子25件の再現率100%、漏えい0件、未解決のギャップなしです。

npm install --no-save @pharmatools/redacta
node src/runner.mjs --online --adapter ./src/adapters/redacta.mjs
Patiently AI — 簡略化機能(言い換えの忠実性)

Patiently AI は、設計上言い換えを行うテキストの忠実性スコアリングを検証します。評価では、簡略化処理が安全性に不可欠な具体的情報を削除する問題を検出しました。退院時要約から抗生物質の投与量が消えていました(アンカー再現率86%)。保持ルールを適用した次の実行では、アンカー再現率100%、削除された事実0件、捏造された数値0件となりました。ただし、これは実行ごとの測定値であり、保証ではありません。修正から6日後に取得した exp-2 の凍結キャプチャには、正しいものの出典のない参照範囲が1件残っており、設計どおりにフラグが立っています(RESULTS.md §6)。こうした残存リスクがあるため、現在は評価によって Patiently のバックエンドを CI でゲートし、稼働中のサービスを毎週再スコアリングしています。捏造があれば、最初の発生時点で不合格になります。

node src/runner.mjs --online --adapter ./src/adapters/patiently.mjs
PubCrawl — 検索機能(ほかのすべてが根拠とするレイヤー)

PubCrawl にはモデルがありません。人手で検証したアンカーと構造的不変条件を基準に検索の忠実性を検証し、下流のすべての引用を損なう可能性のあるパーサーのリグレッション(著者配列の統合、[object Object] の漏出など)を検出します。OpenGATE が非 AI システムもスコアリングできることに意味があります。エビデンスに基づく AI の信頼性は、その基盤となる検索の信頼性に左右されるからです。

node src/runner.mjs --online --adapter ./src/adapters/pubcrawl.mjs

手法の全容とモデル比較については、RefCheckr の評価方法をご覧ください。

プロジェクト構成

opengate/
├── src/
│   ├── lib/          metrics + shared grounding core (single source of truth)
│   ├── scorers/      one file per metric family (7 scorers)
│   ├── adapters/     system-under-test boundary (refcheckr.mjs is the reference)
│   └── runner.mjs    CLI: discover cases → score → report → snapshot → gate
├── datasets/         gold-labelled cases (39) + fixtures + schema
├── examples/         worked examples (NVIDIA NIM RAG)
├── mcp/              MCP server (@pharmatools/opengate-mcp)
├── python/           opengate-grounding (PyPI) + DeepEval metric
├── Dockerfile        CPU-only image (pharmatools/opengate)
└── action.yml        GitHub Action

ドキュメント

ドキュメント内容
はじめに汎用 RAG システムで、ゼロから CI ゲートを構築する方法
ADAPTERS.mdアダプターの契約と最小限のひな形
datasets/SCHEMA.mdゴールドケースの形式
ロードマップ今後の予定と 1.0 までの道のり
コントリビューション開発環境のセットアップ、ケース/アダプター/スコアラーの追加、プルリクエストの手順
変更履歴リリース履歴

コントリビューション

コントリビューションを歓迎します。特に、ゴールドケース(新しいドメイン、引用スタイル)、アダプター(システムとの接続)、スコアラー(新しいメトリクスファミリー)を歓迎します。CONTRIBUTING.md をご覧ください。サポートとガバナンスに関する期待事項、および AI 支援開発の開示についても記載されています。大きな変更については、イシューを開いてご相談ください。1.0 より前の段階ではインターフェースが変更される可能性があり、破壊的変更はセマンティックバージョニングで示されます。

OpenGATE の引用

研究で OpenGATE を使用する場合は、引用してください。引用メタデータは CITATION.cff に記載されています(GitHub の「このリポジトリを引用」ボタンでも使用されます)。

ライセンス

MIT — 評価フレームワークはブラックボックスであるべきではないためです。評価がデプロイの判断に影響する場合、エンジニアはすべてのスコアラー、メトリクス、ベンチマークを確認できるべきです。

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。