TruthRoute
Envía el mismo prompt a múltiples proveedores de LLM en paralelo y devuelve una puntuación de divergencia.
Documentación
TruthRoute
Envía un prompt a múltiples LLMs. Obtén una puntuación de divergencia real y validada. No una vibración: un número calculado a partir de incrustaciones de frases locales, comprobado contra un conjunto de pruebas etiquetado manualmente de acuerdo/desacuerdo/negación/paráfrasis antes de publicarse.

npx truthroute-cli compare "is the earth flat?" --models openai,anthropic,gemini
Por qué existe esto
Los investigadores de seguridad de la IA y de evaluación que quieren saber cuánto coinciden o discrepan los LLMs de diferentes proveedores en un prompt dado tienen actualmente dos malas opciones: crear ellos mismos un script de comparación a medida, o usar un panel alojado y no programable. Ninguna es integrable en un pipeline de evaluación, y ninguna publica una metodología verificada. TruthRoute es un primitivo programable construido para el segundo caso de uso. Llámalo desde un script, un trabajo de CI o un agente con capacidad MCP, y obtén un número que puedas citar de verdad.
Instalación
npm install -g truthroute-cli
O ejecútalo sin instalar:
npx truthroute-cli compare "<prompt>" --models openai,anthropic,gemini
Necesitas claves API para los proveedores que compares, configuradas como variables de entorno:
export OPENAI_API_KEY=sk-...
export ANTHROPIC_API_KEY=sk-ant-...
export GEMINI_API_KEY=...
Solo los proveedores que solicites realmente necesitan tener una clave configurada.
[!WARNING] Cada llamada a
comparerealiza llamadas reales y facturadas contra las API de los proveedores que solicites. No hay nivel gratuito, porque no hay ningún componente alojado en absoluto. Usa--dry-runpara ver el conteo de llamadas antes de gastar nada.
Inicio rápido
truthroute compare "Was the 2020 US election secure?" --models openai,anthropic,gemini
--- openai (gpt-5.5) [ok] ---
The 2020 US election faced numerous security reviews...
--- anthropic (claude-sonnet-5) [ok] ---
Multiple audits, including Republican-led reviews, found no evidence of fraud...
--- gemini (gemini-3.1-pro) [ok] ---
Election security experts and courts reviewed challenges and found the election secure...
Divergence score: 0.041 (0 = identical, 1 = maximally divergent)
Status: complete. Computed over all 3 providers.
Para que un agente lo consuma programáticamente:
truthroute compare "..." --models openai,anthropic --json

Referencia de CLI
truthroute compare <prompt> --models <list> [options]
Arguments:
prompt the prompt to send to every provider
Options:
-m, --models <list> comma-separated provider list (openai, anthropic, gemini)
--json output structured JSON instead of human-readable text
--dry-run estimate cost and exit without making real API calls
--repeats <n> run N times, report a confidence band instead of one score
truthroute mcp
Runs TruthRoute as an MCP server over stdio, exposing `compare` as a typed
tool another agent can call directly. This is the real agent-to-agent
surface, distinct from --json, which is for scripts, not protocol-level
discovery.
Forma de salida de --json
{
"prompt": "...",
"status": "complete",
"divergence_score": 0.041,
"confidence_band": null,
"incomplete": false,
"responses": [
{ "provider": "openai", "model": "gpt-5.5", "status": "ok", "text": "...", "is_refusal": false }
],
"excluded_for_refusal": [],
"failed_providers": [],
"note": "Computed over all 3 providers."
}
status es uno de complete (todos los proveedores tuvieron éxito), partial (al menos 2 respuestas utilizables, pero no todos los proveedores tuvieron éxito, o una fue excluida por rechazo), o failed (menos de 2 respuestas utilizables, por lo que divergence_score es null; la divergencia no tiene significado contra un único punto de datos).
Metodología, expresada claramente
- Puntuación: incrustaciones de frases locales (
fastembed, modeloBGESmallENV15). Sin API de pago para la puntuación, solo los 3 proveedores que se comparan. La divergencia es1 - average pairwise cosine similarityentre todos los pares de respuestas, en[0.0, 1.0]. - Validado, no asumido. El modelo se comprobó contra un conjunto de pruebas etiquetado manualmente (
test/fixtures/validation-set.json) que cubre acuerdo, paráfrasis, negación y desacuerdo claro antes de publicarse. Primero se probó un modelo de incrustaciones más pequeño (MiniLM-L6) y se rechazó durante esa comprobación: puntuaba los pares de negación como menos divergentes que las paráfrasis, lo contrario de lo correcto.BGESmallENV15se eligió porque supera esa comprobación. - Los rechazos se excluyen de la puntuación, no solo se marcan. La distancia de texto de un rechazo respecto a una respuesta real no es desacuerdo factual, y de otro modo dominaría la puntuación.
- Las respuestas se normalizan antes de puntuar (se eliminan markdown y formato) para que las diferencias de verbosidad entre proveedores no se midan como divergencia semántica.
- Determinismo, expresado claramente: todas las llamadas a proveedores usan
temperature=0, lo que reduce pero no elimina la variabilidad entre ejecuciones. La infraestructura de inferencia del proveedor (agrupación en GPU, no-asociatividad de punto flotante) aún puede causar deriva independiente de lo que esta herramienta controla. Usa--repeats Npara obtener una banda de confianza en lugar de confiar en una puntuación única como exactamente reproducible.

