This release is a pre-release and may not be stable for production use.
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
# Instalación estándar (Python nativo):
pip install ontoprune
# Con soporte multi-lenguaje (Flutter/Dart, Java, TypeScript vía Tree-sitter):
pip install "ontoprune[languages]"
# Para desarrollo y benchmarks:
pip install "ontoprune[dev,benchmark,languages]"
Soporte Multi-Lenguaje Universal
OntoPrune utiliza una representación ontológica interna (software.ttl) agnóstica del lenguaje. Detecta automáticamente la extensión del archivo y genera contratos tipados nativos:
| Lenguaje | Extensión | Motor AST | Formato de Salida |
|---|---|---|---|
| Python | .py |
Python ast nativo |
def nombre(args) -> Ret: ... |
| Flutter / Dart | .dart |
tree-sitter-dart |
abstract class ... { Ret metodo(); } |
| Java | .java |
tree-sitter-java |
public interface ... { Ret metodo(); } |
| TypeScript / JS | .ts, .tsx, .js |
tree-sitter-typescript |
export interface ... { metodo(): Ret; } |
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.2.0a1
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.2.0a1.tar.gz | 139.8 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| ontoprune-0.2.0a1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 168.4 kB
Release files / ontoprune-0.2.0a1.tar.gz
| Download URL | ontoprune-0.2.0a1.tar.gz |
|---|---|
| Size | 139.8 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
a7865dcb2d9bda8342ec7d7ab623cd4b7e05f9551751ebc50d8133dc56eacb06
|
|
BLAKE2b-256 checksum How to use checksums |
a09e8665b9e58772daaf4b48a434416ece06768d1d029ca2ab122a5645ba1814
|
| 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.2.0a1-py3-none-any.whl
| Download URL | ontoprune-0.2.0a1-py3-none-any.whl |
|---|---|
| Size | 28.5 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
eb8e7d25be72105d9cc8f1f0588da8460ce1da36edd54d1b159174236d24457f
|
|
BLAKE2b-256 checksum How to use checksums |
f3de33fea571f55dba4d1a8a1baf11509cb9507ebf11d6837155dffa71da3ef2
|
| 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}
|