mcpField
L
LatentGate

LatentGate

ローカル
github.comAI・エージェント251 週間前に更新

LatentGate について

LatentGateは、ログ、JSON、ドキュメント、Webページを読み込む前に最適化する、コーディングエージェント向けのローカルMCPサーバーです。APIキー不要の決定的なテキスト最適化を行い、コードブロック、URL、引用文字列を保持します。

主な機能

  1. 01オフラインでの決定的なテキスト最適化
  2. 02質問や予算に応じたテキスト最適化
  3. 03最適化済みファイルの読み込み
  4. 04トークン数のカウント
  5. 05画像・ドキュメント圧縮ツール

活用シーン

  1. 01反復するログの分析前圧縮
  2. 02長いプロンプトのトークン予算への調整
  3. 03大きなJSONやドキュメントの読み込み
  4. 04トークン数の確認

MCP 対応

MCPサーバーとして、ファイル読み込み、テキスト最適化、トークン数カウントのツールをクライアントに公開します。画像および一部の圧縮ツールにはOllamaが必要です。

設定

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

mcp.json · 共通設定
{
"mcpServers": {
"kathanmodh259-latent-gate": {
"command": "uvx",
"args": [
"latent-gate"
]
}
}
}
起動コマンドuvx latent-gate

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

パッケージ
pypilatent-gate1.4.2

ツール

9

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

パラメーター型必須説明
pathstringはいテキストファイルへのパス
levelenumいいえlossless = 意味を変えない;balanced = ログの繰り返し部分も折りたたみ、冗長部分を削除;aggressive = 最も関連性の高い文のみを保持(約 50%)lossless | balanced | aggressive
questionstringいいえ探している内容(文の選択に焦点を当てます)
max_tokensintegerいいえ結果のトークン予算(0 = 予算なし)

詳細

LatentGate

AI にはノイズではなく、シグナルを届けましょう。

AI が読み込む前に、ログ、JSON、ドキュメント、Web ページを縮小する MCP サーバーです。オフラインで、決定論的に、約3msで動作し、API キーは不要です。さまざまな開発データを組み合わせたコーパスではトークンを66%削減し、繰り返しの多いログでは90%以上削減します。

Python 3.10+ License: Proprietary Version PRs Welcome Ollama MCP Prometheus Grafana k6 Vercel CI Downloads Listed on mcpservers.org

Claude で使う | クイックスタート | Python API | REST API | モニタリング | 負荷テスト | デプロイ | AI ツール | ベンチマーク | コントリビューション


動作を見る

ブラウザーで試す → 実際のオプティマイザーは WebAssembly 経由でお使いの マシン上で動作します。貼り付けた内容がアップロードされることはありません。

LatentGate(balanced)を通して読み込んだ400行のエラーログ(tiktokenで測定):

BEFORE  13,641 tokens
2026-10-08 09:00:00 ERROR order 10000 failed: payment gateway timeout after 2982ms (retry 1/3)
... 398 more lines in the same shape ...

AFTER   145 tokens  (98.9% saved)
2026-10-08 09:00:00 INFO app started, 3 workers
2026-10-08 09:00:00 ERROR order 10000 failed: payment gateway timeout after 2982ms (retry 1/3)
[… 398 similar lines: order 10001…10398, 2900…3100 ms …]
2026-10-08 09:06:39 ERROR order 10399 failed: payment gateway timeout after 3030ms (retry 1/3)
2026-10-08 09:07:00 FATAL circuit breaker open for payments-api

1行で Claude Code にインストールし、*「app.logを読んで、注文が失敗する理由を教えて」*と尋ねられます:

claude mcp add --scope user latent-gate -- uvx --from "latent-gate[mcp,tokens]" latent-gate-mcp

**信頼できる点:**同じ入力には常に同じ出力が返されるため、プロバイダーのプロンプトキャッシュが引き続き機能します。出力が入力より大きくなることはありません。コードブロック、URL、引用符で囲まれた文字列はバイト単位で元のまま保持されます。level="lossless"では、空白、JSON の書式、完全一致する重複以外は変更されません。 **デフォルトレベルでのトレードオフ:**ほぼ同一の行が連続する箇所は、最初と最後の行、および値の範囲にまとめられるため、まとめられた部分に含まれる個別の ID は保持されません。事実が失われる箇所も含めたコーパス全体はコストベンチマークに掲載されており、latent-gate --optimizer-benchmarkで再現できます。

