Volver al inicio

Integraciones · LangChain

Acceso seguro a la base de datos para tus agentes de LangChain

No entregues SQL en bruto a un agente de LangChain. Que lea a través de una capa de recuperación acotada y de solo lectura, y envía cada INSERT, UPDATE o DELETE que proponga a una comprobación allow/deny antes de que tu código ejecute la sentencia.

Con Claix son dos llamadas HTTP desde tus herramientas: Retrieve para lecturas y Guard para escrituras. Compatible con LangGraph, MCP y A2A.

De un vistazo

Qué necesitas en LangChain

Qué necesitasQué usar en LangChainEndpoint Claix
Respuestas desde datos en vivoHerramienta propia (o MCP) que hace POST a RetrievePOST /retrieve/{agent_name}
Escrituras segurasAcción con nombre: monta SQL → Guard → ejecuta si allowPOST /check-sql
Saber qué pasóTrazas Claix + webhooks de alertaGuard Traces
Parada de emergenciaScript de ops o herramienta de adminPOST /agents/pause/{agent_id}

El problema

Por qué una credencial de base de datos no basta

Un agente de LangChain con herramientas decide qué herramienta llamar y con qué argumentos. Si una de ellas es un SQL toolkit, un helper tipo SQLDatabaseChain o un motor con permisos de escritura, el modelo puede enviar cualquier sentencia que esa credencial permita.

Un system prompt que diga que nunca borre nada es una petición al modelo, no una restricción sobre la base de datos. El control tiene que estar fuera del modelo y dar siempre la misma respuesta.

Comparativa

Cuatro formas de conectar un agente LangChain a una base de datos

Enfoque¿Puede cambiar datos?¿Tablas/columnas acotadas?¿Respuestas tipadas?¿Reglas de escritura?Auditoría
SQL toolkit (lectura/escritura)Todo lo que el rol permitaSolo GRANTs manualesNoSolo el promptLogs de tu app
SQL toolkit (solo lectura)NoGRANTs manualesNoN/ALogs de tu app
MCP genérico de base de datosDependeDependeDependeDependeDepende
Claix Retrieve + GuardSolo tras allowPor ruta y agenteSíReglas en lenguaje naturalTrazas completas

Cómo funciona

Qué hace Claix por tu agente de LangChain

  • Retrieve (lecturas)

    Conecta cualquier base SQL con un rol de solo lectura. Define rutas y agentes. Tu herramienta de LangChain pregunta en lenguaje natural; Claix responde dentro del perímetro que marques—valores tipados para el siguiente paso del grafo.

  • Guard (escrituras)

    Escribes reglas en lenguaje natural. Cuando el agente propone un cambio, tu herramienta llama primero a Guard. Claix decide; tu código ejecuta. Ningún modelo decide en el momento de la comprobación.

  • Trazas

    Cada consulta y cada veredicto quedan registrados, con webhooks opcionales cuando algo se bloquea.

Configuración

Conecta tu base de datos a LangChain con Claix

Expón acciones con nombre, no SQL libre. El modelo solo rellena parámetros; tu código controla auth, plantillas y ejecución.

  1. 01

    Dale a Claix un rol de solo lectura

    Crea un rol con SELECT en las tablas que el agente necesita. Conéctalo para que Claix redacte el Data Map.

  2. 02

    Crea una ruta y un agente

    Elige tablas y columnas, escribe una guía corta, adjunta la ruta y usa el modo razonado para respuestas tipadas.

  3. 03

    Guarda la API key fuera del prompt

    Variable de entorno o gestor de secretos como x-api-key (o Bearer). Nunca en el system prompt ni en la descripción de la herramienta.

  4. 04

    Añade una herramienta Retrieve

    Un @tool de LangChain que haga POST a /retrieve/{agent_name}. El modelo solo rellena la pregunta.

  5. 05

    Escribe reglas de Guard

    Por ejemplo: los agentes pueden cambiar el estado de una reserva pero nunca borrarla; ninguna sentencia puede cambiar más de 5 filas.

  6. 06

    Monta una herramienta de escritura con Guard

    Solo acciones con nombre: monta una sentencia parametrizada, POST /check-sql, ejecuta solo si allowed es true.

  7. 07

    Alertas y kill switch

    Engancha los webhooks de denegación a tu notificador. Pausa con POST /agents/pause/{agent_id}. Limita consultas correctas por periodo.

Retrieve

Una herramienta Retrieve que el modelo puede llamar

El modelo solo rellena la pregunta; tu código controla la URL, la auth y el parseo. ¿Prefieres MCP? El mismo agente está disponible como claix.retrieve.ask.

import os
import httpx
from langchain_core.tools import tool

CLAIX_KEY = os.environ["CLAIX_API_KEY"]
RETRIEVE_URL = "https://claix.dev/retrieve/restaurant-ops"

@tool
def ask_database(question: str, format: str = "string") -> str:
    """Ask a question about live operational data."""
    response = httpx.post(
        RETRIEVE_URL,
        headers={"x-api-key": CLAIX_KEY, "Content-Type": "application/json"},
        json={"questions": [{"question": question, "format": format}]},
        timeout=30.0,
    )
    response.raise_for_status()
    answers = response.json().get("ia_response") or []
    return str(answers[0] if answers else "")

