OpenGATE

Verificaciones de fundamentación deterministas para respuestas de RAG y QA sobre documentos: hechos requeridos presentes, cada número trazable al contexto, y abstención cuando el contexto no puede responder. Sin juez LLM.

Documentación

Don't trust AI. Verify it. — OpenGATE, open-source verification for evidence-grounded AI, no LLM judge

Evaluación y Pruebas de IA Fundamentada en Evidencia (Open Grounded AI Testing & Evaluation)

Verificación determinista y anclada en datos de referencia para IA fundamentada en evidencia — sin juez LLM.

CI npm npm downloads PyPI Docker Docker pulls Glama MCP server node License: MIT PRs welcome

Inicio rápido · Arquitectura · Superficies · Ejemplos · Hoja de ruta · Contribuciones · Registro de cambios


Evidencia sobre plausibilidad. OpenGATE verifica sistemas de IA que deben justificar cada respuesta a partir de material fuente — pipelines RAG, herramientas de preguntas y respuestas sobre documentos, asistentes legales y científicos. Responde una pregunta por encima de todo: ¿puede el sistema probar su respuesta a partir de la evidencia que se le dio?

La verificación es determinista — sin LLM como juez, sin modelo calificador, sin escala de veredicto de seis puntos. Los hechos requeridos deben estar presentes, cada número debe poder rastrearse hasta la fuente, y cuando el contexto no puede responder, el sistema debe abstenerse en lugar de inventar. Como es lógica pura, es reproducible, gratuita y lo suficientemente rápida para ejecutarse en cada respuesta o como compuerta en cada commit.

A medida que la IA se adentra en dominios de alto riesgo, la evaluación se está volviendo tan fundamental como lo son las pruebas automatizadas en el software tradicional. OpenGATE convierte las fallas de fundamentación en números que puedes rastrear, y aplica una compuerta a cada cambio de prompt, modelo o flujo de trabajo contra una línea base — para que la confiabilidad no pueda retroceder silenciosamente.

Inicio rápido (60 segundos)

No se necesita clave API — el conjunto offline ejecuta puntuadores deterministas contra el conjunto de referencia incluido:

npx @pharmatools/opengate           # run the offline evaluation suite
npx @pharmatools/opengate init      # scaffold gold cases + HTTP config + a GitHub Action
OpenGATE — 39 case(s), online=false, adapter=refcheckr

  ✓ citation-detection   PASS
      perClaim_exactSetRate      100.0%
      perClaim_jaccardMean       100.0%
      supportedStyle_accuracy    100.0%
  ⊘ grounding            SKIPPED — online scorer (pass --online)

Apunta opengate.http.json a tu endpoint y agrega --online --ci para aplicar la compuerta a tu propio sistema. Tutorial completo: Cómo empezar.

Una verificación, muchas superficies

La misma lógica determinista de fundamentación se distribuye dondequiera que viva tu stack:

SuperficieInstalaciónÚsalo para
CLI + frameworknpx @pharmatools/opengateSuite de evaluación completa, adaptadores, compuerta de regresión
Acción de GitHubuses: nickjlamb/opengate@v0Compuerta CI lista para usar en cualquier repositorio
Paquete de Pythonpip install opengate-groundingcheck_grounding(), compuerta pytest, métrica DeepEval
Servidor MCPnpx @pharmatools/opengate-mcpAgentes que verifican sus propias respuestas en línea
Imagen Dockerdocker run pharmatools/opengatePipelines contenedorizados, solo CPU

Arquitectura

OpenGATE architecture: systems under test connect through a one-file adapter to the deterministic core — gold datasets and system answers feed pure-logic scorers, which produce versioned scorecards; a regression gate compares each scorecard to the baseline on every commit — improved or held deploys, regressed fails the build.

Los puntuadores nunca hablan directamente con un sistema — lo alcanzan a través de un pequeño adaptador, de modo que la metodología viaja y solo cambia el conjunto de referencia. En el ciclo de desarrollo se ubica donde se ubica CI: cambia un prompt, modelo o pipeline; la compuerta de regresión compara el nuevo cuadro de puntuación contra la línea base — mejora o mantiene despliega, regresión falla la compilación.

¿Por qué no DeepEval?

Usa ambos — los evals miden, OpenGATE verifica. Los frameworks de propósito general como DeepEval y OpenAI Evals evalúan sistemas de IA ampliamente, generalmente con un LLM juzgando la salida. OpenGATE verifica la promesa más estrecha y difícil: que cada respuesta esté fundamentada en evidencia:

  • La procedencia es de primera clase — ¿la cita citada realmente existe, palabra por palabra, en la fuente?
  • Sin juez LLM — las puntuaciones son verificaciones deterministas contra datos de referencia etiquetados a mano, por lo que son reproducibles y gratuitas de ejecutar en CI; tu juicio vive en el conjunto de referencia, no en un modelo calificador.
  • La detección de regresiones es de primera clase — cada ejecución se compara contra una línea base por adaptador; una caída falla la compilación.