Claude Code、Claude Desktop、Cursor、Cline、Continue、Zed で、無料かつオフラインで動作します。

何もインストールしたくない場合は? 公式のmcprush でホストされている LatentGateなら、ローカルサーバーを使えない環境(Web 版やモバイル版の claude.ai など)でも動作します。無料プラン(月300回)と、月額9ドルからの有料プランがあります。


問題

画像や長いプロンプトを GPT-4o/Claude/Gemini に送信するたびに、本来なら無料でローカル処理できる内容のために、1,000以上のトークンを消費しています。

Traditional:  Image -> Cloud LLM (1,200 tokens) -> Answer
LatentGate:   Image -> Local Ollama (FREE) -> Cloud LLM (200 tokens) -> Answer

機能

機能説明
ローカルファースト画像とテキストの圧縮は Ollama 上で実行されます(無料、API キー不要)
トークン最適化事実を保持する決定論的な圧縮:現実的な開発コーパスでトークンを 66% 削減し、約 1ms で処理します(ベンチマーク)
MCP サーバーClaude Desktop、Cursor、Cline、Continue、Zed で動作します
選択的デコード動画では、シーンが変わったときだけ API を呼び出します(コサイン類似度を使用し、呼び出し回数を約 2.85 倍削減)
テキスト圧縮長いプロンプト、会話、RAG ドキュメントをローカルで圧縮します
速度の最適化コネクションプーリング、モデルのプリロード、並列処理
マルチプロバイダーOpenAI、Anthropic、Google、Groq、DeepSeek、Together、Azure、AWS Bedrock、Ollama、または OpenAI 互換の任意のエンドポイント
REST APIウェブアプリケーションとの連携に使える FastAPI サーバー
動画処理動画ファイルを直接入力すると、フレームを自動的に抽出します
コスト追跡SQLite による分析とエクスポート可能なレポートを備えた、永続的なコスト追跡
非同期サポートFastAPI、aiohttp などに対応する、ブロッキングしない非同期メソッド
ストリーミング応答リモート LLM からの応答をストリーミングします
設定の永続化環境変数による上書きに対応した YAML/TOML 設定ファイル
構造化ログローテーションと相関 ID に対応した JSON 形式のログ
Docker サポート簡単にデプロイできる Dockerfile と docker-compose
プラグインシステムドメイン固有の圧縮に対応するカスタムプロセッサー
多言語対応自動検出に対応し、30 以上の言語をサポート

Claude で使う

LatentGate は MCP サーバーとして Claude に接続できます。最適化ツールは Ollama も API キーも不要で、オフラインで動作します。Claude はこのツールを通じて大量のログ、JSON ダンプ、ドキュメントを読み込み、コンテキストの使用量を大幅に抑えられます。400 行のエラーログなら、14,400 トークンから約 100 トークンになります。

uv が必要です(初回実行時に uvx が PyPI から LatentGate を取得します)。 初回実行では依存関係がダウンロードされます。接続が遅いと Claude の MCP 起動制限である 30 秒を超えることがあります。あらかじめ一度実行してください(2 回目以降の起動は約 2 秒です)。

uvx --from "latent-gate[mcp,tokens]" latent-gate --optimizer-benchmark

Claude Code — プラグイン(MCP サーバーと、Claude に使用タイミングを知らせるスキル):

/plugin marketplace add KathanModh259/latent-gate
/plugin install latent-gate@latent-gate

Claude Code — MCP サーバーのみ:

claude mcp add latent-gate -- uvx --from "latent-gate[mcp,tokens]" latent-gate-mcp

任意のエージェント — Agensi マーケットプレイスから: LatentGate Context Saver は Claude Code、Cursor、Codex CLI、その他 20 以上のエージェント向けの公式スキルです。LatentGate が未導入の場合はセットアップし、ローカル版とホスト版の両方に対応して、いつ使用するかをエージェントに知らせます。

Claude Desktop — claude_desktop_config.json に追加して再起動します。

