mini-format 1.1 — crea tu toolkit desde tus muestras JSON empezar →

1.1 Tu JSON. Tu contrato. Tu .mini. →

Salidas de LLM que se validan solas.

Entrega muestras JSON de tu dominio. mini-format construye tu contrato, el prompt y las herramientas para recibir JSON validado desde respuestas compactas de IA. Detecta errores y aplica reparaciones seguras con un informe verificable.

Instalar mini-format 1.1.0

pip install https://mini-format.pmoluna.com/downloads/mini_format-1.1.0-py3-none-any.whl
Ver la guía de instalación ↗

Python 3.9+ · núcleo sin dependencias · código abierto MIT. El ZIP incluye el paquete Python, TypeScript, ejemplos y documentación.

Crear mi primer .mini →

DummyJSON products

194 registros · Datos públicos de prueba

Tokens de salida relativos a .mini · menos es mejor. o200k_base

mini-formatmini-domain/11,00×
CSVplano1,05×
TOONplano1,07×
JSONcompacto1,39×
TOONoriginal1,46×
YAML1.21,56×
XMLelementos2,65×
6,11 % menos tokens que TOON plano. Incluye metadatos y diccionarios del documento; prompt reutilizable medido aparte.método →

Para tu aplicación

PythonTypeScriptJavaScript

Cuatro piezas, diseñadas juntas.
Adopta una, o todas.

mini validate y parse() entran en un proyecto Python o Node ya existente. No cambias de proveedor de modelo ni de framework.

Especificación

sustituye a JSON Schema · prompts a mano

Gramática EBNF, 15 códigos de error estables y protocolo de extensión. La norma se escribe antes que el código y decide cuando las implementaciones difieren.

$ mini prompt log --lang es

Bibliotecas

sustituye a regex · json.loads · try/except

Python y TypeScript, escritas por separado desde la misma norma. Parser, serializador, modo tolerante, bloque de prompt y lector en streaming.

$ mini build samples.json --prefix app --out .mini

Herramienta

sustituye a jq · scripts de validación

Construye tu toolkit, valida, diagnostica, convierte en ambos sentidos, genera prompts, cuenta tokens y comprueba familias.

$ mini diagnose respuesta.mini

Conformidad

sustituye a pruebas por implementación

303 casos independientes del lenguaje, con expectativas escritas desde la norma y nunca calculadas ejecutando el código. Python y TypeScript pasan 303/303.

$ python conformance/run_python.py

Un minuto con mini-format

Del contrato
al registro
tipado.

Declarar, instruir, llamar, validar, reparar y usar con la misma herramienta. Cada paso es un comando real; la salida está abreviada. Pulsa uno, o solo mira.

~/proyecto — mini01 / 06

      
Recorrido reproducible del toolkit. Salida abreviada para facilitar la lectura. Pasa el ratón para pausar.

Un build por dominio

Tus muestras.
Tu .mini.

Reúne los JSON que tu aplicación necesita. Un comando genera una carpeta .mini reutilizable en tu flujo de trabajo.

  • Contrato de tu dominio. Aprende la estructura, los tipos y los campos opcionales de varias muestras.
  • Prompt y parser. Instrucciones en español e inglés y herramientas ejecutables para recuperar JSON.
  • Validación y reparación. Detecta el problema, corrige lo inequívoco y prepara el reintento de lo que requiere al modelo.
  • Más cobertura, mejor contrato. Incluye ejemplos representativos, valores nulos, listas y casos poco frecuentes.
mini build phones.json more.json --prefix phone --out .mini
De JSON a tu toolkit0:00 / 0:24

        

Ver el vídeo del flujo · 24 s

Grabación de esta demostración. Comandos reales; salida abreviada.

Integración en Django0:00 / 0:26

          

Integración

Entra en Django, FastAPI, Express, Next.js y lo que ya tengas.

No es un servicio ni un framework: es una biblioteca. Cargas el registro de familias, pides el bloque de prompt con spec_block(), llamas a tu proveedor como siempre y pasas la respuesta por parse().

servicios/evaluacion.pypython
from minifmt import Registry, parse, spec_block

reg = Registry.load()                     # descubre forks/*/contract.json
c = reg.get("a")

def generar_items(tema):
    respuesta = cliente.completar(sistema=spec_block(c, lang="es"), usuario=tema)
    doc = parse(respuesta, c, strict=False)      # tolerante: acumula errores
    return doc.records, doc.errors                # válidos tipados, rechazados con código

Cuantos más campos,
más gana.

JSON repite el nombre de cada campo en cada objeto. mini-format lo declara una vez en el contrato. El coste de los nombres crece como O(W·N) en JSON y como O(W) aquí.

3 campos

