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".
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).
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)
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.
.venv existe dentro do diretorio desta skillpython "<skill-dir>/scripts/setup.py"
O setup faz 4 coisas automaticamente:
.venvllmlingua e anthropicAvise o usuario que a primeira execucao pode levar alguns minutos por causa do download do modelo.
.venv JA existir, pule direto para a compressao.Execute o setup.py diretamente, mesmo que o .venv ja exista (ele e idempotente).
Depois de inicializado, use o script compress.py com o Python do venv.
O Python do venv esta em:
<skill-dir>/.venv/Scripts/python.exe<skill-dir>/.venv/bin/python"<venv-python>" "<skill-dir>/scripts/compress.py" --text "texto longo aqui" --rate 0.4
"<venv-python>" "<skill-dir>/scripts/compress.py" --file caminho/para/arquivo.txt --rate 0.4
"<venv-python>" "<skill-dir>/scripts/compress.py" --file entrada.txt --rate 0.4 --output comprimido.txt
"<venv-python>" "<skill-dir>/scripts/compress.py" --file entrada.txt --rate 0.4 --ask "Resuma este texto"
"<venv-python>" "<skill-dir>/scripts/compress.py" --file entrada.txt --rate 0.4 --json
| 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 |
0.5 — Compressao leve, maxima fidelidade0.4 — Equilibrio padrao (recomendado para a maioria dos casos)0.33 — Compressao moderada0.2 — Compressao agressiva para textos muito longosQuando o usuario nao especificar uma taxa, use 0.4.
Quando --json e usado:
{
"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.
microsoft/llmlingua-2-xlm-roberta-large-meetingbank~/.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)torch + CUDA estiver disponivel; caso contrario usa CPUANTHROPIC_API_KEY precisa estar definida no ambiente para usar --askAntes de comprimir, o texto passa por strip_markdown() que remove:
---|---|---|**bold** (mantem texto)## de headers (mantem texto)- [ ]```Isso reduz ~6% do texto antes de entrar no modelo, melhorando a qualidade da compressao.
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.