digline

Código abierto, Apache-2.0v1.0.3Traducido del inglés con un modelo de IA. Original en inglés del 2026-10-30

Cambiaste un prompt.¿Qué más empeoró?

Un prompt nuevo, una versión de modelo, la actualización de una biblioteca. La aplicación sigue funcionando, las pruebas siguen pasando y una respuesta de la que dependía tu cliente ahora es peor.

¿Peor, o solo distinta? Ejecuta la misma suite dos veces y las puntuaciones se mueven solas.

digline congela un run que aprobaste como referencia y te dice qué se movió frente a ella.

Nos dimos cuenta porque nuestro propio noise floor resultó ser más ancho que la tolerancia que habíamos declarado.

pip install digline

Requiere Python 3.12 o posterior

  • El inicio rápido no necesita clave de API
  • Sin servidor, sin telemetría
  • Código de salida para CI
digline comparesupport · exit 1

how-do-i-returnempeoró

llm_rubric
1.00 → 0.40
contains
1.00 → 0.00
También peor
is-it-waterproof, where-is-my-order
prompt.md · +1 −1 líneas, modificadas respecto a la referencia
-Sign every reply as "— Northwind Support".+Sign every reply as "— the Northwind team".

6 checks empeoraron. CI se detiene aquí.exit 1

Modelo y juez predefinidos, 1 muestra por caso: en esta demostración no se mide el ruido del juez. Capturado con digline 1.0.3, run 2026-10-31T13-26-05-590355… · home.json

El problema

Una aplicación LLM puede empeorar sin que nada se rompa.

Las pruebas pasan, la aplicación responde, la demostración funciona. Luego un cambio en un prompt, una versión de modelo o la actualización de una biblioteca modifica una respuesta de la que dependía tu cliente, y nada en el pipeline lo indica.

Cómo suele ocurrir

  • Volver a ejecutar las evals y mirar la media
  • No hay forma de distinguir una caída real de un mal día del juez
  • Lo que se aprobó, y cuándo, vive en el cuaderno de alguien
  • El cliente descubre la regresión primero

Con una referencia aprobada en el repositorio

  • Cada cambio se compara caso por caso
  • Se mide el ruido del juez, y un check puede pedir que una caída se lea frente a ese ruido
  • La referencia es un archivo en un PR, con un commit y un nombre
  • CI se detiene antes que el lanzamiento

Cómo encaja

Vive en tu repositorio, no en un servidor.

No hay que registrarse en nada ni alojar nada. La referencia es un archivo y la herramienta, un paquete.

La referencia es un archivo de tu repositorio

Puntuaciones, prompt y configuración del modelo, versionados junto al código. Cambia mediante un PR, así que cada aprobación lleva un commit y un nombre.

Uno dependencia, sin SDK de proveedor

digline instala jsonschema y nada más propio. Sin servidor, sin telemetría, nada alojado. En CI el código de salida es toda la interfaz.

Proveedores

Un plugin para cada uno, que se instala solo si lo usas.

  • Anthropicdigline-anthropic
  • OpenAIdigline-openai y cualquier endpoint compatible con OpenAI
  • Amazon Bedrockdigline-bedrock

Ejemplos resueltos

Una aplicación real en cada framework, con su suite.

Otras formas de ejecutarlo

En un contenedor, o para un agente.

Checks

Primero lo determinista, el juez al final.

22 checks hoy, en cinco tipos. La lista crece; los tipos se mantienen.

Sin referencia y con ella

El mismo run de eval, leído de dos maneras.

Una línea del prompt cambió entre dos runs. A la izquierda, las puntuaciones que obtienes sin referencia. A la derecha, lo que imprime digline frente a la referencia aprobada.

El run nuevo por sí solo sin referencia

case               llm_rubric  containshow-do-i-return    0.40        0.00is-it-waterproof   0.40        0.00where-is-my-order  0.40        0.00¿Eran 1.00 ayer? ¿Cambió algo?Nada aquí lo dice.
sin baselineningún cambio registradosin código de salida