{
  "mcpServers": {
    "latent-gate": {
      "command": "uvx",
      "args": ["--from", "latent-gate[mcp,tokens]", "latent-gate-mcp"]
    }
  }
}

あとは、次のように尋ねるだけです:「latent-gate で logs/app.log を読み、注文が失敗する理由を教えてください。」

ツールOllama が必要説明
read_file_optimizedいいえテキストファイルを読み込み、最適化した形式で返します(編集するファイルではなく、読み込むファイルに使用します)
optimize_textいいえ手元にあるテキストを最適化します。必要に応じて question / max_tokens の予算を指定できます
count_tokensいいえトークン数を数えます(tiktoken o200k_base)
compress_imageはい画像をローカルで説明し、約 150 トークンのシーン情報を返します
compress_text / compress_conversation / compress_documentsはいオプティマイザーと、事実確認を行うローカル LLM による圧縮
get_statsはいセッション統計

クイックスタート

インストール
# Core install
pip install latent-gate

# With MCP server (for Claude Desktop, Cursor, Cline, etc.)
pip install latent-gate[mcp]

# With API server (for web applications)
pip install latent-gate[api]

# With video processing
pip install latent-gate[video]

# With embedding-based similarity (more accurate selective decoding)
pip install latent-gate[embeddings]

# With LangChain integration
pip install latent-gate[langchain]

# With AWS Bedrock support
pip install latent-gate[bedrock]

# Exact token counts via tiktoken (otherwise a calibrated ~6%-error estimate)
pip install latent-gate[tokens]

# With all features
pip install latent-gate[all]
Ollama モデルを取得
ollama pull llava:7b      # Vision model (required for image queries)
ollama pull llama3:8b     # Text model (required for text compression & prediction)
ワンコマンドでクイックスタート
chmod +x scripts/quickstart.sh
./scripts/quickstart.sh

これで、Ollama → モデルの取得 → API サーバー → ウェブサイトがすべて起動します。--no-pull、--no-website、--port 9000 などのオプションについては、scripts/quickstart.sh を参照してください。

CLI の使用方法
# Image query
latent-gate photo.jpg "What is in this image?" --provider ollama -v

# Text compression
latent-gate --text "Your long prompt here..." --provider ollama -v

# Text from file
latent-gate --text-file prompt.txt --provider openai -v

# Image + Text combined
latent-gate photo.jpg "Analyze" --text "Extra context..." -v

# Full JSON output
latent-gate photo.jpg "Describe" --json -v

# Compress only, deterministically (no LLM call, ~1ms, reproducible)
cat prompt.txt | latent-gate --text-file - --compress-only --deterministic --level balanced

# Reproduce the token-savings benchmark (no Ollama needed)
latent-gate --optimizer-benchmark

# Production benchmark
latent-gate --benchmark --benchmark-output reports/benchmark.json

# Start API server (requires: pip install latent-gate[api])
latent-gate-api
本番環境のセキュリティ強化

API をデプロイする場合、画像パスを直接読み込める場所を信頼できるディレクトリに限定してください。

set LATENTGATE_ALLOWED_IMAGE_ROOTS=C:\safe-images;D:\datasets
latent-gate-api

リリース前にベンチマークを実施し、速度と削減効果を推測ではなく実測してください。

latent-gate --benchmark --json

Python API

画像クエリ
from latent_gate import LatentGatePipeline, PipelineConfig

config = PipelineConfig(
    vision_model="llava:7b",
    predictor_model="llama3:8b",
    remote_provider="openai",
    remote_model="gpt-4o-mini",
)

with LatentGatePipeline(config) as pipeline:
    result = pipeline.query("photo.jpg", "What is in this image?")

    print(result["answer"])
    print(f"Tokens sent: ~{result['tokens_estimated']}")
    print(f"Timing: {result['timing']}")
テキスト圧縮
# Long prompt compression
result = pipeline.query_text("Your 500-word prompt here...", mode="auto")

# Conversation history compression
messages = [
    {"role": "user", "content": "Help me with Kubernetes setup"},
    {"role": "assistant", "content": "Sure! What's your target configuration?"},
    {"role": "user", "content": "3 nodes, t3.large, us-east-1 with autoscaling"},
]
result = pipeline.query_conversation(messages, "Now give me the setup commands")

