Terno
Terno es una capa de inteligencia de base de datos diseñada para la seguridad y la precisión, que une la brecha entre los agentes de IA y los datos empresariales. Conéctese instantáneamente al servidor alojado con OAuth, sin necesidad de instalación, o intégrelo directamente en su propio proyecto Django.
Documentación
TernoDBI: Capa de Inteligencia de Base de Datos
TernoDBI es una capa de inteligencia de base de datos diseñada para Seguridad y Precisión, que cierra la brecha entre Agentes de IA y Datos Empresariales. Actúa como un potente servidor independiente de Protocolo de Contexto de Modelo (MCP), o puede integrarse directamente en sus proyectos Django existentes. De cualquier manera, proporciona una API unificada y segura para interactuar con bases de datos a escala de almacén, al tiempo que aplica estrictos controles de acceso y optimiza el contexto del esquema de la base de datos para los LLM.
Inicio Rápido: Chatea con tu base de datos en 5 minutos
La forma más fácil de comenzar es ejecutar TernoDBI localmente y conectar tu agente de IA favorito.
- Instala TernoDBI
pip install terno-dbi - Inicia el servidor
(Por defecto, esto inicia el servidor enternodbi start [port]127.0.0.1:8376. Ejecuta automáticamente migraciones, crea un usuario predeterminadoadmin/adminy configura una organización predeterminada en el primer arranque.) - Configura tu base de datos Abre el panel de administración en http://127.0.0.1:8376/admin y agrega tus conexiones de fuentes de datos.
- Genera un token de acceso
Genera un token desde la interfaz de administración o mediante la CLI. Vincúlalo a tu organización y a un usuario con
--org/--user— un token no vinculado no puede usar funciones específicas de la organización como la memoria:# Query Token (for AI Agents) ternodbi manage issue_token --name "My Agent" --type query --org <subdomain> --user <username> # Admin Token (for full system access) ternodbi manage issue_token --name "System Admin" --type admin --org <subdomain> --user <username> - Configura MCP (Consulta Integración MCP a continuación)
- ¡Comienza a chatear con tus datos empresariales!
Características Clave
- Soporte Multi-Base de Datos: Manejo unificado de conexiones listo para usar para Postgres, MySQL, Snowflake, BigQuery, Databricks, Oracle y SQLite.
- Arquitectura MCP Dividida:
- Servidor de Consultas: Operaciones de solo lectura (listar tablas, información de esquema, ejecutar consultas SELECT) altamente optimizadas para agentes de IA.
- Servidor de Administración: Operaciones de escritura/gestión (renombrar tablas, actualizar metadatos, gestionar descripciones) diseñadas para flujos de trabajo con intervención humana.
- Seguridad de Nivel Empresarial:
- Seguridad a Nivel de Fila (RLS): Define filtros estrictos basados en SQL (por ejemplo,
department_id = 5) que se inyectan automáticamente en cada consulta ejecutada. - Privacidad por Defecto: Oculta tablas o columnas sensibles de la ventana de contexto del LLM a menos que se expongan explícitamente a Roles específicos.
- SQLShield: Validación automática de SQL basada en AST que previene la inyección de prompts y operaciones destructivas.
- Seguridad a Nivel de Fila (RLS): Define filtros estrictos basados en SQL (por ejemplo,
- Enriquecimiento de Esquema Listo para LLM:
- Metadatos Semánticos: Desacopla los nombres físicos de la base de datos (por ejemplo,
t_users_v2_fnl) de nombres semánticos limpios orientados al usuario (Customers). - Perfilado Estadístico: Inyección automática de estadísticas de cardinalidad y distribución para ayudar a los LLM a generar consistentemente filtros SQL correctos.
- Metadatos Semánticos: Desacopla los nombres físicos de la base de datos (por ejemplo,
- Paginación de Alto Rendimiento:
- Basada en Cursor (HMAC): Rendimiento $O(1)$. Los benchmarks demuestran una aceleración de ~28x sobre la paginación por desplazamiento.
- Transmisión del Lado del Servidor: Exporta sin esfuerzo millones de filas mediante cursores del lado del servidor.
Uso y APIs Principales
Ejecutando el Servidor API
# Start on default port (8376)
ternodbi start
# Start on a custom port
ternodbi start 9000
Compartiendo Base de Datos con un Proyecto Django Existente (por ejemplo, Terno-AI)
Si estás ejecutando TernoDBI junto a un proyecto Django existente o incrustándolo dentro de uno que usa el paquete terno_dbi.core, puedes configurar TernoDBI para que use exactamente el mismo archivo de base de datos SQLite. Esto evita mantener bases de datos separadas y permite compartir datos en tiempo real:
DJANGO_PROJECT_PATH=/path/to/your/django/project ternodbi start
Por ejemplo, para compartir la base de datos con Terno-AI:
DJANGO_PROJECT_PATH=/Users/navin/terno/terno-ai/terno ternodbi start
Esto obliga al servidor independiente a leer y escribir directamente en /Users/navin/terno/terno-ai/terno/db.sqlite3.
Comandos de Gestión (CLI)
Automatiza la gestión de credenciales y accesos simplemente mediante la CLI integrada. Siempre pasa --org/--user para vincular el token a una organización y a un usuario — sin ellos el token no tiene identidad y las funciones específicas de la organización (por ejemplo, memoria) no funcionarán:
# General Query Token (For standard AI Assistants)
ternodbi manage issue_token --name "Claude Agent" --type query --expires 30 --org acme --user alice
# Admin Token (Full System Access)
ternodbi manage issue_token --name "System Admin" --type admin --org acme --user alice
# Scoped Token (Restricted to a Specific Datasource)
ternodbi manage issue_token --name "Finance Data Only" --type query --datasource 1 --org acme --user alice
API de Consulta y Paginación
TernoDBI proporciona endpoints REST versátiles.
Modo Offset (Predeterminado) - Mejor para implementaciones de interfaz de usuario estándar.
POST /api/query/datasources/1/query/
{
"sql": "SELECT * FROM users",
"pagination_mode": "offset",
"page": 2,
"per_page": 50
}
Modo Cursor (Alto Rendimiento) - Mejor para agentes sin interfaz y exportaciones de datos grandes.
POST /api/query/datasources/1/query/
{
"sql": "SELECT * FROM users",
"pagination_mode": "cursor",
"per_page": 50,
"cursor": "eyJ2IjoxLCJ2YWx..."
}
TernoDBI como Servidor MCP
TernoDBI expone servidores de Protocolo de Contexto de Modelo (MCP) para conectarse sin esfuerzo a clientes compatibles con MCP.
Herramientas MCP Proporcionadas:
- Servicio de Consulta:
list_datasource,list_tables,list_table_columns,execute_query(restringido de forma segura mediante SQLShield). - Servicio de Administración:
add_datasource,delete_datasource,validate_connection,sync_metadata,rename_table,rename_column,update_table_description,update_column_description,get_table_info.
Ejemplo: Conectando Claude Desktop
- Descarga e instala Claude Desktop.
- Abre Claude Desktop, navega a Cuenta → Configuración → Desarrollador.
- Haz clic en Editar Config para abrir tu
claude_desktop_config.json. - Acuña tokens vinculados a tu organización y usuario (consulta Comandos de Gestión arriba), luego pega la siguiente configuración:
{
"mcpServers": {
"ternodbi-query": {
"command": "uvx",
"args": [
"--from",
"terno-dbi",
"dbi-mcp",
"query"
],
"env": {
"TERNODBI_API_URL": "http://127.0.0.1:8376",
"TERNODBI_API_KEY": "dbi_query_YOUR_TOKEN_HERE"
}
},
"ternodbi-admin": {
"command": "uvx",
"args": [
"--from",
"terno-dbi",
"dbi-mcp",
"admin"
],
"env": {
"TERNODBI_API_URL": "http://127.0.0.1:8376",
"TERNODBI_API_KEY": "dbi_admin_YOUR_TOKEN_HERE"
}
}
}
}
(Nota: Si iniciaste TernoDBI en un puerto personalizado, asegúrate de actualizar el TERNODBI_API_URL en consecuencia.)
5. Reinicia Claude Desktop. Ahora puedes pedirle a Claude: "Muéstrame las fuentes de datos disponibles."
Integraciones Avanzadas
Integrando TernoDBI dentro de un Proyecto Django Personalizado
Si ya tienes una infraestructura Django madura, TernoDBI puede integrarse directamente como una aplicación Django.
Integración Paso a Paso:
- Instala el paquete en tu entorno Django:
pip install terno-dbi - Agrega las aplicaciones principales a tu
INSTALLED_APPSensettings.py:INSTALLED_APPS = [ ... 'terno_dbi.core', # Optional: include query or admin apps based on your needs ] - Incluye las configuraciones de URL de TernoDBI en tu
urls.pyraíz:path('api/terno/', include('terno_dbi.core.urls')), # Mounts the core API endpoints - Ejecuta
python manage.py migratepara aplicar el esquema de TernoDBI junto con tus tablas existentes. - Ahora puedes usar los modelos internos, optimizadores de consultas y servicios de TernoDBI directamente de forma programática dentro de tus vistas de Django o tareas de Celery.
(Consulta nuestra completa Guía de Integración Django para personalización y anulación avanzada).
Integrando con Agentes de IA Personalizados (LangChain, LlamaIndex, Python)
La API REST uniforme de TernoDBI permite que cualquier arquitectura de agente personalizada ingiera datos de forma segura sin necesidad de un host MCP.
Integración Paso a Paso:
- Aprovisiona un token
queryespecífico para tu script personalizado usando la CLI. - En la implementación de tu agente, define una herramienta para llamar a
/api/query/datasources/y descubrir conexiones. - El flujo de tu agente debe dictar:
- Llama a
/api/query/datasources/{id}/schema/para obtener las tablas y columnas optimizadas para el contexto. - Inyecta este contexto de esquema altamente estructurado en el prompt de tu LLM.
- Envía el payload de cadena
sqlgenerado por el LLM mediantePOSTa/api/query/datasources/{id}/query/. - Itera basándote en la estructura de la respuesta o maneja con elegancia los errores de validación de SQLShield.
- Llama a
(Consulta nuestros ejemplos de SDK de Agente Personalizado para implementaciones de referencia en Python y TypeScript).
Documentación
Guías detalladas para configurar y dominar TernoDBI:
- Guía de Configuración
- Arquitectura del Sistema
- Integración MCP
- Seguridad y SQLShield
- Integración Django
Contribuciones
Damos la bienvenida a las contribuciones.
- Haz un fork del repositorio.
- Crea una rama de características:
git checkout -b feat/your-feature - Agrega pruebas y documentación.
- Abre un PR describiendo tu cambio.
Por favor, sigue el estilo de código del repositorio (Black/flake8) e incluye pruebas unitarias para la lógica crítica de seguridad.
Comunidad y Soporte
Si necesitas ayuda, tienes una pregunta o quieres discutir una nueva característica:
- Abre un Issue para informes de errores y solicitudes de características.
- Inicia una Discusión para preguntas generales o comentarios arquitectónicos.
Licencia
TernoDBI es orgullosamente de código abierto y se publica bajo la Licencia Apache 2.0. Consulta el archivo LICENCIA para más detalles.
Construido con precisión para la próxima generación de IA Empresarial.