SPEC 1.1 en borrador — compatibilidad hacia adelante y diagnósticos con rango leer el borrador →

1.0 SPEC 1.1 en borrador →

Salidas de LLM que se validan solas.

Declaras el contrato de tu dominio una vez. mini-format genera la instrucción, valida cada línea de la respuesta y devuelve registros tipados — o un error con código, línea y campo. Hasta 49 % menos tokens que JSON compacto en registros anchos.

Instalar mini-format 1.0

git clone https://github.com/LiveLinDev/mini-format && pip install -e mini-format
Ver la guía de instalación ↗

Instalación desde el repositorio. La publicación en PyPI y npm está prevista en el plan de tareas; hasta entonces el repositorio es la única fuente.

Después sigue la guía de inicio →

Registro de 20 campos

1000 registros · coste relativo a mini-format · menos es mejor

Cada barra es lo que cuesta ese formato comparado con mini-format. Más corta, más barata: por debajo de 1,00× gasta menos que mini-format; por encima, más.

CSVplano0,96×
TOONdatos planos0,99×
mini-format1.0referencia1,00×
JSONcompacto1,88×
YAML1.22,18×
JSONindentado2,72×
XMLelementos3,28×
Ahorro frente a JSON compacto: 46,7 %. Tokenizador o200k_base · mediana de 5 documentos por celda · datos sintéticos deterministas, semilla 20260915.reproducir
Coste relativo en tokens frente a mini-format, 1000 registros, tokenizador o200k_base
Formato5 campos20 campos50 campos
mini-format1,001,001,00
CSV0,970,960,92
TOON1,030,990,94
JSON compacto1,681,881,97
YAML1,932,182,26
JSON indentado2,752,722,87
XML3,333,283,50

Integrado en

SIMAsegundo sistema · por definirtu proyecto aquí

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.

$ pip install -e mini-format

Herramienta

sustituye a jq · scripts de validación

Nueve comandos: validar, diagnosticar, convertir en ambos sentidos, generar el prompt, contar tokens, comprobar familias y crear una nueva.

$ 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

      
Salida abreviada de mini-format 1.0, escrita para esta demostración. Pasa el ratón para pausar.

En preparación

SPEC 1.1

Lo que está en borrador y todavía no forma parte del componente publicado. Se marca aquí para que nadie lo dé por hecho.

  • Compatibilidad hacia adelante. Hoy un lector con contrato v1 rechaza con E05 un documento v2 aunque solo añada campos al final. La regla de §11 se está redactando y cubriendo con casos de conformidad.
  • Diagnósticos con rango exacto (columna inicial y final), además de la línea y el campo actuales.
  • Publicación en PyPI y npm con las 14 familias como datos del paquete.
  • Tercer tokenizador de un modelo abierto en el experimento de tokens.
git -C mini-format pull
SPEC 1.1 · qué cambia0:00 / 0:24

        

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 la cabecera. 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 →

Siete formatos,
y los dos que nos ganan.

La ventaja en tokens existe frente a formatos que repiten claves. Frente a los tabulares sobre datos planos no la hay, y empeora con el ancho. Se publica igual.

Ahorro de tokens de mini-format frente a cada formato, según campos por registro, 1000 registros
Frente a3 campos122050Lectura
XML67,2 %69,3 %69,5 %71,4 %Ventaja máxima, crece con el ancho
JSON indentado60,0 %62,8 %63,2 %65,2 %El caso más común en prompts reales
YAML46,5 %51,8 %54,2 %55,8 %Ventaja sólida y creciente
JSON compacto32,2 %44,2 %46,7 %49,3 %Cifra de referencia del proyecto
TOON (datos planos)7,4 %−2,7 %−1,5 %−6,2 %Sobre datos anidados la ventaja es de 42,7 % (V1)
CSV−0,0 %−5,2 %−4,4 %−8,2 %Pierde. CSV no tipa ni valida

Mediana de 5 documentos por celda · 1000 registros · o200k_base · negativo = mini-format consume más. Frente a CSV y TOON la comparación es solo de tamaño: ninguno expresa tipos, enumeraciones ni versiones, ni produce diagnósticos con código y línea. reproducir → · metodología

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 pertenecen a la misma familia; falta medir uno de un modelo abierto. reproducir →

Interfaz

Todo sale
del contrato.

pythonminifmt 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 declarada1.1
Anidamiento arbitrario
Lectura directa sin contratoparcial
Soporte nativo en APIs de proveedores

Las cuatro últimas filas son limitaciones reconocidas: la compatibilidad hacia adelante está en borrador (1.1), no hay anidamiento arbitrario (SPEC §12), hace falta el contrato para leer, y ningún proveedor lo genera de forma nativa.

Empieza por el contrato.

Clonar, validar el primer documento y comparar tokens en menos de cinco minutos.

mini validate forks/a/fixtures/valid.mini

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