Guard

Una herramienta de escritura con Guard

Monta la sentencia desde una plantilla, compruébala y ejecuta solo si allow. Usa $1/$2 en Postgres y ? en MySQL/MariaDB. Devuelve el motivo de denegación al agente.

import os
import httpx
from langchain_core.tools import tool

CLAIX_KEY = os.environ["CLAIX_API_KEY"]
CHECK_URL = "https://claix.dev/check-sql"

def run_write(sql: str, params: list) -> dict:
    check = httpx.post(
        CHECK_URL,
        headers={"x-api-key": CLAIX_KEY, "Content-Type": "application/json"},
        json={"sql": sql, "params": params},
        timeout=15.0,
    )
    check.raise_for_status()
    verdict = check.json()
    if verdict.get("allowed") is not True:
        return {"ok": False, "reason": verdict.get("reason")}
    # Only here: execute with your write credential
    return {"ok": True, "decision_id": verdict.get("decision_id")}

@tool
def cancel_reservation(reservation_id: int) -> str:
    """Cancel one reservation by id. Never deletes rows."""
    result = run_write(
        "UPDATE reservations SET status = $1 WHERE id = $2",
        ["cancelled", reservation_id],
    )
    if not result["ok"]:
        return f"Denied: {result.get('reason')}"
    return f"Cancelled reservation {reservation_id}"

Ejemplo

Un asistente de operaciones de restaurante

Qué pide el usuarioQué ocurreResultado
¿Cuántas mesas hay reservadas esta noche?Herramienta Retrieve con format intUn número que el grafo puede usar
¿Hay alguien de turno después de medianoche?Retrieve con format booleantrue/false para el siguiente paso
Cancelar la reserva 4812Herramienta cancel_reservation → GuardPermitido; luego corre tu escritura
Borrar todas las reservas del mes pasadoEl agente no tiene DELETE libreNo puede; o Guard lo deniega

Seguridad

Checklist para agentes LangChain con acceso a la base

  • Solo lectura para Claix

    Usa un rol de solo lectura para la conexión de Claix.

  • Sin herramientas de SQL libre

    Expón acciones con nombre y plantillas. Mantén la credencial de escritura fuera de la lista de herramientas del agente hasta después de Guard.

  • Cerrar en fallo

    Ejecuta solo con HTTP 200 y allowed: true.

  • Secretos y límites

    API key en env/secretos; una sentencia por comprobación; límites de llamadas y revisión regular de trazas.

Precios

Precios y un ejemplo de coste

Cada cuenta tiene 30 llamadas correctas al mes gratis, sin tarjeta. Solo pagas las llamadas correctas (HTTP 200).

Retrieve · IA gestionada Claix0,10 € / pregunta
Retrieve · tu clave LLM (BYOK)0,02 € / pregunta
Guard0,01 € / comprobación
EnterpriseSelf-hosted · a medida

Ejemplo: 1.000 preguntas y 1.000 comprobaciones ≈ 100 € + 10 € con IA gestionada, o 20 € + 10 € con tu propia clave (antes de las 30 gratis y los tokens del proveedor).

Preguntas frecuentes

¿Cómo doy a un agente de LangChain acceso seguro a mi base de datos?
Conecta la base a una capa controlada con un rol de solo lectura, expón solo tablas y columnas concretas con una herramienta Retrieve, y pasa cada escritura por una comprobación allow/deny antes de que tu código ejecute. Claix lo hace con dos llamadas HTTP desde tus herramientas.
¿Puede un agente de LangChain borrar mi base de datos?
Puede si le das un SQL toolkit con permisos de borrado y confías en el prompt. Para evitarlo, usa un rol de solo lectura para lecturas, expón solo acciones de escritura con nombre y exige un veredicto allow de Guard antes de escribir.
¿Basta el SQL toolkit de LangChain?
Un rol de solo lectura es una buena base. No acota columnas por agente sin GRANTs a mano, devuelve filas o texto sin tipar y no te da reglas para las escrituras que querrás permitir más adelante.
¿Claix sustituye a LangChain?
No. Claix es una capa de recuperación controlada y de comprobación de escrituras que llamas desde LangChain, LangGraph, MCP o A2A. Tu framework de agentes se mantiene.
¿Claix ejecuta el INSERT, UPDATE o DELETE?
No. Retrieve usa un rol de solo lectura y Guard solo responde si el cambio propuesto está permitido. Tu código de LangChain lo ejecuta.
¿Qué bases de datos admite?
Cualquier base SQL, incluidos Postgres, MySQL y MariaDB, y entornos compatibles con Postgres como Supabase.
¿Puedo usar mi propia clave de LLM?
Sí. Con tu clave de OpenAI, Google, Anthropic o xAI, la tarifa de Claix baja de 0,10 € a 0,02 € por pregunta y pagas al proveedor directamente.
¿Puedo hospedarlo yo?
El self-hosting está disponible en el plan Enterprise.

Conecta Claix a tu agente de LangChain

Lecturas acotadas, escrituras comprobadas, trazas y pausa. Treinta llamadas correctas al mes gratis—suficiente para probar el flujo completo.