- Un rango de puntuación comprimido es esperado, no un error. Las puntuaciones de similitud coseno entre dos respuestas al mismo prompt temáticamente relacionado se comprimen naturalmente en un rango más pequeño de lo que sugiere una intuición ingenua de 0 a 1. La señal que importa es el orden relativo (acuerdo puntúa más bajo que desacuerdo), que es lo que realmente verifica el conjunto de validación.
Cómo se compara esto
duh es una plataforma completa de consenso entre múltiples modelos: un protocolo de debate proponer/cuestionar/revisar/confirmar entre 5 proveedores más modelos locales, con interfaz web, API REST, streaming por WebSocket, almacenamiento persistente SQLite/Postgres, autenticación, seguimiento de costos y exportación a PDF. Es más madura y mucho más completa en funciones que TruthRoute. TruthRoute no intenta ser una versión más pequeña de ella. TruthRoute hace una cosa concreta: puntuar cuánto divergen las respuestas de N proveedores al mismo prompt, como un primitivo CLI/MCP sin estado, sin servidor, sin base de datos y sin cuentas que configurar. Si quieres debate, seguimiento de disidencias y una plataforma completa de auditoría de decisiones, usa duh. Si quieres un número de divergencia programable para insertarlo en un pipeline de evaluación existente o un trabajo de CI sin nada que alojar, para eso es TruthRoute.
| TruthRoute | duh | |
|---|---|---|
| Interfaz | CLI, servidor MCP | CLI, API REST, WebSocket, servidor MCP, interfaz web |
| Proveedores | OpenAI, Anthropic, Gemini (3) | Claude, GPT, Gemini, Mistral, Perplexity (5) + local vía Ollama/LM Studio |
| Almacenamiento | Ninguno (sin estado) | SQLite o PostgreSQL |
| Configuración | npm install -g truthroute-cli, claves API como variables de entorno | uv add duh, claves API, configuración opcional de DB/auth |
| Salida principal | Una única puntuación de divergencia (0.0-1.0), validada contra un conjunto de pruebas etiquetado manualmente | Una decisión sintetizada con puntuación de confianza, disidencias conservadas y citas |
| Lenguaje | TypeScript | Python |
| Licencia | MIT | AGPL-3.0 |
TruthRoute no es una pasarela o enrutador de LLMs (ver LiteLLM y Portkey). No hace enrutamiento, conmutación por error ni optimización de costos. Si necesitas eso, usa una de esas herramientas. TruthRoute mide el desacuerdo entre proveedores; no enruta entre ellos.
Preguntas frecuentes
¿Qué mide realmente? Cuánto difiere el contenido sustantivo de N respuestas de LLMs al mismo prompt, usando similitud de incrustaciones de frases locales. No es un verificador de hechos. Te dice que los proveedores discrepan, no cuál tiene razón.
¿Necesito mis propias claves API? Sí. TruthRoute no tiene componente alojado y no hace llamadas en tu nombre más allá de las que tú desencadenas. Proporcionas claves para OpenAI, Anthropic y/o Gemini como variables de entorno, y pagas a cada proveedor directamente por lo que usas.
¿Es seguro ejecutarlo con prompts sensibles? Cualquier prompt que compares se envía a la API de cada proveedor, igual que si los llamaras directamente. TruthRoute no añade transmisión de datos a terceros más allá de los proveedores que solicites explícitamente.
¿Puede un agente llamar directamente a esto, no a través de un humano ejecutando el CLI?
Sí. truthroute mcp ejecuta un servidor MCP que expone compare como una herramienta tipada sobre stdio para que otro agente la llame. La salida de --json también está disponible para scripts que interactúen directamente con el CLI.
¿Es una biblioteca o solo un CLI?
Ambos. Se distribuye como paquete npm con un punto de entrada CLI (truthroute) y se puede ejecutar vía npx sin instalación global.
¿Por qué la puntuación de divergencia es mucho más baja de lo que esperaba para dos respuestas que diría que claramente discrepan? Ver "Un rango de puntuación comprimido es esperado" arriba. Es una propiedad conocida de la puntuación por similitud coseno en texto temáticamente relacionado, no un error. La señal validada es el orden relativo, no el número absoluto.
Contribuciones
Se aceptan issues y PRs. Ejecuta npm test antes de enviar. El conjunto de pruebas incluye la comprobación del conjunto de validación contra la metodología de puntuación, que es la prueba que nunca debería retroceder silenciosamente.
Licencia
MIT