# RAG document compression
documents = ["doc1 text...", "doc2 text...", "doc3 text..."]
result = pipeline.query_documents(documents, "How do I implement JWT refresh?")

# Universal (auto-detect input type)
result = pipeline.query_universal(text="Explain this code...", image="screenshot.png")
バッチ処理
# Sequential with selective decoding (skips redundant API calls)
results = pipeline.query_batch(image_paths, "Describe each scene")

# Parallel processing
results = pipeline.query_batch(image_paths, "Describe each scene", parallel=True, max_workers=4)

# Text batch
results = pipeline.query_batch_texts(text_list, question="Summarize each")
ストリーミング
# Stream image query
for token in pipeline.query_stream("photo.jpg", "Describe this"):
    print(token, end="", flush=True)

# Stream text query
for token in pipeline.query_text_stream("Long prompt...", mode="compress"):
    print(token, end="", flush=True)

REST API

サーバーの起動
# Default (0.0.0.0:8000)
latent-gate-api

# Custom host/port
# Linux/macOS:
LATENTGATE_HOST=127.0.0.1 LATENTGATE_PORT=9000 latent-gate-api

# Windows PowerShell:
$env:LATENTGATE_HOST="127.0.0.1"; $env:LATENTGATE_PORT="9000"; latent-gate-api

# Windows CMD:
set LATENTGATE_HOST=127.0.0.1 && set LATENTGATE_PORT=9000 && latent-gate-api
エンドポイント
メソッドエンドポイント説明
GET/healthヘルスチェック(Ollama 接続ステータス)
GET/statsセッション使用統計
POST/query/image画像クエリ
POST/query/textテキスト圧縮
POST/query/conversation会話の圧縮
POST/query/documentsRAG ドキュメントの圧縮
POST/query/universal入力タイプの自動検出
POST/query/image/uploadクエリ用の画像をアップロード
リクエスト例
import requests

# Image query
response = requests.post("http://localhost:8000/query/image", json={
    "image_path": "photo.jpg",
    "question": "What is in this image?"
})

# Text query
response = requests.post("http://localhost:8000/query/text", json={
    "text": "Your long prompt here...",
    "question": "Summarize this",
    "mode": "auto"  # auto | compress | summarize | condense | code
})

# Health check
response = requests.get("http://localhost:8000/health")
print(response.json())  # {"status": "healthy", "ollama_connected": true, ...}

非同期サポート

import asyncio
from latent_gate import AsyncLatentGatePipeline, PipelineConfig

async def main():
    async with AsyncLatentGatePipeline() as pipeline:
        # Single queries
        result = await pipeline.query("photo.jpg", "What is this?")
        result = await pipeline.query_text("Long prompt...")

        # Concurrent batch processing
        results = await pipeline.query_many_images(
            ["img1.jpg", "img2.jpg", "img3.jpg"],
            "Describe each image",
            max_concurrent=3,
        )

asyncio.run(main())

動画処理

from latent_gate import LatentGatePipeline, PipelineConfig, VideoProcessor, VideoConfig

config = PipelineConfig(
    vision_model="llava:7b",
    remote_provider="ollama",
    remote_model="llama3:8b",
)

video_config = VideoConfig(
    fps=1.0,            # Extract 1 frame per second
    max_frames=100,     # Max frames to process
    quality=95,         # JPEG quality
    resize_width=640,   # Resize frames (saves processing time)
)

with VideoProcessor(config, video_config) as processor:
    result = processor.process_video("video.mp4", "Describe the action")

    print(f"Frames processed: {result['total_frames']}")
    print(f"Unique scenes: {result['statistics']['unique_scenes']}")
    print(f"Skip rate: {result['statistics']['skip_rate']}")

設定

設定ファイル
# latentgate.yaml
ollama_base_url: http://localhost:11434
vision_model: llava:7b
predictor_model: llama3:8b
remote_provider: openai
remote_model: gpt-4o-mini
selective_decoding: true
similarity_threshold: 0.85
use_embeddings: true
enable_caching: true
temperature: 0.1
request_timeout: 120
track_costs: true
cost_db_path: "latentgate_costs.db"
from latent_gate import get_config, LatentGatePipeline

config = get_config("latentgate.yaml")
with LatentGatePipeline(config) as pipeline:
    result = pipeline.query("photo.jpg", "Describe this")