Combina un framework general para métricas de calidad amplias con OpenGATE para aplicar la compuerta a la fundamentación.

Conceptos centrales

Casos de referencia — casos de referencia etiquetados a mano (datasets/cases/): texto fuente, las afirmaciones que deben extraerse, las oraciones que no deben extraerse, y fragmentos de referencia con veredictos conocidos y correctos. Copia _template.json para agregar uno; formato en datasets/SCHEMA.md, reglas de etiquetado en datasets/LABELING-GUIDE.md.

Puntuadores — un módulo por familia de métricas (src/scorers/):

PuntuadorModoMide
citation-detectionofflinecoincidencia exacta y Jaccard del conjunto de citas por afirmación; precisión de estilo admitido
claim-extractiononlineprecisión / recuperación / F1 vs. referencia; fuga de no-afirmaciones; fidelidad (la afirmación es palabra por palabra de la fuente)
verdict-accuracyonlineprecisión exacta y de adyacencia en una escala de seis puntos; tasa de alucinación de pasajes; consistencia; latencia y costo de tokens
redactiononlinerecuperación de identificadores de referencia con fugas como fallas nombradas; sobre-redacción; seguimiento de brechas conocidas
simplificationonlinefidelidad de reescrituras: recuperación de anclas (los hechos críticos sobreviven), números fabricados, límites de longitud
retrievalonlinefidelidad de registros recuperados vs. la autoridad: campos ancla + invariantes estructurales
groundingonlineRAG genérico: recuperación de anclas de respuesta, fabricación vs. contexto, y abstención. La ruta llave en mano

Los puntuadores offline se ejecutan sin clave API — lo suficientemente rápidos para cada commit. Los puntuadores online ejercitan un sistema en vivo a través de un adaptador.

Cuadros de puntuación — cada ejecución escribe results/<timestamp>.json sellado con el SHA de git, de modo que cualquier resultado sea reproducible y auditable. Las ejecuciones por modelo llevan una etiqueta run_model, convirtiendo el directorio de resultados en una comparación medida (precisión × alucinación × latencia × costo).

Compuerta de regresión — --baseline guarda una referencia; las ejecuciones posteriores imprimen deltas por métrica (▲/▼ en puntos porcentuales) y --ci falla la compilación ante cualquier caída. Las líneas base son por adaptador, de modo que el cuadro de puntuación de un sistema no puede afectar al de otro.

Informe HTML — agrega --report (o opengate report) para un panel autocontenido: aprobado/fallido por puntuador, deltas vs. línea base, cada falla nombrada. Un archivo, sin servidor, sin dependencias.

Evaluando tu propio sistema

Un adaptador es un archivo: dos exportaciones base — onlineAvailable(), onlineConfigHint() — más al menos una capacidad completa (p. ej., grounding → answer()). Los puntuadores verifican adapter.capabilities y se omiten limpiamente a través del límite; los adaptadores se validan al cargarse con mensajes que nombran cada exportación faltante.

OPENGATE_ADAPTER=./adapters/my-system.mjs npm run eval:online

Para sistemas respaldados por REST hay una ruta sin código: el adaptador HTTP genérico incluido lee rutas de endpoint y encabezados de opengate.http.json (interpolación ${ENV}, captura integrada de latencia/tokens). Contrato completo y un esqueleto mínimo: ADAPTERS.md.

Ejemplos

  • Evaluando un agente RAG impulsado por NIM — construye un agente RAG en un modelo NVIDIA NIM y aplica la compuerta a la fundamentación de sus respuestas con OpenGATE, de manera determinista y sin juez LLM. Incluye un notebook de Python ejecutable (opengate-grounding) y un adaptador Node para la compuerta CI.

Probado en producción

Cuatro productos de PharmaTools se ejecutan en OpenGATE en CI — cuatro formas de capacidad diferentes, un estándar de evaluación. Ejecutado contra el conjunto de referencia de RefCheckr, OpenGATE:

  • sacó a la superficie un modo de falla silenciosa de análisis que afectaba ~50% de los veredictos de múltiples afirmaciones, eliminado con salida estructurada forzada (→ 0);
  • redujo a la mitad la alucinación de pasajes (5.8% → 2.4%) al impulsar un cambio medido en el modelo de producción — una decisión tomada con números, no con reputación;
  • mantiene la extracción de afirmaciones en 0.91 F1 con 0.93 de recuperación en la línea base comprometida (variación entre ejecuciones 0.86–0.94 — el divisor es un LLM), y actualmente está fallando su propia compuerta: 2 no-afirmaciones conocidas se filtran en la extracción en la mayoría de las ejecuciones, un problema abierto del divisor que la compuerta reporta en lugar de redondear.
