Skip to main content

sandeco-token-reduce-ollama

Comprime tokens de prompts usando reescrita generativa com um modelo Ollama local (default: qwen3:8b) para reduzir custo e latencia ao enviar ao Claude. Aceita texto direto, arquivo .txt ou PDF como entrada: extrai o PDF para markdown (via pymupdf4llm), salva o .md ao lado do PDF e comprime o markdown. Use esta skill sempre que o usuario pedir para comprimir/reduzir/economizar tokens E mencionar Ollama, qwen, qwen3, llm local, modelo local, rodar localmente, "sem BERT", ou quiser compressao via LLM generativo em vez de classificador. Tambem use quando o usuario quiser pre-processar contexto localmente (incluindo PDFs) antes de enviar ao Claude usando Ollama. Triggers: "comprimir com ollama", "comprimir localmente", "ollama compress", "qwen3", "qwen", "reescrever com ollama", "resumir com llm local", "compressao generativa", "pdf com ollama", "ler pdf com ollama", "inicializar token-reduce-ollama", "init token-reduce-ollama".

الانتقال إلى التثبيت

معلومات المصدر

المستودع
sandeco/prompts
آخر نشاط في المصدر
١٦ أبريل ٢٠٢٦ في ١٩:٠١
لغة SKILL.md المكتشفة
البرتغالية
النجوم
٩٠٢
التفرعات
٣٣٦

خيارات التثبيت

يُحدَّد Prompt الذي يراجع المصدر أولًا بشكل افتراضي. يمكنك التبديل إلى أمر مباشر أو تنزيل نسخة محلية.

مراجعة ملفات المصدر

اقرأ SKILL.md وأي ملفات مرافقة يعرضها SkillsMP قبل أن تقرر التثبيت.

مستكشف الملفات
11 ملفات

عرض SKILL.md