環境変数
変数説明デフォルト
OPENAI_API_KEYOpenAI API キー-
ANTHROPIC_API_KEYAnthropic API キー-
GOOGLE_API_KEYGoogle API キー-
LATENTGATE_REMOTE_PROVIDERリモートプロバイダーを上書きopenai
LATENTGATE_REMOTE_MODELリモートモデルを上書きプロバイダーのデフォルト(例:gpt-4o-mini、claude-sonnet-5)
LATENTGATE_VISION_MODELビジョンモデルを上書きllava:7b
LATENTGATE_LOG_LEVELログレベルINFO
LATENTGATE_LOG_FILEログファイルのパス-
LATENTGATE_LOG_JSONJSON ログ形式false
LATENTGATE_TRACK_COSTSコスト分析を有効化false
LATENTGATE_COST_DB_PATHSQLite DB のパス.latentgate_costs.db
LATENTGATE_API_KEYAPI で Authorization: Bearer <key> を必須にする(/compress を含む。WebSocket クライアントは ?api_key= を指定できます)未設定(制限なし)
LATENTGATE_COMPRESSION_LEVELトークン最適化レベル:lossless、balanced、aggressivebalanced
LATENTGATE_COMPRESSION_STRATEGYauto(最適化機能+事実確認済みローカル LLM)または deterministicauto
LATENTGATE_TARGET_TOKEN_BUDGET圧縮後のプロンプトの最大トークン数(0 = 予算なし)0
LATENTGATE_MAX_OUTPUT_TOKENSクラウドモデルが回答ごとに生成できる最大トークン数4096
LATENTGATE_PRELOADAPI 起動時に Ollama モデルをバックグラウンドでウォームアップtrue
LATENTGATE_MAX_CONCURRENT_REQUESTSAPI サーバー内のパイプライン呼び出しの最大同時実行数3
LATENTGATE_CORS_ORIGINSカンマ区切りの許可する CORS オリジンhttp://localhost:5173
設定の保存
from latent_gate import PipelineConfig, save_config

config = PipelineConfig(remote_provider="anthropic", remote_model="claude-sonnet-5")
save_config(config, "my_config.yaml")

Docker

# Start full stack (API + Ollama)
docker compose up -d

# Pull models first (one-time setup)
docker compose --profile setup up ollama-init

# Start with monitoring (Prometheus + Grafana)
docker compose --profile monitoring up -d

# Build and run manually
docker build -t latent-gate .
docker run -p 8000:8000 latent-gate

docker-compose の設定には、以下が含まれています。

  • latent-gate API サーバー(ポート 8000)
  • Ollama ローカル LLM サーバー(ポート 11434)
  • ollama-init 必要なモデルを自動取得するコンテナ(プロファイル:setup)
  • Prometheus ポート 9090 で動作するメトリクス収集ツール(プロファイル:monitoring)
  • Grafana ポート 3000 のダッシュボード(プロファイル:monitoring、認証情報:admin/latentgate)
監視スタック

監視機能を有効にして起動します。

docker compose --profile monitoring up -d

アクセス先:

LatentGate ダッシュボードは Grafana で自動的に読み込まれ、リクエストレート、レイテンシのパーセンタイル(p50/p95/p99)、トークン削減量、エラー率、パイプラインの健全性、エンドポイントの内訳を網羅する 9 つのパネルを表示します。

環境変数でカスタマイズできます。

  • GRAFANA_ADMIN — Grafana 管理者のユーザー名(デフォルト:admin)
  • GRAFANA_PASSWORD — Grafana のパスワード(デフォルト:latentgate)
  • GRAFANA_ANONYMOUS — 匿名アクセスを有効化(デフォルト:true)
  • LATENTGATE_ENABLE_METRICS — Prometheus メトリクスを有効化(デフォルト:true)

AI コーディングツールとの統合(MCP)

LatentGate は、主要な AI コーディングツールすべてで Model Context Protocol(MCP)サーバーとして動作します。AI アシスタントは、画像、長いプロンプト、ドキュメントをクラウドモデルに送信する前に自動的に圧縮します。

