mcpField
C
CompactPrompt

CompactPrompt

ローカル
github.com/gtkcyberAI・エージェント01 週間前に更新

CompactPrompt について

CompactPromptは、構造と意味を保ちながらプロンプト、文書、エージェントスキルを短縮するPythonライブラリ兼MCPサーバーです。可逆のフレーズ短縮、数値圧縮、例の選定、ファイルのレビューと圧縮にも対応します。

主な機能

  1. 01価値の低い表現の削除
  2. 02繰り返しフレーズの可逆短縮
  3. 03数値データの精度削減
  4. 04代表例の選定
  5. 05ファイルとスキルのレビュー・圧縮

活用シーン

  1. 01LLMへの送信前にプロンプトを短縮
  2. 02Markdown文書やエージェントスキルを圧縮
  3. 03復元用辞書を保ちながら反復表現を短縮

MCP 対応

オプションのMCPサーバーを通じて、MCP対応AIエージェントがプロンプト、文書、スキルをレビュー・圧縮できます。

設定

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

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

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

パッケージ
pypicompactprompt0.5.2

ツール

ツール一覧はまだ取得されていません

ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。

詳細

CompactPrompt

Tests Pylint Documentation Status PyPI - Version gtkcyber/compact_prompt MCP server CompactPrompt MCP on mcprush

CompactPrompt は、意味を保ちながら、AI モデルに送るテキストを短縮します。実行コストを抑え、応答を速くし、モデルの入力上限を超える可能性を下げます。一般的な用途では関数を 1 回呼び出すだけでよく、機械学習の知識も必要ありません。

背景

AI モデルは入力(プロンプト)を読み取り、応答を返します。プロバイダーは処理したテキスト量に応じて課金し、その量はトークンで測定されます(各トークンはおよそ単語の 4 分の 3 に相当します)。また、すべてのモデルには入力サイズの上限があります。そのため、指示、ドキュメント、表、例を組み合わせた長いプロンプトは、コストが高くなり、応答が遅くなり、入力できない場合もあります。

CompactPrompt は、重要な情報を保ちながらプロンプトのサイズを縮小し、内容を維持したまま余分な部分を取り除きます。

はじめに

ライブラリをインストールします。

pip install compactprompt

プロンプトを短縮します。

from compactprompt import CompactPrompt

result = CompactPrompt.compact(
    "Please could you very kindly go ahead and provide a really concise "
    "summary of the quarterly report."
)

print(result.text)
print(f"{result.ratio:.1f}x smaller "
      f"({result.tokens_before} -> {result.tokens_after} tokens)")

出力:

a really concise summary of the quarterly report.
1.7x smaller (22 -> 13 tokens)

埋め草の "Please could you very kindly go ahead and" が削除され、意味は変わりません。

できること

CompactPrompt には、プロンプトのサイズを縮小する方法が複数用意されています。それぞれ単独でも、組み合わせても使用できます。以下では、各方法を平易な言葉で説明し、必要に応じて技術的な詳細も記載します。

重要度の低い表現を削除する

会話上の埋め草など、意味をほとんど持たない単語を取り除き、意味を担う単語を残します。この方法は不可逆です。削除した単語は復元できませんが、結果はそのまま使用できます。

from compactprompt import CompactPrompt

# Remove approximately 40% of the tokens
result = CompactPrompt.compact(prompt, ratio=0.4)

# Or target a specific size
result = CompactPrompt.compact(prompt, budget=64)
技術的な詳細

各単語には、一般的な希少性(静的自己情報量)と、文脈内での予測しやすさ(小規模言語モデルによる動的自己情報量)を組み合わせた情報スコアが割り当てられます。スコアの低い単語は削除されます。spaCy を使って文法上のまとまりを単位に削除するため、結果の読みやすさが保たれ、固有名詞と数字も保護されます。これは CompactPrompt 論文で提案された融合ルールを実装したものです。

繰り返し表現を可逆的に短縮する

同じ表現が繰り返される場合は短いプレースホルダーに置き換え、各プレースホルダーが何を表すかをキーに記録します。この方法は可逆で、いつでも元のテキストを正確に復元できます。