SKILL.md
تعليمات المصدر · معاينة للقراءة فقط
name
sandeco-token-reduce-ollama
description
Comprime tokens de prompts usando reescrita generativa com um modelo Ollama local (default: qwen3:8b) para reduzir custo e latencia ao enviar ao Claude. Aceita texto direto, arquivo .txt ou PDF como entrada: extrai o PDF para markdown (via pymupdf4llm), salva o .md ao lado do PDF e comprime o markdown. Use esta skill sempre que o usuario pedir para comprimir/reduzir/economizar tokens E mencionar Ollama, qwen, qwen3, llm local, modelo local, rodar localmente, "sem BERT", ou quiser compressao via LLM generativo em vez de classificador. Tambem use quando o usuario quiser pre-processar contexto localmente (incluindo PDFs) antes de enviar ao Claude usando Ollama. Triggers: "comprimir com ollama", "comprimir localmente", "ollama compress", "qwen3", "qwen", "reescrever com ollama", "resumir com llm local", "compressao generativa", "pdf com ollama", "ler pdf com ollama", "inicializar token-reduce-ollama", "init token-reduce-ollama".
# sandeco-token-reduce-ollama Comprime texto reescrevendo generativamente com um modelo Ollama local. Diferente do LLMLingua-2 (que classifica token a token com BERT/XLM-RoBERTa), aqui um LLM generativo reescreve o texto de forma mais concisa preservando o significado. Default: **qwen3:8b** (5 GB, 40K de contexto, PT-BR forte). ## Diferencas para a skill `sandeco-token-reduce` | Aspecto | LLMLingua-2 (BERT) | Ollama (LLM generativo) | |----------------------|--------------------------------------|---------------------------------------| | Como funciona | Classifica/mantem tokens exatos | Reescreve o texto | | Palavras preservadas | Sim (palavras do original) | Nao (pode parafrasear) | | Fluidez | Menor (texto cortado) | Maior (texto natural) | | Taxa exata | Sim (controle fino via rate) | Aproximada (LLM nem sempre obedece) | | Velocidade | Muito rapida (CPU/GPU) | Depende do hardware e do modelo | | Dependencia | pip: llmlingua | Binario Ollama + pip: ollama | ## Estrutura ``` sandeco-token-reduce-ollama/ ├── SKILL.md ← este arquivo ├── scripts/ │ ├── setup.py ← inicializacao (cria .venv, instala libs, puxa modelo Ollama) │ └── compress.py ← compressao via Ollama (requer init) └── .venv/ ← criado pelo setup.py (NAO distribuir) ``` ## IMPORTANTE: Pre-requisito Ollama Esta skill assume que o usuario ja tem o **Ollama instalado** (https://ollama.com/download) e rodando (`ollama serve`). Esta e a unica instalacao manual exigida — o resto (venv, pacotes Python, download do modelo) e automatico na primeira chamada. Se o daemon do Ollama nao estiver ativo no momento da compressao, o `compress.py` aborta com uma mensagem clara explicando como subir o Ollama. ## Auto-configuracao (self-bootstrap) A skill se configura sozinha na primeira chamada de compressao. Voce nao precisa rodar `setup.py` manualmente — basta invocar `compress.py` com o Python do sistema: ```bash python "<skill-dir>/scripts/compress.py" --text "..." --rate 0.4 ``` O que acontece na primeira execucao: 1. `compress.py` detecta que o `.venv` nao existe 2. Roda `setup.py` automaticamente (cria venv, instala pacotes, puxa o modelo) 3. Re-executa a si mesmo com o Python do venv 4. Faz a compressao Nas chamadas seguintes, o passo 1-3 e pulado (venv ja existe). ### Quando o usuario pedir para "inicializar", "configurar" ou "init" a skill: Voce pode rodar `setup.py` diretamente com `python "<skill-dir>/scripts/setup.py"` — util se o aluno quer pre-baixar o modelo antes da primeira compressao (ex: rodando em casa com rede boa antes de ir para a aula). O setup e idempotente. ## Como comprimir **Sempre invoque `compress.py` com o Python do sistema** (nao com o do venv). O proprio script faz o re-exec para o venv quando necessario: ```bash python "<skill-dir>/scripts/compress.py" [opcoes] ``` Isso simplifica para alunos e compartilhamento: nao precisam saber onde esta o Python do venv. ### So comprimir (texto direto) ```bash python "<skill-dir>/scripts/compress.py" --text "texto longo aqui" --rate 0.4 ``` ### Comprimir a partir de arquivo ```bash python "<skill-dir>/scripts/compress.py" --file caminho/para/arquivo.txt --rate 0.4 ``` ### Comprimir um PDF (extrai para markdown primeiro) ```bash python "<skill-dir>/scripts/compress.py" --file documento.pdf --rate 0.4 ``` Quando o arquivo termina em `.pdf`, o script: 1. Extrai o PDF para markdown usando `pymupdf4llm` (headers, listas, tabelas, links) 2. Salva o markdown em `documento.md` ao lado do PDF (sempre — e o artefato intermediario) 3. Comprime o markdown com Ollama 4. Retorna as metricas de todas as etapas: paginas, caracteres do markdown, tokens originais, tokens comprimidos, razao Se voce so quer o markdown sem comprimir muito, use `--rate 0.9`. ### Comprimir e salvar resultado em arquivo ```bash python "<skill-dir>/scripts/compress.py" --file entrada.txt --rate 0.4 --output comprimido.txt ``` ### Comprimir e enviar ao Claude com uma pergunta ```bash python "<skill-dir>/scripts/compress.py" --file entrada.txt --rate 0.4 --ask "Resuma este texto" ``` ### Trocar o modelo Ollama ```bash python "<skill-dir>/scripts/compress.py" --file entrada.txt --rate 0.4 --ollama-model qwen3:14b ``` ### Saida JSON (para consumo programatico) ```bash 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 alvo de tokens (aproximada em compressao generativa) | | `--output` | — | Salva texto comprimido neste arquivo | | `--json` | `false` | Saida em JSON estruturado | | `--ollama-model` | `qwen3:8b` | Modelo Ollama a usar | | `--ollama-host` | `http://localhost:11434` | URL do daemon Ollama | | `--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) - `0.33` — Compressao moderada - `0.2` — Compressao agressiva (LLM pode nao atingir 20% — dependendo do texto, tende a parar em ~30% porque reescrever tao curto vira resumo extremo) Quando o usuario nao especificar, use `0.4`. **Importante:** compressao generativa via LLM e APROXIMADA. O modelo tenta atingir a taxa, mas varia por texto. Sempre mostre a taxa efetiva atingida nas metricas. ## Formato da saida JSON ```json { "compression": { "compressed_prompt": "texto comprimido...", "origin_tokens": 312, "compressed_tokens": 124, "ratio": 2.52, "saving": 188, "rate_requested": 0.4, "model": "qwen3:8b" }, "pdf": { "source_pdf": "/caminho/para/doc.pdf", "pages": 12, "markdown_path": "/caminho/para/doc.md", "markdown_chars": 24580 }, "claude": { "answer": "resposta do Claude...", "model": "claude-sonnet-4-6", "input_tokens": 150, "output_tokens": 200 } } ``` O campo `pdf` so aparece quando a entrada e um arquivo `.pdf`. O campo `claude` so aparece quando `--ask` e usado. ## Notas tecnicas - Modelo default Ollama: `qwen3:8b` (trocavel via `--ollama-model`) - Contagem de tokens: `tiktoken` com encoding `cl100k_base` (estimativa razoavel para comparacao) - Qwen3 tem modo "thinking" ativo por padrao — a skill desabilita via `/no_think` no prompt e remove blocos `<think>...</think>` residuais na saida - Temperatura baixa (`0.2`) para saida deterministica - A variavel `ANTHROPIC_API_KEY` precisa estar definida no ambiente para usar `--ask` ### Pre-processamento automatico Antes de enviar ao Ollama, o texto passa por: - `tables_to_keyvalue()` — converte tabelas markdown em pares `chave: valor` (LLMs reescrevem tabelas melhor em formato linear; tabelas com `|---|` normalmente sao destruidas) - `normalize_identifiers()` — remove hifens de IDs (`RF-01` → `RF01`) para o LLM tratar como um token unico e nao separar - `strip_markdown()` — remove decoracao `**bold**`, headers `##`, code fences, checkboxes e separadores `---` (o LLM generativo ja produz texto natural, nao precisa desse ruido) ### Instrucoes ao modelo (system prompt) O system prompt obriga o modelo a: - Preservar TODAS as negacoes (`não`, `nunca`, `sem`, `nenhum`, `nem`) — trocar uma negacao muda o significado - Preservar TODOS os identificadores, codigos e numeros (`RF-01`, `G05`, `1000ms`, URLs, IDs) - Preservar termos tecnicos (nomes de bibliotecas, comandos, parametros) - Nao adicionar informacao que nao estava no original - Nao adicionar preambulo ("Aqui esta:", "Resumo:", etc.) - Responder apenas com o texto comprimido ### Quando usar esta skill vs `sandeco-token-reduce` - **LLMLingua-2 (skill original)**: quando a fidelidade de palavras e critica (auditoria, citacao, texto tecnico onde termos exatos importam) ou quando o usuario nao tem GPU - **Ollama (esta skill)**: quando o usuario quer fluidez melhor, ja tem Ollama rodando, quer total privacidade (nada sai da maquina, nem para o HuggingFace), ou quer experimentar com modelos diferentes
عرض على GitHub