対応ツール
ツールステータスセットアップ
VS Code / Copilot対応拡張機能
Claude Desktop対応MCP 設定
Claude Code (CLI)対応スキル
Cursor対応MCP 設定
Cline (VS Code)対応MCP 設定
Continue.dev対応MCP 設定
Zed Editor対応MCP 設定
VS Code 拡張機能
code --install-extension KathanModh259.latent-gate-vscode

機能:

  • 任意の画像を右クリックして、LatentGate で圧縮できます
  • テキストを選択し、Ctrl+Shift+Alt+C を押して圧縮できます
  • アクティビティバーにコストダッシュボードを表示します
  • Copilot Chat 用に MCP を自動設定します
  • トークンの削減量をステータスバーに表示します
MCP のセットアップ

Claude については、Claude で使用するをご覧ください。Cursor、Cline、Continue、Zed などの MCP クライアントでは、同じサーバーコマンドを使用します:

{
  "mcpServers": {
    "latent-gate": {
      "command": "uvx",
      "args": ["--from", "latent-gate[mcp,tokens]", "latent-gate-mcp"]
    }
  }
}

または、環境にインストールして(pip install "latent-gate[mcp,tokens]")、"command": "latent-gate-mcp" を使用します。コマンドは latent-gate-mcp です。latent-gate は CLI であり、MCP 通信には対応していないので注意してください。画像ツールと compress_* ツールには、さらに ollama pull llava:7b と ollama pull phi3:mini が必要です。

各ツールの詳しいセットアップガイドについては、integrations/ フォルダーをご覧ください。

ホスト型 MCP(リモート、mcprush などのゲートウェイ向け)
docker build -f Dockerfile.mcp -t latent-gate-mcp .
docker run -p 8000:8000 -e LATENTGATE_API_KEY=change-me latent-gate-mcp
# or without Docker:  latent-gate mcp --http --port 8000

ストリーミング可能な HTTP を /mcp(ステートレスなので、どのインスタンスでも任意のリクエストに応答できます)と /health で提供します。リモートなので、ローカル MCP サーバーを実行できない環境でも動作します。ウェブ版やモバイル版の claude.ai、またコネクター URL しか受け付けないクライアントでも使用できます。このモードの主なツールは fetch_url_optimized です。URL からページ、JSON API、または生のログを取得し、要約モデルを使わずに、表示可能なテキストを圧縮して重複を除去して返します。 公開されていないアドレス(localhost、10.x、クラウドメタデータ)は拒否されます。これはライブ接続時に確認されるため、 DNS を悪用して回避することもできません。このモードでは:

  • read_file_optimized、compress_image、get_stats は非表示です。最初の 2 つは サーバーのディスクを読み取り、統計情報にはすべての呼び出し元の利用状況が混在するためです。
  • compress_* ツールは、LATENTGATE_HOSTED_OLLAMA=1 の場合(ホストで Ollama を実行している場合)にのみ一覧表示されます。
  • 各呼び出しの入力は 2MB に制限されます。
  • LATENTGATE_API_KEY が設定されている場合、リクエストには Authorization: Bearer <key> が必要です。キーはゲートウェイにのみ渡し、他者には渡さないでください。そうしないと、呼び出し元が有料プランを回避できてしまいます。
環境変数デフォルト目的
LATENTGATE_API_KEY未設定(公開、警告あり)ゲートウェイが送信する必要のあるベアラーキー
LATENTGATE_HOSTED_OLLAMAオフOllama を使用する compress_* ツールを公開します
PORT8000リッスンポート(ほとんどのホストが設定します)

速度の最適化

最適化内容効果
コネクションプーリングrequests.Session を使用して HTTP 接続を再利用します呼び出しあたり約 30~50% 高速化
モデルの事前読み込み初期化時に Ollama モデルをウォームアップします(keep_alive)5~15 秒のコールドスタートを解消
プロンプトの短縮最適化された抽出プロンプトで、出力トークン数を削減します生成が約 20% 高速化
3 段階の JSON 解析高速解析、テキストからの抽出、LLM フォールバック90% のケースで遅い LLM 呼び出しを回避
並列処理ThreadPool を介して画像とテキストを同時に処理します複合クエリが約 40% 高速化
コンテンツハッシュキャッシュ繰り返し使用する画像をディスクにキャッシュしますキャッシュヒット時は即時
選択的デコードコサイン類似度により、冗長な API 呼び出しをスキップします呼び出し回数を約 2.85 倍削減