import compactprompt as cp

doc = "operating cash flow rose. operating cash flow fell. operating cash flow held."
abbr = cp.abbreviate(doc, n=3)

print(abbr.text)        # '@0 rose. @0 fell. @0 held.'
print(abbr.dictionary)  # {'@0': 'operating cash flow'}
print(abbr.restore())   # the exact original

後でプレースホルダーを展開できるように、abbr.dictionary は保持してください。

数値データのサイズを縮小する

数値を含む大きな表は、多くのトークンを消費します。これは既知の上限を超えないように丸めながら、精度を下げてサイズを節約します。

import compactprompt as cp

q = cp.quantize([1.0, 2.5, 3.3, 4.8, 9.2, 10.0], bits=8)
q.reconstruct()   # the rounded values
q.max_error       # the guaranteed maximum error
代表的な例を選ぶ

モデルは少数の例を示すと、より良い性能を発揮します。候補となる例が多数ある場合は、全体の範囲を反映する多様な少数の例を選び、すべてではなく代表的な例だけを送信できます。

from compactprompt import select_examples

chosen = select_examples(my_examples)
chosen.examples

表現の短縮方法を選ぶ

表現を短縮するステップには、互換性のある3種類のエンジンを使用できます。どのエンジンもテキストを短くしますが、削除する内容の決め方と、実行に必要なものが異なります。engine 引数で1つ選択してください。それ以外のコードを変更する必要はありません。

エンジン方法要件
組み込み(デフォルト)各単語をスコア付けし、有用性が最も低いものを削除します。ローカルで動作します。なし
LLMLinguaMicrosoft の実績あるツールです。小型モデルを使って、削除する内容を決定します。モデルをダウンロードします
Cavemanコード、リンク、見出しを保持しながら、簡潔なスタイルでテキストを書き換えます。言語モデルへのアクセス
CompactPrompt.compact(prompt)                       # built-in, no extra install
CompactPrompt.compact(prompt, engine="llmlingua")   # pip install 'compactprompt[llmlingua]'
CompactPrompt.compact(prompt, engine="caveman")     # pip install 'compactprompt[caveman]'

組み込みエンジンとその他の主要機能は、 CompactPrompt 研究論文を実装しています。LLMLingua と Caveman は、このライブラリが統合する独立したオープンソースツールです。謝辞をご覧ください。

ファイルとスキルの圧縮

CompactPrompt は、文字列だけでなく、ドキュメント、CLAUDE.md、メモ、Claude Code のスキル(SKILL.md)など、Markdown ファイル全体も圧縮できます。まずファイルやフォルダーをレビューして、どこを短縮できるかを報告することもできます。

安全性を考慮した設計です。YAML フロントマターはそのまま保持され、フェンス付きコードブロックとリンクは変更されません。見出し、コードブロック、URL が変更される場合は結果が拒否されます。また、--apply を指定しない限り、何も書き込まれません(適用前に .bak バックアップが保存されます)。コード、設定ファイル、シークレットに見えるファイルは自動的にスキップされます。

コマンドラインから実行する場合:

# See where the savings are (read-only)
compactprompt review ./skills

# Preview the compaction of one skill (writes nothing)
compactprompt compact ./skills/my-skill/SKILL.md --engine builtin

# Apply it (saves SKILL.md.bak, then rewrites the file)
compactprompt compact ./skills/my-skill/SKILL.md --engine caveman --apply

--engine は必須です。毎回 builtin、llmlingua、caveman のいずれかを選択してください(文章を書き換える caveman は、人が読むファイルに通常最適です)。

Python から実行する場合:

from compactprompt import review_file, compact_file

report = review_file("SKILL.md")
print(report.tokens, report.issues)

result = compact_file("SKILL.md", engine="caveman", apply=True)
print(result.tokens_before, "->", result.tokens_after)

Streamlit アプリの ファイルとスキル タブからも、同じ操作を対話形式で行えます。

オプション機能

基本インストールではセットアップは不要です。追加機能には追加コンポーネントが必要で、必要に応じてインストールできます。

