LLMSlim memory について
LLMSlim は、AI エージェントやコーディングツール向けの長期メモリーとコンテキスト処理を、MCP サーバー、Python ライブラリー、HTTP サーバーとして提供します。メッセージをそのまま保存し、LLM を呼び出さずにトークン予算内で検索・圧縮します。
主な機能
- 01会話メッセージの逐語保存
- 02トークン予算内でのメモリー検索
- 03長いログや文書の圧縮
- 04SQLite または Postgres への保存
- 05五つの MCP ツールの提供
活用シーン
- 01エージェントの長期会話記憶の保持
- 02過去のメッセージから関連情報を検索
- 03長いログをコンテキスト予算に収める
- 04プロンプト用コンテキストの計画と圧縮
MCP 対応
MCP サーバーは remember、recall、list_memories、forget、fit_context の五つのツールを公開します。メモリーは既定でローカルの SQLite ファイルに保存され、ユーザーとエージェントの範囲はサーバー起動時に固定されます。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
uvx llmslimLLMSLIM_MEMORY_DBSQLite file for the memory (default ~/.llmslim/memory.db)LLMSLIM_USER_IDWhose memory this server holds (default "default")LLMSLIM_AGENT_IDOptional agent id, so each agent keeps its own memoryローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。
ツール
5掲載時のツール一覧 · 4 日前に更新
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| role | string | いいえ | |
| text | string | はい | |
| session | any | いいえ |
詳細
LLMSlim
LLM を呼び出さずに、AI エージェントやコーディングツールに長期記憶とコンテキスト選択を提供します。
LLMSlim は、ユーザーやエージェントの発言を一字一句そのまま保存し、設定したトークン予算内で質問への回答に役立つ部分を返します。MCP サーバー、Python ライブラリ、または小規模な HTTP サーバーとして動作します。
使用例 • ドキュメント • ライブ Studio プレイグラウンド • Sarvam 連携 • ベンチマーク • 変更履歴
PyPI の llmslim 0.11.1 を使った実際の Python セッションです。スクリプトで入力し、asciinema で記録しています(スクリプト、録画)。
以下の各 MCP セットアップでは、uv(Python 3.10 以降)を使って同じサーバー llmslim mcp を起動します。メモリはローカルの SQLite ファイル ~/.llmslim/memory.db に保存されます。
| ツール | 実行方法 |
|---|---|
| Claude Code | claude mcp add llmslim -- uvx --from "llmslim[mcp]" llmslim mcp |
| Claude Code プラグイン | /plugin marketplace add Thanatos9404/llmslim、続けて /plugin install llmslim@llmslim |
| Codex | codex mcp add llmslim -- uvx --from "llmslim[mcp]" llmslim mcp |
| GitHub Copilot CLI | copilot mcp add llmslim -- uvx --from "llmslim[mcp]" llmslim mcp |
| Gemini CLI | gemini extensions install https://github.com/Thanatos9404/llmslim |
| Hermes Agent | hermes plugins install llmslim --enable、続けて hermes config set context.engine llmslim:長い会話をローカルで圧縮するコンテキストエンジンです(プラグイン) |
初回起動時に、LLMSlim とその依存関係がダウンロードされます。クライアントが待機を中断する場合は、uvx --from "llmslim[mcp]" llmslim mcp --help を一度実行して uv のキャッシュを作成し、その後クライアントを再起動してください。
Python(pip install llmslim、Python 3.9 以降):
from llmslim.memory import Memory
mem = Memory("memory.db") # a SQLite file; Memory("postgresql://...") with llmslim[postgres]
mem.add([{"role": "user", "content": "I'm allergic to peanuts."}], user_id="asha")
context = mem.search("Am I allergic to anything?", user_id="asha", budget=1500)
print(context.text) # put it in your prompt as data, not instructions
TypeScript(npm install llmslim、Node 18 以降)、llmslim serve を使用します(pip install "llmslim[server]"):
import { LLMSlim } from "llmslim";
const slim = new LLMSlim(); // http://127.0.0.1:8080 unless LLMSLIM_BASE_URL is set
await slim.memories.add({ userId: "asha", messages: "I'm allergic to peanuts." });
const context = await slim.memories.search({ userId: "asha", query: "Am I allergic to anything?", budget: 1500 });
テスト付きですぐに実行できるサンプル:Claude Code のメモリ、 LangChain エージェント、Pydantic AI エージェント、 大きなログ、TypeScript。
LLMSlim が役に立った場合は、スターを付けていただけると、ほかの人にも見つけてもらいやすくなります。ご意見はイシューでお待ちしています。
機能
- 5 つの MCP ツール:
remember、recall、list_memories、forget、fit_context。 - SQLite または Postgres にメッセージを一言一句そのまま保存します。保存時に要約や抽出は行いません。
- トークン予算内で呼び出します。
recallは、質問への回答となる保存済みメッセージを、日付とともに、予算内に収まる場合は全文で返します。fit_contextは、長いログやドキュメントを予算内に収まるよう縮小します。 - サーバー起動時にスコープを固定します。 ユーザー ID とエージェント ID はサーバー起動時に設定され、モデルからは変更できません。そのため、注入されたテキストに誘導されたモデルでも、別のユーザーのメモリーを読んだり削除したりすることはできません。
- LLM 呼び出しを行いません。 デフォルトでは、保存と呼び出しは単純なコードで処理されます。モデル、埋め込み API、API キーは不要です。
- MIT ライセンス。 ライブラリには Python 3.9 以降、MCP サーバーには 3.10 以降が必要です。
メモリー機能に加えて、LLMSlim Core はプロンプト、チャット履歴、取得したドキュメント、ツールスキーマもトークン予算内に圧縮して配置します。詳しくは以下のセクションをご覧ください。
LLM 呼び出しを行わない理由
保存はデータベースへの書き込みであり、呼び出しは決定論的なランキング処理です。そのため、返されるのはモデルが書き換えた内容ではなく、実際に発言された内容です。また、同じ履歴と質問には常に同じコンテキストが返されるため、呼び出しを簡単にテストできます。メモリーサーバーと llmslim serve は、独自にネットワーク呼び出しを行いません。ネットワークに接続するのは、PyPI からのインストール時(uvx でそのバージョンを初めて実行する場合を含む)と、tiktoken がトークナイザーファイルを一度ダウンロードするときです。
トレードオフとして、デフォルトの語彙モードは意味ではなく単語を照合するため、保存されたメッセージとは異なる言い回しの質問では見つからない場合があります。relevance="semantic" を指定すると、オプションのクロスエンコーダーを追加できます(llmslim[semantic]。初回にモデルがダウンロードされます)。詳しくは制限事項をご覧ください。
60 秒でプロンプトを圧縮
1. インストール PyPI から LLMSlim Core をインストールします(Python 3.9 以降)。実行に API キー、モデル、ネットワーク接続は必要ありません。
pip install llmslim
2. 実行 次のスニペットを実行します。
from llmslim import compress
ticket = """
Hi team, I hope you are all doing well and had a good weekend.
I am writing about invoice INV-2291, which charged us $480 instead of $240.
We upgraded to the Pro plan on 3 September, but the old Basic plan was billed as well.
Our finance lead was asking about this during the weekly sync, which ran long as usual.
Please refund the duplicate $240 charge to the card ending 4417.
Thanks so much, and let me know if you need anything else from me.
"""
result = compress(ticket, target_ratio=0.6) # target: keep about 60% of the tokens
print(result.compressed_text)
print(f"{result.original_tokens} -> {result.compressed_tokens} tokens ({result.reduction_percent:.1f}% fewer)")
3. 実行結果(llmslim 0.11.1、基本インストール時):
Hi team, I hope you are all doing well and had a good weekend. I am writing about invoice INV-2291, which charged us $480 instead of $240. We upgraded to the Pro plan on 3 September, but the old Basic plan was billed as well. Please refund the duplicate $240 charge to the card ending 4417.
112 -> 72 tokens (35.7% fewer)
6 文のうち 2 文が削除され、請求書番号、金額、プランの変更、返金依頼は残ります。デフォルトの抽出的モードでは入力から文を選択するだけなので、同じ入力には常に同じ出力が返されます。基本インストールでは、1 トークンあたり約 4 文字としてトークン数を推定し、その旨を 1 行の警告で表示します。pip install "llmslim[fast-tokens]" を実行すると、代わりに tiktoken でトークンを数えます。この入力では同じ 4 文が残り、カウントは 107 -> 72 tokens (32.7% fewer) と表示されます。
次へ: ドキュメント • プラットフォームのベータ版 • 課題
LLMSlim Core と LLMSlim Platform
本番環境の AI エージェントのためのコンテキストレイヤーです。 このリポジトリは LLMSlim Core(v0.11.2、MIT)です。ローカル優先のコンテキスト計画と圧縮により、指示と実行境界を維持しながら、プロンプト、会話履歴、RAG、メモリ、ツールスキーマを実際のトークン予算内に収めます。
| LLMSlim Core | LLMSlim Platform | |
|---|---|---|
| バージョン | 0.11.2 | 0.9.1 beta |
| ライセンス | MIT、このリポジトリ | プロプライエタリ、プライベートベータ |
| インストール | pip install llmslim | 招待制。PyPI では公開されていません |
| 機能 | Python プロセス内で、モデルに見えるコンテキストを圧縮、計画、追跡します | Core を基盤とし、検証可能なエージェント状態のタイムライン、説明および再生可能なコンテキスト判断、シャドウモードから始まる結果主導のコンテキストポリシーを構築します |
Core は完全なオープンソースであり続けます。Platform は Core に依存する別製品であり、そのコードはこのリポジトリには含まれていません。詳細を確認し、ベータ版へのアクセスを申請するには、llmslim.app/platformをご覧ください。
Core の新機能: エージェントコンテキストランタイム(v0.7.0)とキャッシュ対応コンテキストランタイム(v0.7.1)です。どちらも v0.7.1 以降の PyPI パッケージに含まれています。v0.7.0 はタグ付けされましたが、PyPI には公開されませんでした。
適応型コンテキストプランナー(v0.6.0)
LLMSlim は、固定比率でプロンプトを圧縮するだけのツールではなくなりました。適応型コンテキストプランナーは、各コンテキスト項目に安全な表現を選び、決定論的な制約付きアロケーターを使って、有限のモデル予算内に最も価値の高いコンテキストを収めます。従来の compress() API も引き続き完全にサポートされます。
v0.6.0 リリースでは、説明可能な項目ごとの判断、明示的な実行不能性の報告、計画後の検証、トークンとコストのテレメトリ、ポリシープリセット、Sarvam AI、Zoho、MongoDB とのオプションの統合が追加されました。また、基本インストールはローカル優先で、プロバイダーに依存しない構成を維持しています。
from llmslim import plan_context
plan = plan_context(
messages=[
{"role": "system", "content": "Answer only from verified context."},
{"role": "user", "content": "When does Acme renew?"},
],
documents=[{"content": "CRM: Acme renews on 2026-11-30."}],
query="Acme renewal date",
model="sarvam-105b",
max_input_tokens=8_000,
reserve_output_tokens=512,
)
assert plan.feasible
print(plan.final_context)
print(plan.metrics.planned_tokens, plan.metrics.estimated_input_cost_after)
基本インストールでは、オフラインで計画できます。オプションの統合機能は extras の背後に分離されています。
pip install "llmslim[sarvam]" # Sarvam provider (official sarvamai SDK)
pip install "llmslim[zoho]" # CRM and WorkDrive context sources
pip install "llmslim[mongodb]" # explicit memory and Atlas retrieval
アーキテクチャ、アルゴリズム、セキュリティモデル、CLI、およびオフラインで測定したベンチマークをご覧ください。
スタートアッププログラム
LLMSlimは15のスタートアッププログラムに参加しています。これらのプログラムはクレジット、ツール、ガイダンスを提供します。 いずれも投資家ではなく、プログラムへの参加は推奨を意味するものではありません。
| プログラム | 企業 |
|---|---|
| Sarvam Startup Program | Sarvam AI |
| Zoho for Startups | Zoho |
| MongoDB for Startups | MongoDB |
| Claude for Startups | Anthropic |
| OpenAI for Startups | OpenAI |
| Auth0 for Startups | Okta (Auth0) |
| Zendesk for Startups | Zendesk |
| Mixpanel for Startups | Mixpanel |
| Sentry for Startups | Sentry |
| Descope Hello World Startup Program | Descope |
| Pulumi for Startups | Pulumi |
| Honeycomb for Builders | Honeycomb |
| Exa Startup Grants | Exa |
| Neo4j Startup Program | Neo4j |
| Cartesia Startups Grant Program | Cartesia |
ロゴは各所有者の商標であり、それぞれのプログラムを識別するために使用されています。
Sarvam Startup ProgramとSarvamの統合
✦ Sarvam Startup Programに採択されました
LLMSlimはSarvam Startup Programに採択されました。これはプログラムへの参加のみを意味し、 パートナーシップではなく、Sarvam AIによる推奨を意味するものでもありません。
これとは別に、LLMSlim Coreには、公式のsarvamai Python SDKを基盤とするオプションのSarvam統合(llmslim[sarvam])が含まれています。コンテキストの計画と圧縮はローカルで行い、計画されたコンテキストのみをsarvam-105bなどのSarvamモデルに送信します。
- ローカルでの計画:取得したドキュメントは、リクエストを送信する前にPythonプロセス内で計画・圧縮されます。
- ローカル優先:機密性の高い取得コンテキストはローカルに保持され、モデルに送信されるのは計画されたコンテキストのみです。
- アプリケーションが制御を維持:LLMSlimは前処理ツールです。APIキー、プロンプト、推論はアプリケーションが管理し、コードからプロバイダーを呼び出さない限り、Sarvamにデータが送信されることはありません。
クイックスタート:Adaptive Planning + Sarvam
pip install "llmslim[sarvam]"
export SARVAM_API_KEY="..." # your own Sarvam API key
from llmslim import plan_context
from llmslim.integrations.sarvam import SarvamProvider
documents = [
{"content": "Q3 filing: new data-localisation rules take effect in April 2027."},
{"content": "Q3 filing: two pending licence renewals carry a regulatory risk of delay."},
]
plan = plan_context(
messages=[{"role": "system", "content": "Answer from verified context."}],
documents=documents,
query="Summarize the key regulatory risks.",
model="sarvam-105b",
max_input_tokens=8_000,
reserve_output_tokens=256,
)
provider = SarvamProvider.from_env(model="sarvam-105b", max_tokens=256)
answer = provider.chat([{"role": "user", "content": plan.final_context}])
print(answer, provider.last_usage)
👉 Sarvam統合ガイドを読む(docs/integrations/SARVAM.mdにもあります)
🔮 LLMSlimとは?
LLMSlimホログラフィックエンジン:契約を一切変更せず、疎なコンテキストストリームを高密度の情報コアへと凝縮する、多段階のトークン圧縮。
現代のLLMシステムは、コンテキストウィンドウのジレンマに直面しています。
- コスト負担:ターンごとに大きなプロンプトを再送すると、同じ入力トークンに何度も料金がかかります。
- レイテンシのボトルネック:大きなプロンプトはTime-To-First-Token(TTFT)と待ち時間を増大させます。
- 中間部の見落とし:長いコンテキストの中間に埋もれた情報を、モデルが見落としたり、誤用したりすることがあります。
- セキュリティリスク:信頼できないRAGコンテンツにより、間接的なプロンプトインジェクションがシステム指示に紛れ込む可能性があります。
LLMSlimは、発生源でこれらの問題を解決します。 モデルを呼び出す前にアプリケーション層でネイティブに実行される、決定論的で契約を維持する圧縮を提供します。
💎 中核となる設計原則
| 原則 | LLMSlim による解決方法 |
|---|---|
| 🏎️ 超低オーバーヘッド | 純粋な Python と NumPy/Scikit-learn を使用します。24 サンプルの評価データ(ほとんどが短文)によるフェーズ 2 の評価では、サンプルあたりの中央値は 0.026 ms(p95 は 1.889 ms)で、デフォルトの経路ではモデルを呼び出しません。入力が長いほど時間がかかります。 |
| 🔒 デフォルトで決定論的 | デフォルトの抽出モードでは、入力から文を選択するだけなので、出力は再現可能で、生成テキストは含まれません。ただし、必要な事実が欠落する場合もあるため、用途に応じて結果を確認してください。書き換えモードとハイブリッドモードでは、ご自身の LLM を呼び出します。 |
| 🛡️ 出所のセキュリティ | ContextRole の階層によって、信頼できない RAG/ツールのテキストを分離し、プロンプトインジェクションが system の優先度に昇格できないようにします。 |
| 🧩 契約に安全なツールスキーマ | 正規 JSON 正規化、SHA-256 契約フィンガープリント、エージェント向けツールの実行時書き換えゼロを実現します。 |
| 🔌 プロバイダーに依存しない設計 | Sarvam、OpenAI、Anthropic、Gemini、vLLM 向けの実行処理を含まないリクエストビルダーと、OpenAI Agents SDK ブリッジを提供します。プレーンなメッセージリストやドキュメントリストを渡せるフレームワークであれば、どれでも動作します。 |
🖥️ ライブ Studio プレイグラウンド(www.llmslim.app)
長いチャット、検索結果の一覧、CI ログを貼り付けて質問すると、回答に必要な情報を LLMSlim が残す様子を確認できます。Studio では、節約できたトークン数とコスト、回答が保持されたかどうか、同じサイズに単純に切り詰めた場合に残る内容が表示されます。
- すぐに使えるシナリオ: 6 か月分のサポートチャット、ヘルプセンターの検索結果、1 件の失敗を含む CI ログ。それぞれに、答えがわかっている質問が用意されています。
- 任意のテキスト: 最大約 16,000 トークンを貼り付け、保持する量を選択できます。
- インライン表示: 保持された行は元のテキスト内でハイライト表示され、モデルに渡される正確なテキストと並べて確認できます。
- モデル呼び出しなし: Studio はサーバー上で Core を実行し、プロバイダーを呼び出しません。貼り付けた内容は保存されません。
Studio のデプロイとセキュリティポリシーをご覧ください。
🌐 モダンな開発者向けウェブサイトとドキュメント
エンドツーエンドの統合パターンを網羅した、再設計されたダーク/ライトテーマ対応のドキュメントサイトをご覧ください。
📦 インストール
# Core package (Deterministic extractive engine, 0 external LLM dependencies)
pip install llmslim
# With optional Model Context Protocol (MCP) catalog ingestion (Python 3.10+)
pip install "llmslim[mcp]"
# With optional OpenAI Agents SDK host bridge (Python 3.10+)
pip install "llmslim[agents]"
# With optional local multilingual semantic retrieval
pip install "llmslim[semantic]"
# Sarvam: chat providers, language tools and document source (official sarvamai SDK)
pip install "llmslim[sarvam]"
# Exa web search as an untrusted RAG context source (spend capped in USD)
pip install "llmslim[exa]"
# Neo4j temporal agent memory with auditable supersession
pip install "llmslim[neo4j]"
# Read-only Zoho CRM and WorkDrive context sources
pip install "llmslim[zoho]"
# Explicit MongoDB context memory and Atlas retrieval
pip install "llmslim[mongodb]"
# LangChain, LlamaIndex (Python 3.10+) and Haystack adapters
pip install "llmslim[langchain]"
pip install "llmslim[llamaindex]"
pip install "llmslim[haystack]"
# Agent history: gptme (0.34+) and Pydantic AI adapters (Python 3.10+).
# Hermes Agent needs no extra: install llmslim into Hermes's environment.
pip install "llmslim[gptme]"
pip install "llmslim[pydantic-ai]"
# All optional extensions
pip install "llmslim[all]"
要件:Python 3.9 以降。デフォルトのインストールでは、プロバイダー SDK、PyTorch、sentence-transformers、クラウドサービスは不要です。
⚡ クイックスタートと使用パターン
1. 基本的な抽出圧縮(デフォルト)
from llmslim import ContextRole, compress
text = """
The Apollo program was conceived in 1960 during the Eisenhower administration.
NASA announced the program as a follow-up to Project Mercury.
The spacecraft was designed to carry three astronauts.
Apollo succeeded in landing the first humans on the Moon in 1969.
Funding for the program peaked in 1966 with over $4.5 billion appropriated.
"""
result = compress(
text,
target_ratio=0.5, # Target: keep about 50% of the tokens
strategy="extractive", # Deterministic sentence selection
context_role=ContextRole.GENERAL,
)
print("Compressed Output:")
print(result.compressed_text)
print(f"Original: {result.original_tokens} tokens | Compressed: {result.compressed_tokens} tokens")
print(f"Saved: {result.tokens_saved} tokens ({result.reduction_percent:.1f}%)")
print(f"Sentences kept: {result.sentences_kept} of {result.sentences_total}")
抽出による選択では意味ではなく文全体を保持するため、必要な文が残っていることを必ず確認してください。このテキストでは、0.7.1 の基本インストールは 5 文のうち 3 文を保持し、1969 年の月面着陸に関する文を除外します。一方、llmslim[fast-tokens](tiktoken によるカウント)では、その文を保持して別の文を除外します。
2. 複数ドキュメントの RAG 圧縮
プロンプトを構築する前に、取得した各チャンクを圧縮します。compress_documents
はプレーンな文字列を受け取り、各ドキュメントに対応する結果を順番に返します。
from llmslim import compress_documents
documents = [
"Q3 revenue grew 23% year-over-year to $1.2B. "
"Growth came mainly from enterprise subscriptions in India and Southeast Asia. "
"The board met twice during the quarter. "
"The office cafeteria menu was updated in August. "
"A new logo was unveiled at the annual offsite. "
"Net revenue retention reached 118%, up from 109% a year earlier.",
"Operating expenses rose 11% because of AI research infrastructure. "
"Most of the increase was GPU capacity for model evaluation. "
"Travel costs were flat. "
"The parking garage was repainted in September. "
"Employees voted on a new name for the meeting rooms. "
"Headcount in engineering grew by 40 people.",
]
results = compress_documents(
documents,
query="What drove Q3 revenue and cost changes?",
target_ratio=0.5,
)
context = "\n\n".join(r.compressed_text for r in results)
print(context)
print(f"Saved {sum(r.tokens_saved for r in results)} tokens across {len(results)} documents")
クエリを指定すると、ドキュメント全体で予算を共有し、クエリが示す箇所に予算を割り当てます。デフォルトでは、関連性は語彙ベースです (フィードバック付き BM25:モデル不要、決定論的、3k トークンのコンテキストで数十ミリ秒)。回答で質問と共通する単語がほとんどないことも多い RAG や長期チャットメモリでは、オプションのリランカーを追加します。
# pip install "llmslim[semantic]" (sentence-transformers; uses a GPU when there is one)
results = compress_documents(documents, query=question, target_ratio=0.25, relevance="semantic")
relevance には、ホスト型リランキング API など、任意の呼び出し可能な scorer(query, texts) -> scores も指定できます。
LangChain、LlamaIndex、または Haystack で取得していますか?compress_documents を直接呼び出すのではなく、
フレームワークアダプターを使用してください。
メモ
compress_documentsはデフォルトでドキュメントを信頼できないものとして扱います(ContextRole.RAG)。 そのため、取得したドキュメント内の命令文が、保護対象の指示として優先的に保持されることはありません。 ただし、注入されたテキストを削除するわけではありません。注入された文が圧縮後も残ることがあります。 最終プロンプトで取得したコンテンツを信頼できないものとして示すには、plan_contextまたはContextRuntimeを使用します。これらはすべてのドキュメントをtrusted="false"の出所タグで囲み、ドキュメント自身が主張する役割を無視します。
3. 複数ターンのチャット会話の圧縮
system 指示とユーザーの質問はそのまま渡しながら、以前の長いターンを圧縮します。
from llmslim import compress_chat_messages
review = (
"Here are my suggestions for your schema. First, add a composite index on "
"(customer_id, created_at) because most of your queries filter by customer and sort by "
"date. Second, the orders table stores the shipping address inline, which duplicates "
"data across rows; move it to an addresses table. Third, the status column is a "
"free-text string, so use an enum or a lookup table instead. Fourth, the price column "
"uses FLOAT, which loses precision for money; use DECIMAL(12, 2). Finally, add ON "
"DELETE RESTRICT to the foreign key from orders to customers so that deleting a "
"customer cannot silently orphan their orders."
)
messages = [
{"role": "system", "content": "You are a specialized code review engineer."},
{"role": "user", "content": "Can you review my database schema design?"},
{"role": "assistant", "content": review},
{"role": "user", "content": "What about the foreign key constraint on line 42?"},
]
compressed_messages = compress_chat_messages(
messages,
target_ratio=0.5,
compressible_roles=("assistant",), # Only compress assistant turns; system and user pass through
min_tokens=60, # Turns shorter than this are never compressed
)
for message in compressed_messages:
print(f"{message['role']}: {message['content']}")
4. ハイブリッドなプロンプト最適化(抽出+書き換え)
超高速な抽出型の事前フィルタリングと、意味を深く言い換えるための独自の LLM プロバイダーを組み合わせます。
from llmslim import CallableProvider, compress
import openai
client = openai.OpenAI() # reads OPENAI_API_KEY; requires `pip install openai`
long_raw_text = """
The Apollo program was conceived in 1960 during the Eisenhower administration.
NASA announced the program as a follow-up to Project Mercury.
The spacecraft was designed to carry three astronauts.
Apollo succeeded in landing the first humans on the Moon in 1969.
Funding for the program peaked in 1966 with over $4.5 billion appropriated.
"""
# Define your own provider callback (LLMSlim does not bundle vendor SDKs).
# The callback receives a RewriteRequest with ready-made prompts and returns text.
provider = CallableProvider(
lambda req: client.chat.completions.create(
model="gpt-4o-mini",
messages=[
{"role": "system", "content": req.system_prompt},
{"role": "user", "content": req.user_prompt},
],
).choices[0].message.content
)
result = compress(
long_raw_text,
target_ratio=0.3,
strategy="hybrid", # 1. Extractive filter -> 2. LLM semantic rewrite
provider=provider,
)
meta = result.rewrite_metadata
print(result.compressed_text)
print(f"Strategy: {meta.strategy} | Rewrite accepted: {meta.accepted} | Fell back to extractive: {meta.fallback_used}")
print("Validation failures:", meta.failure_reasons)
すべての書き換えは、構造、指示の保持、エンティティの保持、類似性について検証されます。ハイブリッドな書き換えが検証に失敗した場合、LLMSlim は代わりに抽出結果を返し、rewrite_metadata.failure_reasons で理由を報告します。
コーディングエージェント:llmslim wrap claude
Claude Code はターンごとに会話全体を再送信します。そのため、長いテストログ、ビルド出力、検索結果、ウェブページは何度も課金対象となり、さらに Claude Code がいずれ圧縮するコンテキストにも追加されます。
llmslim wrap claude は、ローカルプロキシ経由で Claude Code を実行します。
- モデルが初めて目にする際に、こうした出力を短縮します。エラー、失敗、警告らしき行を先頭にし、その後にコマンドに関連する行を並べます。
- それ以降のリクエストでは、まったく同じバイト列を送信するため、プロンプトキャッシュが引き続きヒットし、Claude の思考が有効なまま保たれます。
- Claude Code 独自の
Read、Edit、Writeツールの出力には一切手を加えません。シェル経由で表示したファイル(cat、head)はシェル出力として扱われます。
pip install "llmslim[proxy]"
llmslim wrap claude
llmslim proxy stats
実測した料金への影響:Claude Code 2.1.296 と Claude Haiku 5.5 を使い、8 件の小規模な合成タスクで測定しました。API の使用量から定価ベースの金額を集計し、キャッシュ読み取り分は別料金として計算しました。全 572 回の実行結果を benchmarks/claude_code_cost で公開しています。主要な結果では、両方の条件で Claude Code のデフォルトの権限モードを使用しています。2 回目の実行では、両方の条件で自動モードを使用しています。
- **長いログ:**失敗を再現した CI 実行(ログ約 12 KB で、原因は中ほどにあります)では 26~32%、警告 240 件の中にエラーが 3 件含まれる lint 実行では 17~21%、費用が減りました。
- **テスト実行:**デフォルトモードでは約 4%減でしたが、すべてのタスクで誤差の範囲内でした。自動モードでは 2~15%減でした。エージェントはすでに
tailでテスト出力を絞り込んでいます。 - **8 件のタスク全体:**デフォルトモードでは +5.3%(95%区間は +1.5%~+9.4%)でした。主な原因は、短縮した JSON の費用が約 2 倍になったタスク 1 件です。自動モードでは -5.1%でした。0.11.1 以降、JSON はデフォルトでそのまま扱われます。
- **実際のセッション:**メンテナー自身の記録をオフラインで再生した結果(32 セッションと、それらのセッションから開始された 412 件のサブエージェント実行。ほぼすべて Claude Opus 5.5 を使用し、定価で計算)では、ツール出力が料金に占める割合は小さいものでした。同じターン数のまま、シェル、検索、ウェブの出力がすべて無料になったとしても、料金の削減は 13.4%でした。主な原因は、長いコンテキストの再読み込みでした。Claude Code の
/autocompact設定で圧縮のタイミングが決まりますが、費用への影響はここでは測定していません。
バイト単位の再生を行わない場合、編集された履歴によって Claude の思考は無効になります。Claude Haiku 5.5 を使った API チェックでは、リクエストが HTTP 400 で拒否されました。これは、2026 年 8 月 31 日以降に作成されたアカウントでのデフォルトです。再生を行った場合、7 リクエストの API テストでは、リクエストごとにキャッシュ読み取りが増加しました。圧縮の対象、制限、セキュリティについては docs/PROXY.md をご覧ください。
**Claude Code プラグインとして使用する場合。**プラグインは、LLMSlim のメモリーサーバー(以下を参照)と 2 つのコマンドを追加します。
/llmslim:wrap-claudeは、プロキシ経由で Claude Code を起動する手順を案内します。/llmslim:savingsは、プロキシがリクエストから除外したツール出力トークン数を表示します。これはプロンプトキャッシュの割引適用前に数えた推定値であり、節約できた金額ではありません。
/plugin marketplace add Thanatos9404/llmslim
/plugin install llmslim@llmslim
Claude Code 2.1.275 以降では、/plugin install llmslim --marketplace Thanatos9404/llmslim を実行するだけで、両方を一度に導入できます。メモリーサーバーは uvx で実行されるため、uv が必要です。
LLM を介さないエージェント向けメモリー
llmslim.memory はすべてのターンをそのまま保存し、読み取り時に、トークン予算の範囲内で質問に答えるターンを選び出します。データの取り込み時に抽出モデルを使わず、取り出し時にもモデルを呼び出しません。
from llmslim.memory import Memory
memory = Memory("memory.db") # SQLite, built into Python
memory.add([{"role": "user", "content": "I'm allergic to peanuts."}], user_id="asha")
context = memory.search("Am I allergic to anything?", user_id="asha", budget=1500)
print(context.text) # put it in the prompt as untrusted data
これは第 3 ラウンドのベンチマークの基盤となったパイプラインを実行します。Mem0 独自の LongMemEval の質問では、そのパイプライン(再ランキングを含む)の正答率は 78.3%で、1,000 問あたり $1.04 でした。対する Mem0 は正答率 76.7%で、$220.88 でした。Mem0 から移行する場合は、from llmslim.memory.compat import Mem0Memory as Memory を使うと Mem0 のメソッド名を維持できます。スコープ、ストア、根拠、制限については docs/MEMORY.md と 1.0 ロードマップ をご覧ください。
Claude、Cursor、または任意の MCP クライアントで
llmslim mcp は、長いテキスト向けの fit_context ツールとともに、このメモリーを MCP 経由で提供します。Python 3.10 以降で pip install "llmslim[mcp]"
が必要です。
claude mcp add llmslim -- llmslim mcp
- ツール:
remember、recall、list_memories、forget、fit_context。 - スコープ: サーバーは
--user-idでスコープを固定するため、モデルがほかのユーザーのメモリーを読み取ることはできません。 - ストレージ: ローカルの SQLite ファイルを使用します。サーバー自体はネットワーク呼び出しを行いません(トークナイザーはファイルを一度だけダウンロードしてキャッシュします)。
- 詳細: クライアント設定とオプションについては、docs/MCP.md をご覧ください。
ほかのクライアントではワンクリックでインストールできます。各リンクは uvx --from "llmslim[mcp]==0.11.2" llmslim mcp を実行するため、
uv と Python 3.10 以降が必要です。
Gemini CLI では、gemini extensions install https://github.com/Thanatos9404/llmslim を実行すると同じサーバーが追加されます。
VS Code では、LLMSlim Memory 拡張機能 により VS Code の MCP サポートに追加されます(近日中に VS Code
Marketplace と Open VSX で公開予定です)。
任意の言語から HTTP 経由で
llmslim serve を実行すると、同じメモリーとコンテキスト調整エンドポイントを、小規模な JSON API として提供できます。単一の SQLite ファイルを使用する単一プロセスとして動作し、モデル呼び出しは行いません。pip install "llmslim[server]" でインストールするか、Dockerfile をビルドしてください。
curl -s localhost:8080/v1/memories/search -H 'content-type: application/json' -d '{"user_id": "asha", "query": "Where did I move to?", "budget": 1500}'
localhost 以外でリッスンするには、ベアラー API キーが必要です。ルート、制限、Docker の設定については、 docs/SERVER.md をご覧ください。
TypeScript クライアントの npm install llmslim(clients/typescript)は、依存関係なしでこの API をラップします。また、Vercel AI SDK 向けの recall_memory と remember ツール、およびターンを保存するミドルウェアも提供します。これらはいずれもプロンプトを変更しないため、プロンプトキャッシュは引き続きヒットし、Claude が保持している思考も有効なままです。
LangChain/LlamaIndex/Haystack での使用
各アダプターは、クエリがある場合は同じ共有予算を使用して、取得したドキュメントに対して compress_documents を実行します。保持されたドキュメントのメタデータはそのまま維持され、何も残らないまで圧縮されたドキュメントは除外されます。モデルを使わず、ローカルで実行されます。
| フレームワーク | インストール | クラス | 次の代わりに使用する場所 |
|---|---|---|---|
| LangChain | llmslim[langchain] | llmslim.integrations.langchain.LLMSlimCompressor | LLMLinguaCompressor。たとえば ContextualCompressionRetriever 内で使用します |
| LlamaIndex | llmslim[llamaindex](Python 3.10+) | llmslim.integrations.llama_index.LLMSlimPostprocessor | LongLLMLinguaPostprocessor。node_postprocessors 内で使用します |
| Haystack | llmslim[haystack] | llmslim.integrations.haystack.LLMSlimDocumentCompressor | リトリーバーとプロンプトビルダーの間に配置するコンポーネント |
from langchain_classic.retrievers.contextual_compression import ContextualCompressionRetriever
from llmslim.integrations.langchain import LLMSlimCompressor
retriever = ContextualCompressionRetriever(
base_compressor=LLMSlimCompressor(target_ratio=0.25),
base_retriever=your_retriever,
)
出力付きの実行可能な例: LangChain、 LlamaIndex、 Haystack。
gptme/Hermes Agent/Pydantic AI での使用
これらのアダプターは、エージェントのメッセージ履歴をトークン予算内に収めます。システムプロンプト、ツール呼び出し、直近のターンはそのまま維持し、古いツール出力とターンをローカルで圧縮します(ツール出力内の失敗やトレースバックは保持されます)。また、すべてのツール呼び出しとその結果を対応付けたままにします。モデル呼び出しはありません。
| エージェント | インストール | クラスまたは関数 | 組み込み方法 |
|---|---|---|---|
| gptme | llmslim[gptme](gptme 0.34+) | llmslim.integrations.gptme.LLMSlimContextProvider | gptme コンテキストプロバイダー llmslim。[plugin.llmslim] compaction = true を設定すると、gptme の圧縮で使用されるプロバイダーになります |
| Hermes Agent | Hermes の環境にある llmslim | llmslim.integrations.hermes.LLMSlimContextEngine | ContextEngine プラグイン llmslim。context.engine: llmslim を設定して選択します |
| Pydantic AI | llmslim[pydantic-ai](1.0+) | llmslim.integrations.pydantic_ai.llmslim_history_processor | 履歴プロセッサー。ProcessHistory(...) または history_processors=[...] 内で使用します |
from pydantic_ai import Agent
from pydantic_ai.capabilities import ProcessHistory
from llmslim.integrations.pydantic_ai import llmslim_history_processor
agent = Agent(
"openai:gpt-5",
capabilities=[ProcessHistory(llmslim_history_processor(max_tokens=8_000))],
)
セットアップと出力付きの実行可能な例: gptme、 Hermes Agent、 Pydantic AI。
🛡️ セキュリティアーキテクチャ:出所の分離
命令形のキーワード("Must"、"Always"、"Action Required")に基づいて文のスコアを単純に評価する圧縮アルゴリズムには、深刻な脆弱性があります。それは、間接的なプロンプトインジェクションの増幅です。取得した RAG ドキュメントに悪意のある指示を埋め込む攻撃者は、正当なコンテキストを破棄しながら、攻撃ペイロードを保持するよう圧縮器を誘導できます。
LLMSlim 内部でこの問題を発見し、v0.3.1 で修正しました。CVE やセキュリティアドバイザリは公開されておらず、この問題に公式な CVSS スコアはありません。
LLMSlim は、明示的なコンテキストロールの信頼境界によってこの問題を解決します。
┌────────────────────────────────────────────────────────┐
│ HIGHEST TRUST (Priority Tier 4) │
│ System & Developer Prompts (Strictly Protected) │
├────────────────────────────────────────────────────────┤
│ INTERMEDIATE TRUST (Priority Tier 2-3) │
│ Direct User Input │
├────────────────────────────────────────────────────────┤
│ PROVENANCE-LOCKED (Priority Tier 0-1) │
│ RAG Documents • Assistant History • Tool Outputs │
│ *Cannot reach Tier 4 through imperative patterns* │
└────────────────────────────────────────────────────────┘
- 強化された優先度ロック:
ContextRole.RAG、ContextRole.TOOL、またはContextRole.ASSISTANTとしてマークされたコンテンツは、命令形の構文にかかわらず、Tier-4 の優先度を取得できません。 - ノンスで保護された書き換え用区切り文字:入力に
---END TEXT---のようなフェンス状のトークンが含まれる場合、書き換えテンプレートのフェンスには呼び出しごとにランダムなノンスが付加されるため、埋め込まれたトークンでテキスト領域を閉じることはできません。入力自体は変更されません。 - デフォルトで信頼されないが、フィルタリングはしない:これらの保護機能は、注入されたテキストが優先度を得るのを防ぎます。テキストを削除するものではありません。
plan_contextとContextRuntimeは、最終的なコンテキスト内でそのテキストにtrusted="false"のラベルを付けるため、モデルやアプリケーション側で適切に扱えます。
🧩 契約安全なツールスキーマと MCP の取り込み
大規模なエージェントカタログ(数十から数百のツール定義)は、エージェントが思考を始める前に数千トークンを消費します。LLMSlim は契約安全なツールインフラストラクチャを導入します(v0.4.0 および v0.5.0)。
from llmslim.tools import (
canonical_json,
contract_equivalent,
fingerprint_tool_schema,
from_mcp_tool,
optimize_tool_schema,
)
# 1. Ingest authoritative raw tool definition
raw_tool = {
"name": "enterprise.search_ledger",
"description": "Searches financial transaction records by date range.",
"inputSchema": {
"type": "object",
"properties": {"account_id": {"type": "string"}, "limit": {"type": "integer"}},
"required": ["account_id"],
},
}
# 2. Parse and safely optimize schema formatting
tool = from_mcp_tool(raw_tool, namespace="finance")
result = optimize_tool_schema(tool)
# 3. Mathematically verify exact contract equivalence
assert result.equivalence.status.value == "EXACT"
assert fingerprint_tool_schema(tool) == fingerprint_tool_schema(result.optimized)
print("Canonical Fingerprint:", fingerprint_tool_schema(result.optimized))
print(canonical_json(result.optimized.raw))
非同期 MCP カタログソース(v0.5.0)
pip install "llmslim[mcp]"(Python 3.10 以降)と、ご自身で実行する MCP サーバーが必要です。
import asyncio
from llmslim.mcp import MCPToolCatalogSource, PlanMode, plan_catalog_context
async def main() -> None:
# Streamable HTTP MCP source with bounded pagination and stale-cache detection
source = MCPToolCatalogSource.from_streamable_http(
"http://127.0.0.1:8000/mcp",
headers={"Authorization": "Bearer local-token"},
)
snapshot = await source.list_tools()
plan = plan_catalog_context(snapshot, mode=PlanMode.FULL)
print(f"Catalog contains {len(snapshot.tools)} tools ({plan.metrics.catalog_tokens} tokens)")
asyncio.run(main())
📊 ベンチマークと徹底した透明性
多くのライブラリは、根拠のない「プロンプトを 90% 圧縮」という主張をしています。LLMSlim では、徹底したベンチマークの透明性を実践しています。
第 3 ラウンド:コア 0.9.0 とメモリシステムおよび圧縮ツールの比較、コスト優先
2026 年 10 月 13 日から 15 日にかけて、保留テスト用の質問で測定しました。すべてのシステムの回答には、同一の回答プロンプトと評価者を用いて Claude Haiku 5.5 を使用しました。Mem0 と Zep はそれぞれ独自のベンチマークハーネスで実行し、LLMLingua-2 と LongLLMLingua(float16 の LLaMA-2-7B)は公開されている設定で実行しました。各圧縮ツールのコンテキストは、コミットを固定した公開 Kaggle ノートブックで構築しました。各セルには、正解率と、リスト価格での 1,000 問あたりのエンドツーエンドのコスト(回答呼び出し、Mem0 と Zep のメモリ構築呼び出し、および各システムの計算コスト)を示しています。全表、信頼区間、弱点、すべての回答はこちらです:benchmarks/live/round3。
| ベンチマーク | LLMSlim 0.9 + 再ランキング | LLMSlim 0.9(モデルなし) | Mem0 | Zep | LongLLMLingua | LLMLingua-2 | 検索ベースライン* | 全コンテキスト |
|---|---|---|---|---|---|---|---|---|
| LoCoMo、1,307 問、約 2,500 トークン | 93.0% · $0.95 | 91.7% · $0.89 | 91.0% · $2.66 | 74.4% · $6.24 | 73.3% · $7.01(300 問) | 34.1% · $0.43 | 85.2% · $0.90 | 95.1% · $0.83(キャッシュ済み) |
| LongMemEval-S、180 問、約 10,000 トークン | 74.4% · $2.21 | 77.8% · $2.13 | 未実施 | 15.6% · $8.43 | 80.6% · $4.45 | 77.8% · $90.21 | ||
| LongMemEval-S、Mem0 の 60 問、約 2,500 トークン | 78.3% · $1.04 | 71.7% · $0.96 | 76.7% · $220.88 | 80.0% · $3.36 | 78.3% · $90.20 | |||
| LongMemEval-S、Zep の 24 問、約 2,500 トークン | 87.5% · $1.01 | 87.5% · $0.94 | 87.5% · $219.48 | 58.3% · $697.56 | 83.3% · $3.28 | 91.7% · $90.22 | ||
| NaturalQuestions、2,255 問、トークンの 25% | 73.5% · $0.33 | 60.6% · $0.30 | 70.5% · $1.32(1,000 問) | 52.5% · $0.87 | 73.9% · $0.30 | 78.4% · $0.65 | ||
| HotpotQA、2,000 問、トークンの 40%(完全一致) | 52.2% · $0.15 | 52.4% · $0.13 | 50.4% · $0.77(1,000 問) | 46.7% · $0.47 | 50.5% · $0.13 | 58.0% · $0.24 |
* LoCoMo と LongMemEval ではターンに対する密検索(Qwen3-Embedding-0.6B)、NaturalQuestions と HotpotQA では単純な再ランキングを使用。Mem0 の結果は、Mem0 独自のサンプルでの上位 200 件を除き、上位 50 件のメモリを使用しています。LongLLMLingua は事前登録済みのサンプルで実行しました。同じ質問に対する LLMSlim の再ランキングありのスコアは、LoCoMo で 93.3%(+20.0、95% CI +15.0~+25.0)、NaturalQuestions で 72.7%、デフォルトの LLMSlim は HotpotQA で 53.3% です。キャッシュミス時、キャッシュ済みの全履歴は LoCoMo の 1,000 問あたり $4.48 かかります。
LLMSlim が劣るケース:
- 再ランキングなしの NaturalQuestions。 デフォルトの語彙モードは 60.6% で、単純な再ランキングの 73.9% を下回ります。言い換えられた質問には意味的な照合が必要なため、オープンドメイン検索には再ランキングを使用してください。
- LongMemEval での密検索。 10,000 トークンでは 80.6% に対し LLMSlim は 77.8%、2,500 トークンでは 76.1% に対し 74.4% で、コストは約 2 倍です。180 問ではどちらの差も有意ではありませんが、どちらも同じ傾向を示しています。開発用の質問で差を縮めた修正はテストでは機能しなかったため、0.9.0 には含まれていません。
- 1,000 トークンでの複数ホップ質問と時間に関する質問。 Mem0 の上位 20 件のメモリは、LoCoMo の複数ホップ質問(88.7% 対 80.3%)と時間に関する質問(93.4% 対 85.7%)で、デフォルトの LLMSlim を上回ります。再ランキングありの LLMSlim は全体では上回ります(90.5% 対 88.7%)。
- キャッシュ済みの全履歴。 会話内の質問が立て続けに行われる場合、キャッシュ済みの履歴(95.1%、$0.83)は LoCoMo のすべての圧縮コンテキストを上回ります。
長文書とエージェント:第2ラウンド、Core 0.8.0
すべての構成で同じモデルとプロンプトを使用し、切り捨てでは LLMSlim とまったく同じトークン数を使用します。また、コードを凍結した後、すべてのスイートを新しいサンプルで1回再実行しました(benchmarks/live)。0.9.0 では、プレーンテキストのチャット記録を選択する方法のみを変更しています。
| ベンチマーク | コンテキスト全体 | LLMSlim 0.8 + リランカー | LLMSlim 0.8(モデルなし) | 切り捨て、同じ予算 | トークン数(全体 → LLMSlim) |
|---|---|---|---|---|---|
| LongBench v1、210 サンプル(マクロ) | 54.9 | 54.2 | 54.9 | 45.2 | 15,532 → 5,232 |
| … 新しい 210 サンプル | 55.1 | 55.4 | 55.0 | 46.8 | |
| LongBench v2、180 問(正解率) | 60.0 | 55.6 | 53.9 | 48.3 | 30,493 → 8,469 |
| SWE-bench Verified Mini、50 件の課題(解決済み) | 36-38 | 未実行 | 38 | 未実行 | タスクあたり 48-58k → 51k |
リランカーはオプションです(relevance="semantic"、semantic extra の 22M パラメーターのクロスエンコーダー)。リランカーを使用しない場合、LLMSlim はモデルを一切実行しません。
メモ
スキーマ税の測定:このリポジトリ向けに作成した18個のカタログに含まれる375個の合成ツールスキーマを対象にした v0.4.0 のベンチマークでは、ベースラインがすでにコンパクトな正規 JSON だった場合、ロスレスなスキーマ圧縮による削減トークン数は 0(0.00%) でした(データセットカードを参照)。この結果を透明性をもって公開します。削減がないところで、架空の削減効果を主張することはありません。
v0.6 適応型プランナー(凍結オフラインスイート)
| 手法 | 予算達成率 | コンテキスト削減率 | 必須事実 | 厳格な制約 | 平均レイテンシー* |
|---|---|---|---|---|---|
| コンテキスト全体(未加工) | 71.4% | 0.0% | 100% | 100% | 測定のみ |
| 単純な先頭部分 | 100% | 9.2% | 100% | 100% | 2.21 ms |
| 固定比率コンプレッサー | 78.6% | 9.6% | 94.0% | 96.4% | 26.55 ms |
| 適応型プランナー | 96.4% | 11.4% | 100% | 100% | 208.02 ms |
28ケースのコーパスには、チャット、RAG、ツール、混合、外部ソース、および12言語の多言語ケースが含まれます。適応型プランナーが実行不可能と判断した唯一のケースは、意図的に実現不可能にしたカタログ全体のケースです。この結果は明示的に報告しています。これらはタスクに基づく検証であり、LLM による評価や普遍的な品質の主張ではありません。レイテンシーは、チェックイン済みの実行環境とハードウェアに固有です。リリースゲートの結果、生データ、および凍結済みのデータセットを参照してください。 Sarvam のライブハーネスは、明示的なオプトインと認証情報の両方がない状態では実行していません。
🖥️ コマンドラインインターフェース(CLI)
ターミナルからファイル、ストリーム、またはプロンプトを直接圧縮します。
# Compress a document to 50% ratio
llmslim document.txt -o compressed.txt --ratio 0.5
# Pipeline integration with jq / curl
cat input.txt | llmslim --ratio 0.4 --mode rag > rag_context.txt
# Inspect token count differences
llmslim document.txt --stats
📋 変更履歴
0.11.2 を含む各バージョンのリリースノートは、CHANGELOG.md と GitHub Releases にあります。
🤝 エコシステムとの統合
LLMSlim は、特定の方針を押し付けないコンテキストの前処理ツールとして動作します。これらの統合機能は Core に含まれており、いずれもリクエストを代わりに送信することはありません。ベンダーの利用枠を消費する各統合機能では、リクエストがプロセス外に送信される前に UsageGuard によるチェックを行います(分あたりのレート、生涯リクエスト上限、INR、USD、またはクエリ数での単位上限を確認します。LLMSLIM_<VENDOR>_* 変数で設定できます。.env.example を参照してください)。
| プロバイダー/フレームワーク | Core に含まれるもの | パターン |
|---|---|---|
| Sarvam AI | llmslim[sarvam]:SarvamProvider/AsyncSarvamProvider、SarvamLanguageTools、SarvamDocumentSource、annotate_languages()/normalize_scripts()、sarvam_messages() | ローカルでのプランニング+公式 sarvamai Python SDK。日付付きの INR 価格に基づく利用量ガード付き |
| Exa | llmslim[exa]:ExaSearchSource、ベンダーに依存しない WebSearchSource | URL、日付、順位の出典情報を含む、信頼できない RAG コンテキスト項目。USD で利用額を上限設定 |
| Neo4j | llmslim[neo4j]:Neo4jContextStore | テナントのスコープを明示した時間的メモリ:supersede()、recall(as_of=...)、history()、conflicts() |
| OpenAI | openai_compatible_request()、openai_responses_request() | 実行を行わないリクエストビルダー。リクエストは呼び出し側のコードで送信します |
| Anthropic Claude | anthropic_messages_request() | プロンプトキャッシュマーカーを任意で指定できる、実行を行わないリクエストビルダー |
| Google Gemini | gemini_generate_request()、gemini_cached_content_request() | 実行を行わないリクエストビルダー |
| vLLM/セルフホスト | vllm_chat_request() | 実行を行わないリクエストビルダー |
| OpenAI Agents SDK | llmslim[agents]:make_openai_agents_input_filter()、to_openai_agents_tools() | テキスト専用のモデル入力フィルター。実行とツールの管理は SDK が行います |
| LangChain | llmslim[langchain]:LLMSlimCompressor | ContextualCompressionRetriever 用の BaseDocumentCompressor |
| LlamaIndex | llmslim[llamaindex]:LLMSlimPostprocessor | クエリエンジン用の BaseNodePostprocessor |
| Haystack | llmslim[haystack]:LLMSlimDocumentCompressor | リトリーバーとプロンプトビルダーの間に配置するパイプラインコンポーネント |
| gptme | llmslim[gptme]:LLMSlimContextProvider | gptme のコンテキスト圧縮用コンテキストプロバイダー(エントリポイント llmslim) |
| Hermes Agent | LLMSlimContextEngine(追加依存関係なし) | ContextEngine プラグイン。LLM 呼び出しなしで、プレフィックスのキャッシュ安定性を維持します |
| Pydantic AI | llmslim[pydantic-ai]:llmslim_history_processor() | ツール呼び出しを保持し、ペアになったものを返す履歴プロセッサー |
その他のフレームワーク向けの専用アダプターはありません。LLMSlim は、通常のメッセージリスト({"role": ..., "content": ...} 形式の辞書)またはドキュメント文字列を渡せるフレームワークなら、どれでも使用できます。LLMSlim の出力をクライアントに渡すための数行の連携コードを記述してください。
📜 ライセンスと引用
LLMSlim は MIT License のもとでライセンスされているオープンソースソフトウェアです。詳細については LICENSE を参照してください。
研究または本番システムで LLMSlim を使用する場合は、以下を引用してください。
@software{llmslim2026,
author = {Yashvardhan Thanvi},
title = {LLMSlim: Deterministic Context Compression and Contract-Safe Tool Schemas for LLMs},
year = {2026},
publisher = {GitHub},
url = {https://github.com/Thanatos9404/llmslim}
}
エージェントコンテキストランタイム(v0.7.0)
バージョン 0.7.0 では、エージェントアプリケーション向けにターンごとのコンテキストパスが追加されました(0.7.0 は PyPI に公開されていません。0.7.1 以降をインストールしてください)。 ホストはメッセージ、取得したドキュメント、メモリ、ツールの結果、認可済みのツールスキーマを提供します。LLMSlim は品質チェック済みのモデル入力と、説明可能なローカルトレースを返します。モデル呼び出しとツールの実行はホストが引き続き担います。
from llmslim import ContextRuntime, generic_request
runtime = ContextRuntime(model="sarvam-105b", max_input_tokens=8_000)
prepared = runtime.prepare_sync(
user_input="When does Acme renew?",
messages=[{"role": "system", "content": "Use verified dates."}],
documents=[{"id": "contract", "content": "Acme renews on 9 November 2026."}],
)
if prepared.feasible:
request = generic_request(prepared) # the host sends this to its model
print(request["messages"])
print(prepared.trace.explain())
ランタイムには、ContextEnvelope、ContextGraph、ContextPolicy、段階的なプランニング、品質ゲート、上限付きのインメモリセッション、汎用、Sarvam、OpenAI 互換、およびテキスト専用の OpenAI Agents アプリケーション向けの実行を伴わないアダプターが含まれています。ContextTrace はデフォルトでプロンプト本文を省略します。既存の compress() API と plan_context() API も引き続き使用できます。
アーキテクチャ、 セキュリティモデル、 インテグレーション、 移行ガイド、 ベンチマーク、および エンジニアリングレポートをご覧ください。
キャッシュ対応コンテキストランタイム(v0.7.1)
キャッシュプランニングは、エージェントのターンを繰り返す際にオプトインで利用できるレイヤーです。LLMSlim は、プロバイダーから見える安定したプレフィックスを特定し、安全な場合は追記のみの会話コンテキストを保持して、キャッシュに影響する設定のフィンガープリントを作成します。また、ローカルでのキャッシュ推定値をプロバイダーが報告する使用量とは別に提示します。テナント単位の CacheManager はメタデータとプロバイダー参照を保存しますが、プロンプト本文や KV テンソルは保存しません。
from llmslim import CacheManager, CachePolicy, ContextRuntime
runtime = ContextRuntime(
model="generic-128k",
cache_policy=CachePolicy(mode="auto", provider="openai", tenant_id="my-workspace"),
cache_manager=CacheManager(),
)
prepared = runtime.prepare_sync(
session_id="conversation-1",
messages=[{"role": "system", "content": "Use verified sources."}],
user_input="What changed?",
)
print(prepared.trace.to_dict()["cache"])
実行を伴わないリクエストビルダーは、OpenAI Responses、Anthropic Messages、Gemini のキャッシュ済みリソース、セルフホスト可能な vLLM に対応しています。高度なインプロセス Transformers アダプターは、KV 継続状態を検証します。OpenAI のプロバイダー状態を使った継続と、Gemini のキャッシュ済みリソースの作成には、ホストによる明示的なオプトインが必要です。Sarvam のプロンプトキャッシュは未検証のため、デフォルトで無効になっています。Context Inspector では、プロバイダーを呼び出さずにプレフィックスの分割とキャッシュ診断を確認できます。キャッシュのガイダンス、マルチターンベンチマーク、およびエンジニアリングレポートをご覧ください。
オープンソースのセキュリティツール
Snyk は、オープンソースプロジェクト向けに開発者用セキュリティツールを提供しています。Secure Developer Programの詳細をご覧ください。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。