コストのベンチマーク

画像クエリ(プロバイダー別、推定)

各プロバイダーが公開している画像トークンの計算式と、ローカルで生成する約 150 トークンの説明との比較による推定値です。

プロバイダー生の画像トークン数LatentGate のトークン数削減率
OpenAI GPT-4o(高精細)約 1,105約 150約 86%
Claude 3.5 Sonnet(1MP 画像)約 1,334約 150約 89%
Gemini 2.0 Flash約 258約 150約 42%
テキスト:測定可能で再現性あり

組み込みの現実的な入力を使用する決定論的オプティマイザーを、tiktoken(o200k_base)でカウントしました。 保持された事実 = 数値、識別子、URL、ファイル名、コードのうち、原文どおりに保持されたものの割合です。 latent-gate --optimizer-benchmark で再現できます(Ollama や API キーは不要です)。

入力トークン数losslessbalanced(デフォルト)aggressive
整形済み API JSON1,407−33%、事実 100%−33%、事実 100%−33%、事実 100%
60 行の繰り返しログ+トレース2,2350%−92%(範囲を保持)−92%
3 回貼り付けられたプロンプト121−61%、事実 100%−61%、事実 100%−61%、事実 100%
要件 6 件を含む冗長な仕様1270%−20%、事実 100%−51%、事実 90%
コードレビューの依頼57−5%−16%、事実 100%−28%、事実 100%
5 件の RAG チャンク+質問1900%−58%(関連する 2 件のドキュメントを保持)−58%
合計4,137−13%、事実 100%−66%−67%

ログを折りたたむと個々の ID/タイムスタンプは失われます(折りたたみ後も先頭、末尾、値の範囲は保持されます)。 また、RAG では質問に関係のないドキュメントの事実が除外されます。どちらも意図的な動作です。

仕組み(安全性の高い順。latent_gate/optimizer.py を参照):

  1. 保護:コードブロック、インラインコード、URL、引用文字列を保護し、バイト単位で完全に復元します
  2. Lossless:空白/Unicode の整理、JSON の最小化(値は変更しません)、重複の折りたたみ
  3. ログの折りたたみ:数値/ID のみが異なる一連のログ行を、先頭、末尾、範囲にまとめます
  4. フィラー:単なる社交辞令(「こんにちは!」、「前もってお礼申し上げます!」)や曖昧な表現を削除します
  5. 選択(予算を超過した場合、または aggressive の場合のみ):BM25 による質問との関連度+要件の手がかりを使用し、 元の順序を維持します。ユーザーが実際に求めている内容は決して削除しません

保証:出力のトークン数が入力を上回ることはありません。同じ入力からは同じ出力が得られるため、プロバイダーのプロンプトキャッシュが引き続き機能します。ローカル LLM による書き換えを使用する場合は、入力より短く、かつすべての事実を保持している必要があります。そうでない場合は、決定論的な結果が送信されます。

from latent_gate import optimize

r = optimize(long_prompt, question="What failed?", level="balanced", max_tokens=2000)
print(r.optimized_tokens, r.savings_pct, r.stages)
動画

選択的デコードにより、前のフレームと類似したフレームではリモート呼び出しをスキップします(一般的な映像では呼び出し回数を約 2.85 倍削減)。

大規模運用時(gpt-4o-mini で画像クエリ 10,000 件、推定)
指標従来方式LatentGate節約額
入力トークン12,000,0002,000,00010M トークン
コスト$1.80$0.30$1.50(83%)

コストの追跡

from latent_gate import CostTracker

tracker = CostTracker()
tracker.record_usage(
    query_type="image",
    provider="openai",
    model="gpt-4o-mini",
    input_tokens=150,
    output_tokens=200,
    tokens_saved=1000,
    compression_ratio=6.7,
    latency_ms=1500,
)

# Session statistics
stats = tracker.get_session_statistics()
print(f"Total cost: ${stats['total_cost']:.4f}")
print(f"Tokens saved: {stats['total_tokens_saved']}")

