OntoPrune
Neuro-Symbolic Context Pruning Middleware for Local SLMs
OntoPrune es un middleware traductor ligero que transforma código fuente en contratos de contexto mínimos utilizando representación ontológica (RDF/SPARQL), reduciendo drásticamente los tokens de entrada y la latencia TTFT (Time to First Token) para modelos de lenguaje pequeños (SLMs) y evitando alucinaciones de API.
Resultados Empíricos (Benchmark en CPU)
Evaluación real con streaming sobre sample_service.py (300+ LOC) en CPU local (12 cores):
| Métrica | Naive (Archivo Completo) | OntoPrune (stubs) |
Ganancia Real |
|---|---|---|---|
| Sobrecarga CPU | 0.02 ms | 9.9 ms | $\le 10\text{ ms}$ (Meta: $\le 15\text{ ms}$) |
| Tokens Entrada | 2,390 tokens | 406 tokens | -83.0% ($\approx 6\text{x}$ menos) |
TTFT (qwen2.5-coder:3b) |
22.4 s | 3.3 s | 6.7x más rápido (ahorra 19.1 s) |
| Tiempo Total (3B) | 59.9 s | 16.5 s | -72.5% ($3.6\text{x}$ más rápido) |
| Alucinaciones API | 1 método inválido | 0 métodos inválidos | 100% Precisión Contractual |
Instalación
pip install -e .
# Con dependencias para benchmarking:
pip install -e ".[dev,benchmark]"
Modos de Uso
1. Como Servidor MCP (Model Context Protocol)
OntoPrune incluye un servidor MCP nativo (ontoprune-mcp) para integrarse con Cursor, Claude Desktop, Gemini CLI o cualquier agente:
# Ejecutar servidor MCP en transporte stdio:
ontoprune-mcp
Configuración en claude_desktop_config.json o similar:
{
"mcpServers": {
"ontoprune": {
"command": "ontoprune-mcp"
}
}
}
Herramientas MCP expuestas:
prune_context(file_path, target_symbol, format='stubs', include_body=False, project_root=None): Extrae el contrato podado mínimo (< 400 tokens) resolviendo dependencias entre múltiples archivos del proyecto.verify_response(response_code, contract_or_file, target_symbol): Detecta alucinaciones en código generado comparando contra el contrato o archivo.
2. Como Librería Python
import ontoprune
# 1. Traducir un archivo a contexto compacto podado (formato stubs)
# Resuelve automáticamente imports relativos y absolutos entre módulos del proyecto
context = ontoprune.translate(
"services/order_service.py",
target="procesar_orden",
fmt="stubs",
multi_module=True,
)
print(context)
# 2. Verificar respuestas del modelo frente al contrato
violations = ontoprune.check(llm_code_response, against=context)
if not violations:
print("Código 100% válido")
3. Desde la Línea de Comandos (CLI & Pipes)
# Traducir función en proyectos multi-módulo:
ontoprune translate services/order_service.py procesar_orden --format stubs
# Pipeline directo con Ollama en proyectos modulares:
ontoprune translate services/order_service.py procesar_orden | ollama run qwen2.5-coder:3b
4. Ejecución del Benchmark Empírico
# Correr benchmark comparativo (Naive vs OntoPrune con ablación de formatos):
python -m ontoprune.benchmark --file fixtures/sample_service.py --func procesar_orden --backend ollama --model qwen2.5-coder:3b --compare-formats
Modelos de Monetización y Aplicación Comercial
OntoPrune resuelve dos problemas críticos de costo y confiabilidad en ingeniería de IA:
1. Token Cost Optimization Gateway (B2B SaaS / Middleware de Ahorro)
- Problema: Equipos que operan agentes de código autónomos (Devin, Cursor, Copilot Workspace) gastan miles de dólares mensuales en tokens de entrada donde más del 80% es código irrelevante.
- Solución: OntoPrune como proxy o sidecar que poda el contexto antes de enviarlo a APIs comerciales (Gemini, Claude, OpenAI), reduciendo la factura de tokens en un 85%.
- Monetización: Cobro basado en porcentaje de ahorro (gain-share: ej. 10% del ahorro mensual generado).
2. Local-First Developer Tooling (Edición Profesional / Equipos)
- Problema: Desarrolladores y empresas que requieren privacidad estricta ejecutan SLMs en laptops o servidores locales (Ollama/vLLM), sufriendo latencias inaceptables en CPU.
- Solución: OntoPrune reduce el TTFT de 22s a 3.3s (6.7x más rápido).
- Monetización: Versión open-source para desarrolladores individuales + licencia empresarial para equipos (soporte multi-repositorio, telemetría y reglas de cumplimiento de arquitectura).
3. Agent Compliance & CI/CD Security Gate
- Problema: Los agentes de código alucinan APIs y rompen contratos de software en producción.
- Solución:
ontoprune checkcomo paso automatizado en GitHub Actions / GitLab CI que bloquea pull requests con llamadas no autorizadas al grafo del sistema. - Monetización: Modelo SaaS de auditoría y seguridad para código generado por agentes.
Metadata
Release files for ontoprune 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| ontoprune-0.1.0.tar.gz | 133.3 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| ontoprune-0.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 156.3 kB
Release files / ontoprune-0.1.0.tar.gz
| Download URL | ontoprune-0.1.0.tar.gz |
|---|---|
| Size | 133.3 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
292b8ab4d2d1fb326cb1ecfb4c175428e3b63f30265319eeef9a7e701ddf69d7
|
|
BLAKE2b-256 checksum How to use checksums |
42b93b98e178a5bf58031986b06bbaa101bbda429a1d1808e86f921195945d40
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.12.7 {"installer":{"name":"uv","version":"0.12.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Linux Mint","version":"21.1","id":"vera","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|
Release files / ontoprune-0.1.0-py3-none-any.whl
| Download URL | ontoprune-0.1.0-py3-none-any.whl |
|---|---|
| Size | 23.0 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
aa336698f001f2822d31d173b9479ee297090a9f549edab22dc2629a3817e5f5
|
|
BLAKE2b-256 checksum How to use checksums |
587b984c0e22f69d531d80b382715af28218ad9cf445db1dc0c5b49eae2c15bd
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.12.7 {"installer":{"name":"uv","version":"0.12.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Linux Mint","version":"21.1","id":"vera","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|