pip install compactprompt                  # core: trimming and reversible shortening
pip install 'compactprompt[ml]'            # numeric reduction and example selection
pip install 'compactprompt[llmlingua]'     # the LLMLingua engine
pip install 'compactprompt[caveman]'       # the Caveman engine
pip install 'compactprompt[mcp]'           # the MCP server for AI agents
pip install 'compactprompt[app]'           # the interactive application
pip install 'compactprompt[all]'           # everything

機能に必要なコンポーネントがインストールされていない場合、CompactPrompt はインストールが必要なものを正確に報告します。

インタラクティブアプリケーション

小さなウェブアプリケーションにプロンプトを貼り付けると、短縮結果を確認できます。短縮の進行に合わせて、削減量も表示されます。

pip install 'compactprompt[app]'
streamlit run compactprompt_app.py

ブラウザーで開きます。サイドバーでエンジンを選び、削除する量を設定してください。

AI エージェントから使用する

CompactPrompt には MCP サーバー が付属しており、AI コーディングツール(Claude Code、Codex、Cursor、Gemini、および MCP 対応エージェント)からプロンプト、ドキュメント、スキルを直接レビューして圧縮できます。

pip install 'compactprompt[mcp]'      # provides the `compactprompt-mcp` command
claude mcp add compactprompt -- compactprompt-mcp   # e.g. for Claude Code

agent-skills/ ディレクトリには、同じツールで使える軽量なスキル/ルールファイルと install.sh もあります。ツールごとの設定については、READMEをご覧ください。

意味が保持されていることを確認する

短縮後のプロンプトが元と同じ意味を保っているか確認するには、元のプロンプトと結果の類似度を測定できます。1.0 は意味が同一であることを示します。

from compactprompt import cosine_fidelity   # pip install 'compactprompt[embeddings]'

score = cosine_fidelity(original_text, result.text)
print(score.mean)

リファレンス

CompactPrompt.compact(...) は、次のフィールドを持つ結果オブジェクトを返します。

フィールド意味
.text短縮後のプロンプトです。
.original入力です。
.tokens_before / .tokens_after短縮前後のサイズです。
.ratio何倍小さくなったかを示します(例:2.3)。
.savings削減されたトークンの割合です(例:0.4)。
.dictionary使用した場合、短縮したフレーズを復元するためのキーです。
.restore()可逆な短縮ステップを元に戻します。

主なオプション:

CompactPrompt.compact(
    prompt,
    ratio=0.5,          # how much to remove: 0.5 targets about half the tokens
    budget=None,        # alternatively, a specific target token count
    prune=True,         # trim the wording (default)
    abbreviate=False,   # also shorten repeated phrases (reversible)
    engine="builtin",   # "builtin", "llmlingua", or "caveman"
)

詳細オプションを含む完全なリファレンスは、ドキュメントをご覧ください。

開発

テストを実行します。

pip install pytest
pytest

テストスイートは依存関係のないコアを対象に実行されます。オプション機能のコンポーネントが存在しない場合、それらのテストは自動的にスキップされます。

ドキュメントをローカルでビルドします。

pip install 'compactprompt[docs]'
mkdocs serve

引用

このライブラリは、以下の手法を実装しています。

@article{choi2025compactprompt,
  title={CompactPrompt: A Unified Pipeline for Prompt and Data Compression in LLM Workflows},
  author={Choi, Joong Ho and Zhao, Jiayang and Shah, Jeel and Sonawane, Ritvika and
          Singh, Vedant and Appalla, Avani and Flanagan, Will and Condessa, Filipe},
  journal={arXiv preprint arXiv:2510.18043},
  year={2025}
}

独立した実装であり、この論文の著者とは関係ありません。

謝辞

Caveman エンジン(compactprompt/caveman.py)は、Julius Brussee 氏による Caveman(MIT ライセンス)を基にしています。 LLMLingua エンジンは、Microsoft による LLMLingua(MIT ライセンス)を使用しています。サードパーティに関するすべての謝辞およびライセンス表記は、 THIRD_PARTY_NOTICES.md に記載されています。

コメント

MCP は初めてですか?

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

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