# Cost projection
projection = tracker.get_cost_projection(
    daily_queries=1000,
    provider="openai",
    model="gpt-4o-mini"
)
print(f"Monthly savings: ${projection['savings']['monthly']:.2f}")

# Export report
tracker.export_report("usage_report.json", fmt="json")
tracker.export_report("usage_report.csv", fmt="csv")

多言語サポート

from latent_gate import detect_language, MultiLanguageProcessor

# Detect language
lang = detect_language("Esto es un texto en español")
print(f"Detected: {lang.name} ({lang.confidence:.0%})")

# Process with auto-translation to English
processor = MultiLanguageProcessor()
text, lang_info = processor.process("Texto en español para analizar")
print(f"Language: {lang_info.name}, Translated: {text[:100]}...")

プロジェクト構成

latent-gate/
├── latent_gate/
│   ├── __init__.py           # Package exports and version
│   ├── config.py             # PipelineConfig dataclass
│   ├── config_loader.py      # YAML/TOML/JSON config loading
│   ├── payload.py            # SemanticPayload (compact representation)
│   ├── text_processor.py     # TextPayload + TextProcessor (local compression)
│   ├── local_processor.py    # X-Encoder + Predictor (Ollama vision pipeline)
│   ├── remote_decoder.py     # Y-Decoder (OpenAI, Anthropic, Google, Ollama)
│   ├── selective_decoder.py  # Cosine/Jaccard similarity for skip decisions
│   ├── fast_client.py        # Connection pooling + model preloading
│   ├── cache.py              # Content-hash disk cache
│   ├── pipeline.py           # LatentGatePipeline (main orchestrator)
│   ├── async_pipeline.py     # AsyncLatentGatePipeline
│   ├── video_processor.py    # Video frame extraction + batch processing
│   ├── cost_tracker.py       # SQLite-based cost analytics
│   ├── mcp_server.py         # MCP server (Model Context Protocol)
│   ├── api_server.py         # FastAPI REST server
│   ├── cli.py                # Command-line interface
│   ├── logging_config.py     # Structured logging with rotation
│   ├── plugin_system.py      # Custom processor plugins
│   └── multilang.py          # Multi-language detection and translation
├── integrations/
│   ├── agent_skills/         # Prompt compression skill + scripts
│   ├── vscode-extension/     # VS Code extension source
│   ├── cursor/               # Cursor rules and MCP config
│   ├── continue_dev/         # Continue.dev config
│   ├── langchain/            # LangChain integration wrapper
│   ├── llamaindex/           # LlamaIndex retriever integration
│   └── openai_functions/     # OpenAI/Anthropic function schemas
├── tests/                    # 240+ tests (unit + integration)
├── website/                  # React-based analytics dashboard & landing page
├── deployments/              # Kubernetes Helm configs
├── .github/workflows/        # CI + publish workflows
├── Dockerfile
├── docker-compose.yml
├── pyproject.toml
└── requirements.txt

コミュニティ


コントリビューション

コントリビューションを歓迎します!CONTRIBUTING.md をご覧ください。

開発環境のセットアップ
git clone https://github.com/KathanModh259/latent-gate.git
cd latent-gate
python -m venv .venv
source .venv/bin/activate       # Linux/macOS
.venv\Scripts\Activate.ps1      # Windows

pip install -e ".[dev]"
テストの実行
pytest tests/ -v
優先分野
  • 追加のビジョンモデルのサポート(Florence-2、InternVL、Qwen-VL)
  • ドメイン固有のユースケース向けカスタム類似度プラグイン
  • リアルタイムストリーミング向け WebSocket のサポート
  • 高度なコスト分析と最適化の提案
  • 専門業界向けプラグインの開発
  • テストカバレッジの改善
  • ドキュメントとサンプル

引用

@software{latentgate2026,
  author  = {Kathan Modh},
  title   = {LatentGate: Local-First Semantic Compression Pipeline},
  year    = {2026},
  url     = {https://github.com/KathanModh259/latent-gate},
  version = {1.3.0}
}

VL-JEPA(Meta FAIR、2025)に着想を得ています。


ライセンス

独自のプロプライエタリライセンスです。LICENSE をご覧ください。


Kathan Modh が開発

ローカルで処理。賢く送信。コストを削減。

コメント

MCP は初めてですか?

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

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