LMProbe — LLM可用性プローブと統一ローカルAPI

AI/ML

概要

LMProbeは、複数のLLM APIエンドポイント(OpenAIやAnthropicなど)を横断的にチェックして、実際に利用可能なモデルを検出し、その結果を元にローカルで統一されたAPIを立ち上げるプロキシツールです。サーバ起動時に毎回ネットワーク検査を行う代わりに事前プローブ済みの設定を保存してスキップでき、バックグラウンドポーリングで可用性を継続的に更新します。モデル名フィルタを正規表現で指定できるため、必要なモデルだけを対象にすることができます。主に開発・検証・フォールバック環境での利便性向上を狙った設計で、複数ベンダーのAPI形態をOpenAI/Claude互換フォーマットで扱える点が魅力です。

GitHub

リポジトリの統計情報

  • スター数: 6
  • フォーク数: 1
  • ウォッチャー数: 6
  • コミット数: 4
  • ファイル数: 6
  • メインの言語: Python

主な特徴

  • 複数LLMプロバイダのAPIエンドポイントを自動検出(プローブ)して利用可能モデルを確認
  • OpenAI互換およびAnthropic Claude互換のエンドポイントをローカルで提供する統一プロキシ
  • 事前プローブ済み設定の保存で起動時間を短縮、バックグラウンドポーリングで状態更新
  • 正規表現フィルタでプローブ対象モデルを柔軟に絞り込み可能

技術的なポイント

LMProbeは「検出(probing)」と「変換(proxy)」の2つの主要な役割を担います。検出部分では、指定したAPIエンドポイントに対して軽量な問い合わせ(ヘルスチェックや”models”一覧取得、簡単な推論リクエストなど)を送信し、成功レスポンスやモデル名の存在から可用性を判定します。これにより、ドキュメント上は存在するが実際には使えないモデルや、権限・料金等でアクセスできないモデルを事前に除外できます。プローブは同時接続数やレート制限を考慮してスロットリングや指数バックオフを取り入れる設計が望ましく、また結果をローカルファイル(pre-probed config)に保存できるため、サーバ起動時の再検査を省略できます。

プロキシ部分では、受け取ったOpenAI/Claude形式のリクエストを検出済みの実際のバックエンドにルーティングし、必要に応じてリクエスト/レスポンスのフォーマット変換を行います。例えば、パラメータ名やメッセージフォーマット、ストリーミング挙動の差分を吸収するアダプター層があると便利です。継続的なバックグラウンドポーリングによりモデルの可用性を更新し、動的にルーティング先を切り替えられます。

実装面ではPython製であるため、非同期HTTPクライアント(asyncioベース)や軽量なWebフレームワーク(FastAPIやStarlette等)を用いて高並列のプローブおよび低遅延のAPIサーバを構成することが一般的です。セキュリティ面では、外部APIキーの取り扱い(環境変数やシークレット管理)、プロキシ経由でのキー漏洩防止、TLS終端やアクセス制御が重要です。さらに、運用時の可観測性としてプローブ結果のログ出力、メトリクス(成功率・遅延・エラー種別)の収集、エンドポイントごとのレート制限管理を備えると信頼性が向上します。

プロジェクトの構成

主要なファイルとディレクトリ:

  • LICENSE: file
  • README.md: file
  • lmprobe: dir
  • main.py: file
  • pyproject.toml: file

…他 1 ファイル

まとめ

複数ベンダーのLLMを一元管理してテストや開発を効率化する実用的な小型プロキシツールです。

リポジトリ情報:

READMEの抜粋:

LMProbe

Auto-detect LLM API model availability and serve as a unified proxy with OpenAI and Claude-compatible endpoints. 可用于打野自动测活

Features

  • Auto-detection: Probes API endpoints to verify which models are actually available
  • Unified proxy: Single API server supporting both OpenAI and Claude formats
  • Pre-probed configs: Save verified models to skip probing on server start
  • Background polling: Continuously updates model availability
  • Regex filtering: Probe specific…