registro estrecho

ahorro32,2 %
20 campos

registro típico de negocio

ahorro46,7 %
50 campos

registro ancho

ahorro49,3 %

Ahorro frente a JSON compacto · escala lineal, origen en 0 %, máximo del eje 50 % · 1000 registros · tokenizador o200k_base · mediana de 5 documentos por celda · datos sintéticos deterministas (semilla 20260915). La curva satura cerca de 32 campos. reproducir →

Mismos datos.
Menos tokens medidos.

1.902 registros de cuatro conjuntos públicos. 35,64 % menos tokens que JSON compacto y 9,65 % menos que TOON plano en el total medido.

Tokens de salida, ahorro y coste del prompt reutilizable
ConjuntoN.miniTOON flatAhorro vs TOONAhorro vs CSVPrompt .mini
DummyJSON products19464.09068.2606,11 %4,42 %1.206
DummyJSON users20843.26860.92628,98 %27,92 %1.796
JSONPlaceholder comments50030.26831.0222,43 %-1,35 %477
USGS earthquake observations1.000164.137173.8035,56 %4,11 %1.336

USGS: 1.000 observaciones reales. DummyJSON y JSONPlaceholder: 902 registros de prueba sintéticos, sin duplicación para inflar el lote. Ida y vuelta JSON exacta en los ocho formatos. TOON oficial 4.1.1; se elige el menor de dos aplanados reversibles. Los porcentajes son de salida: el prompt de .mini se muestra aparte. CSV sigue siendo menor en comentarios. Es una medición de serialización, no de precisión de generación de un LLM. Método y reproducción → · JSON

El mismo documento
no cuesta lo mismo en cada modelo.

Los separadores no se segmentan igual en todos los vocabularios. Mismos 14 dominios, lote de 10, frente a JSON compacto.

r50k_base

vocabulario de 50k

ahorro30,2 %

IC95 [26,8 % · 31,5 %] · k=14

cl100k_base

vocabulario de 100k

ahorro32,2 %

IC95 [29,1 % · 33,5 %] · k=14

o200k_base

vocabulario de 200k

ahorro34,1 %

IC95 [31,5 % · 35,5 %] · k=14

Escala lineal, origen en 0 %, máximo del eje 36 %: la diferencia es real pero pequeña — 3,9 puntos entre el vocabulario más antiguo y el más reciente. Los tres vocabularios pertenecen a la familia tiktoken. reproducir →

Interfaz

Todo sale
del contrato.

pythonminifmt 1.1.0
from minifmt import Registry, parse, dumps, spec_block, roundtrip_ok

reg = Registry.load()                       # descubre forks/*/contract.json
c = reg.get("log")

instruccion = spec_block(c, lang="es")      # bloque para el prompt de sistema
doc = parse(respuesta, c, strict=False)     # tolerante: no lanza, acumula

doc.records                                 # registros válidos, ya tipados
for e in doc.errors:                        # MiniError: code, line, field, message
    print(e)

texto = dumps(doc.to_canonical(), c)          # canónico -> .mini
assert roundtrip_ok(doc.to_canonical(), c)

Playground

Contrato, datos
y salida a la vez.

  1. Elige una familia o diseña la tuya con el asistente.
  2. Pega la respuesta del modelo en el editor: se valida mientras tecleas.
  3. Compara tokens contra JSON, YAML, XML, CSV y el codificador oficial de TOON.

Se ejecuta entero en tu navegador con el port JavaScript de la referencia. Sin servidor, sin cuenta.

Abrir el playground
Playground · demo en bucle0:00 / 0:24

        

Comparativa

Qué hace cada formato
cuando el emisor es un modelo.

Capacidadmini-formatJSONCSVTOON
Menos tokens que JSON compacto
Tipos declarados en el contratoparcialparcial
Error con código, línea y campoparcial
Códigos de error estables en la norma15
Recuperación ante truncamientoparcial
Reparación selectiva por línea
Lectura en streaming, registro a registroparcial
Suite de conformidad publicada303
Dos implementaciones independientesparcial
Listas con elemento marcado
Compatibilidad hacia adelante declarada
Anidamiento arbitrario
Lectura directa sin contratoparcial
Soporte nativo en APIs de proveedores

La compatibilidad conserva los campos conocidos cuando el mismo prefijo declara una versión superior. El perfil base usa registros planos; el toolkit generado reconstruye la estructura JSON de tu dominio. El modelo necesita el prompt y el lector, el contrato.

Empieza por tus datos.

Descarga el toolkit, reúne tus muestras JSON y construye el contrato de tu aplicación.

mini build phones.json --prefix phone --out .mini

Documentación · Especificación 1.0 · Índice de errores · Playground