digline compare frente a la referencia

6 checks got worse compared with the reference. Every case could be judged. No case is suspended. The suite is unchanged from the reference. 1 file under test changed since the reference.tenant 'northwind', against baseline 2026-10-31T13-26-05-235870-00-00-282b0c02d6511fb4  prompt.md · +1 −1 lineshow-do-i-return · llm_rubric · Went from passing to failing (1.000000 → 0.400000).how-do-i-return · contains · Went from passing to failing (1.000000 → 0.000000).… 4 líneas másexit 1
cada check con su nombrecambio de prompt detectadoexit 1

Las dos columnas provienen del mismo run capturado, digline 1.0.3. La de la izquierda muestra solo las puntuaciones nuevas; la de la derecha es la salida de la comparación, abreviada donde se indica.

Pruébalo

El inicio rápido funciona sin clave de API.

Necesitas Python 3.12 o posterior. La guía usa modelo y juez predefinidos, así que puedes ver todo el ciclo antes de conectar un proveedor real.

  1. digline run

    Ejecuta la suite y escribe un archivo de run.

  2. digline promote

    Una persona aprueba ese run como referencia.

  3. digline compare

    Cada run posterior se comprueba contra ella.

escribes
digline imprime
$ pip install digline==1.0.3

      
$ digline run --suite support.py
2026-10-31T13-26-03-899807-00-00-282b0c02d6511fb4
$ digline promote --suite support.py --run latest --replacing none
tenant 'northwind' · support baseline set to 2026-10-31T13-26-03-899807-00-00-282b0c02d6511fb4
$ digline compare --suite support.py --run latest
Nothing got worse compared with the reference. Every case could be judged. No case is suspended. The suite is unchanged from the reference.tenant 'northwind', against baseline 2026-10-31T13-26-03-899807-00-00-282b0c02d6511fb4

Salida capturada de digline 1.0.3, run 2026-10-31T13-26-03-899807…. Guía completa

En un flujo con agentes

Dónde se sitúa el check cuando un agente hace los cambios.

El agente edita; digline decide si la edición puede seguir adelante.

Diagrama animado de digline en un flujo con agentes: el cambio de un agente de programación pasa por digline, un gate dentro de tu repositorio, que lo compara con el baseline aprobado. La deriva que se mantiene dentro de un noise floor declarado se absorbe sin que el gate falle, y el resumen la cuenta; donde un check no declara ninguno decide su tolerancia; una deriva real llega a una persona en forma de dossier, y solo la firma de esa persona actualiza el baseline. Cuando el agente intenta recurrir a promote, el servidor responde que esa herramienta no existe. Diagrama animado de digline en un flujo con agentes: el cambio de un agente de programación pasa por digline, un gate dentro de tu repositorio, que lo compara con el baseline aprobado. La deriva que se mantiene dentro de un noise floor declarado se absorbe sin que el gate falle, y el resumen la cuenta; donde un check no declara ninguno decide su tolerancia; una deriva real llega a una persona en forma de dossier, y solo la firma de esa persona actualiza el baseline. Cuando el agente intenta recurrir a promote, el servidor responde que esa herramienta no existe.

Hoja de ruta

Hacia dónde va

Entregado — credibilidad del veredicto: un check que pide un noise floor lo obtiene, medido a partir de las propias muestras de su referencia, y un check que no lo pide se decide por la tolerancia que escribió su autor; el trabajo pendiente ahora es la adopción.

Dos cosas nunca estarán en la hoja de ruta. Un servicio alojado que reciba tus payloads — prompts, salidas y el juez se quedan en tu perímetro. Y la recopilación de datos de uso, nunca.

toda la hoja de ruta, con vías y gates en lugar de fechas →

Pilotos

¿Desarrollas funciones con LLM para clientes?

Busco unos pocos equipos piloto que usen digline en proyectos reales — sobre todo equipos que construyen y mantienen soluciones de IA para terceros. A cambio obtienes soporte directo y voz en lo que se construya después.

Escríbeme: hello@digline.dev o abre una issue en GitHub