Redacta — capacidad de redacción (prueba de que la metodología no está moldeada para QA)

Redacta envuelve el motor @pharmatools/redacta, puntuado contra notas clínicas sintéticas del Reino Unido con identificadores etiquetados como referencia. En su primera ejecución, la evaluación encontró dos errores reales del motor (frases de relación que se tragaban nombres anidados; apellidos con apóstrofo omitidos) — ambos corregidos y confirmados (knownGap_closed: 2), luego promovidos a referencia. Cuadro de puntuación actual: 100% de recuperación en 25 identificadores de referencia, 0 fugas, sin brechas abiertas.

npm install --no-save @pharmatools/redacta
node src/runner.mjs --online --adapter ./src/adapters/redacta.mjs
Patiently AI — capacidad de simplificación (fidelidad de la paráfrasis)

Patiently AI ejercita la puntuación de fidelidad para texto que es paráfrasis por diseño. La evaluación detectó que el simplificador omitía detalles críticos de seguridad — una dosis de antibiótico desapareció de un resumen de alta (recuperación de anclas 86%). Una regla de preservación llevó la siguiente ejecución a 100% de recuperación de anclas, 0 hechos omitidos, 0 números fabricados — una medición por ejecución, no una garantía: una captura congelada de exp-2 hecha seis días después de la corrección aún contiene un rango de referencia correcto pero sin fuente, marcado por diseño (RESULTS.md §6). Esa cola es la razón por la que la evaluación ahora aplica la compuerta al backend de Patiently en CI y re-puntúa el servicio en vivo semanalmente, con fabricaciones fallando en la primera ocurrencia.

node src/runner.mjs --online --adapter ./src/adapters/patiently.mjs
PubCrawl — capacidad de recuperación (la capa sobre la que todo lo demás se fundamenta)

PubCrawl no tiene modelo — ejercita la fidelidad de recuperación contra anclas verificadas a mano e invariantes estructurales, detectando regresiones del analizador (matrices de autores colapsadas, fuga de [object Object]) que envenenarían cada cita posterior. Que OpenGATE puntúe un sistema que no es IA es el punto: la IA fundamentada en evidencia solo es tan confiable como la recuperación que la sustenta.

node src/runner.mjs --online --adapter ./src/adapters/pubcrawl.mjs

Metodología completa y comparación de modelos: cómo se evalúa RefCheckr.

Estructura del proyecto

opengate/
├── src/
│   ├── lib/          metrics + shared grounding core (single source of truth)
│   ├── scorers/      one file per metric family (7 scorers)
│   ├── adapters/     system-under-test boundary (refcheckr.mjs is the reference)
│   └── runner.mjs    CLI: discover cases → score → report → snapshot → gate
├── datasets/         gold-labelled cases (39) + fixtures + schema
├── examples/         worked examples (NVIDIA NIM RAG)
├── mcp/              MCP server (@pharmatools/opengate-mcp)
├── python/           opengate-grounding (PyPI) + DeepEval metric
├── Dockerfile        CPU-only image (pharmatools/opengate)
└── action.yml        GitHub Action

Documentación

DocQué contiene
Cómo empezarDe cero a una compuerta CI para un sistema RAG genérico
ADAPTERS.mdEl contrato del adaptador + un esqueleto mínimo
datasets/SCHEMA.mdFormato de casos de referencia
Hoja de rutaQué sigue, y el camino a 1.0
ContribucionesConfiguración de desarrollo, agregar casos/adaptadores/puntuadores, flujo de PR
Registro de cambiosHistorial de versiones

Contribuciones

Las contribuciones son bienvenidas — especialmente casos de referencia (nuevos dominios, estilos de cita), adaptadores (conecta tu sistema) y puntuadores (nuevas familias de métricas). Consulta CONTRIBUTING.md — incluyendo sus expectativas de soporte y gobernanza y la divulgación de desarrollo asistido por IA; abre un issue para discutir cambios grandes. Las interfaces pueden cambiar antes de 1.0, y semver señalará cambios disruptivos.

Citando OpenGATE

Si usas OpenGATE en investigación, por favor cítalo — los metadatos de cita están en CITATION.cff (el botón "Cite this repository" de GitHub lo usa).

Licencia

MIT — porque los frameworks de evaluación no deberían ser cajas negras. Si una evaluación influye en decisiones de despliegue, los ingenieros deberían poder inspeccionar cada puntuador, métrica y referencia.