Skip to main content

sandeco-token-reduce

Comprime tokens de prompts usando LLMLingua-2 da Microsoft para reduzir custo e latencia. Use esta skill sempre que o usuario pedir para comprimir um prompt, reduzir tokens, economizar tokens, usar LLMLingua, ou quando um texto for longo demais para enviar a um LLM. Tambem use quando o usuario quiser pre-processar contexto antes de enviar ao Claude. Triggers: "comprimir", "reduzir tokens", "economizar tokens", "LLMLingua", "texto muito longo", "compressao de prompt", "token compression", "compress tokens", "inicializar compressao", "init token-reduce".

インストールへ移動

ソース情報

リポジトリ
sandeco/prompts
ソースの最終更新活動
2026年4月16日 19:01
検出された SKILL.md の言語
ポルトガル語
スター
903
フォーク
335

インストール方法

デフォルトでは、最初にソースを確認する Prompt が選択されています。直接コマンドに切り替えるか、ローカルコピーをダウンロードすることもできます。

ソースファイルを確認

インストールを決める前に、SKILL.md と SkillsMP に表示されている付属ファイルをお読みください。

ファイルエクスプローラー
8 ファイル

SKILL.md を表示中

SKILL.md
ソースの指示 · 読み取り専用プレビュー
name
sandeco-token-reduce
description
Comprime tokens de prompts usando LLMLingua-2 da Microsoft para reduzir custo e latencia. Use esta skill sempre que o usuario pedir para comprimir um prompt, reduzir tokens, economizar tokens, usar LLMLingua, ou quando um texto for longo demais para enviar a um LLM. Tambem use quando o usuario quiser pre-processar contexto antes de enviar ao Claude. Triggers: "comprimir", "reduzir tokens", "economizar tokens", "LLMLingua", "texto muito longo", "compressao de prompt", "token compression", "compress tokens", "inicializar compressao", "init token-reduce".
# sandeco-token-reduce Comprime tokens removendo os menos relevantes de um texto, preservando o significado semantico. Usa o modelo XLM-RoBERTa da Microsoft (LLMLingua-2) rodando localmente (CPU ou GPU). ## Estrutura ``` sandeco-token-reduce/ ├── SKILL.md ← este arquivo ├── scripts/ │ ├── setup.py ← inicializacao (cria .venv, instala libs, baixa modelo) │ └── compress.py ← compressao de texto (requer init) └── .venv/ ← criado pelo setup.py (NAO distribuir) ``` ## IMPORTANTE: Fluxo de inicializacao A skill precisa ser inicializada antes do primeiro uso. O `.venv` NAO e distribuido junto com a skill — cada usuario precisa rodar o init uma vez. ### Antes de qualquer operacao de compressao: 1. Verifique se o `.venv` existe dentro do diretorio desta skill 2. Se NAO existir, informe ao usuario que a skill precisa ser inicializada e execute o setup: ```bash python "<skill-dir>/scripts/setup.py" ``` O setup faz 4 coisas automaticamente: - Cria o ambiente virtual `.venv` - Atualiza o pip - Instala `llmlingua` e `anthropic` - Baixa o modelo LLMLingua-2 (~1 GB) do HuggingFace Avise o usuario que a primeira execucao pode levar alguns minutos por causa do download do modelo. 3. Se o `.venv` JA existir, pule direto para a compressao. ### Quando o usuario pedir para "inicializar", "configurar" ou "init" a skill: Execute o setup.py diretamente, mesmo que o .venv ja exista (ele e idempotente). ## Como comprimir Depois de inicializado, use o script `compress.py` com o Python do venv. O Python do venv esta em: - Windows: `<skill-dir>/.venv/Scripts/python.exe` - Unix: `<skill-dir>/.venv/bin/python` ### So comprimir (texto direto) ```bash "<venv-python>" "<skill-dir>/scripts/compress.py" --text "texto longo aqui" --rate 0.4 ``` ### Comprimir a partir de arquivo ```bash "<venv-python>" "<skill-dir>/scripts/compress.py" --file caminho/para/arquivo.txt --rate 0.4 ``` ### Comprimir e salvar resultado em arquivo ```bash "<venv-python>" "<skill-dir>/scripts/compress.py" --file entrada.txt --rate 0.4 --output comprimido.txt ``` ### Comprimir e enviar ao Claude com uma pergunta ```bash "<venv-python>" "<skill-dir>/scripts/compress.py" --file entrada.txt --rate 0.4 --ask "Resuma este texto" ``` ### Saida JSON (para consumo programatico) ```bash "<venv-python>" "<skill-dir>/scripts/compress.py" --file entrada.txt --rate 0.4 --json ``` ## Parametros do compress.py | Parametro | Padrao | Descricao | |----------------|---------------------|----------------------------------------------------| | `--text` | — | Texto passado diretamente (mutuamente exclusivo com --file) | | `--file` | — | Caminho para arquivo de texto | | `--rate` | `0.4` | Fracao de tokens a manter | | `--output` | — | Salva texto comprimido neste arquivo | | `--json` | `false` | Saida em JSON estruturado | | `--ask` | — | Pergunta a enviar ao Claude com o contexto comprimido | | `--model` | `claude-sonnet-4-6` | Modelo Claude (so usado com --ask) | | `--max-tokens` | `4096` | Max tokens na resposta do Claude | ## Guia de taxas de compressao - `0.5` — Compressao leve, maxima fidelidade - `0.4` — Equilibrio padrao (recomendado para a maioria dos casos) - `0.33` — Compressao moderada - `0.2` — Compressao agressiva para textos muito longos Quando o usuario nao especificar uma taxa, use `0.4`. ## Formato da saida JSON Quando `--json` e usado: ```json { "compression": { "compressed_prompt": "texto comprimido...", "origin_tokens": 312, "compressed_tokens": 124, "ratio": 2.52, "saving": 188, "rate_requested": 0.4 }, "claude": { "answer": "resposta do Claude...", "model": "claude-sonnet-4-6", "input_tokens": 150, "output_tokens": 200 } } ``` O campo `claude` so aparece quando `--ask` e usado. ## Notas tecnicas - Modelo HuggingFace: `microsoft/llmlingua-2-xlm-roberta-large-meetingbank` - Cache do modelo: `~/.cache/huggingface/` (baixado uma vez pelo setup, reusado sempre) - `force_tokens` preserva: `\n`, `.`, `,`, `?`, `!`, `:`, negacoes PT (`nao`, `sem`, `nenhum`, `nunca`, `nem`, `nenhuma`) - `force_reserve_digit=True` protege qualquer token com digitos (IDs como RF-01, valores como 1000ms) - GPU e detectada automaticamente se `torch` + CUDA estiver disponivel; caso contrario usa CPU - A variavel `ANTHROPIC_API_KEY` precisa estar definida no ambiente para usar `--ask` ### Pre-processamento automatico Antes de comprimir, o texto passa por `strip_markdown()` que remove: - Separadores `---` - Grid de tabelas `|---|---|` - Marcadores `**bold**` (mantem texto) - Prefixos `##` de headers (mantem texto) - Checkboxes `- [ ]` - Code fences ` ``` ` - Linhas vazias multiplas (colapsa para uma) Isso reduz ~6% do texto antes de entrar no modelo, melhorando a qualidade da compressao. ### Chunking automatico O modelo XLM-RoBERTa tem janela de 512 tokens. Para textos maiores, o script divide automaticamente em chunks de ate 400 tokens (cortando em limites de linha), comprime cada um separadamente e concatena os resultados. Isso elimina o scoring degradado que ocorria em tokens apos a posicao 512.
GitHubで見る