Alejandría

Busca en Alejandría

Herramientas

NeMo Guardrails

Añade controles programables a conversaciones y agentes con LLM.

01

En pocas palabras

Biblioteca abierta de NVIDIA para añadir controles programables a aplicaciones con LLM, usando configuración, flujos Colang y acciones personalizadas.

Qué problema resuelve

Entradas maliciosas, respuestas fuera de tema y comportamientos contrarios a las políticas definidas para una aplicación.

Cuándo utilizarlo

Asistentes empresariales y agentes con restricciones de conversación o herramientas. Ejemplo: mantener un asistente de soporte dentro de su ámbito y filtrar contenido sensible antes de responder.

02

De la idea a la práctica

Funcionamiento, ejemplos y decisiones para pasar al siguiente nivel.

Cómo funciona

Los rails se aplican a entradas, recuperación, diálogo, ejecución y salidas. La configuración y los flujos Colang definen el recorrido; acciones personalizadas pueden consultar servicios de moderación o reglas del negocio.

Ejemplo: un asistente de soporte acotado

Define los temas que puede resolver, qué hacer ante una solicitud fuera de ámbito y en qué situaciones debe derivar a una persona. Añade comprobaciones de datos sensibles antes de entregar la respuesta.

Evalúa solicitudes normales, ambiguas y adversariales. Comprueba tanto rechazos incorrectos como peticiones riesgosas aceptadas, y mide el tiempo adicional de respuesta.

Tipos de rails

Rail Cuándo actúa Ejemplo
Input Antes de enviar la petición al modelo Detectar jailbreak, datos personales o temas vetados
Dialog Durante la conversación Forzar un flujo: identificar al cliente antes de dar saldos
Retrieval Sobre los fragmentos recuperados en un RAG Descartar fragmentos irrelevantes o con instrucciones
Execution Al invocar acciones o herramientas Validar parámetros antes de llamar a una API
Output Antes de devolver la respuesta Comprobar alucinaciones, tono o fuga de datos

Estructura de una configuración

config/
├── config.yml     # modelo, rails activos e instrucciones
├── prompts.yml    # prompts de autocomprobación
└── rails.co       # flujos Colang
# config.yml
models:
  - type: main
    engine: openai
    model: gpt-4o-mini
rails:
  input:
    flows:
      - self check input
  output:
    flows:
      - self check output
# rails.co (Colang 1.0)
define user preguntar politica
  "¿Qué opinas del gobierno?"
  "¿A quién votarías?"

define bot rechazar politica
  "Solo puedo ayudarte con tus créditos, pagos y solicitudes."

define flow politica
  user preguntar politica
  bot rechazar politica

Uso desde Python

from nemoguardrails import RailsConfig, LLMRails

config = RailsConfig.from_path("./config")
rails = LLMRails(config)

respuesta = rails.generate(messages=[{"role": "user", "content": "¿Cuál es mi saldo?"}])
print(respuesta["content"])

También puede ejecutarse como servidor (nemoguardrails server) con una API compatible con chat completions, para colocarlo delante de una aplicación existente.

Coste y latencia

Cada rail basado en un LLM añade al menos una llamada adicional. Combina comprobaciones baratas y deterministas (expresiones regulares, Presidio para datos personales, listas de temas) con rails de modelo solo donde aportan. Mide la latencia añadida por rail y evalúa con conjuntos adversariales.

Criterios de implementación

Versiona políticas y casos de evaluación. Los controles basados en modelos pueden equivocarse; combina sus decisiones con validaciones deterministas y permisos efectivos en las herramientas. Mantén trazas de qué control intervino.

Continúa en las fuentes

Documentación oficial para verificar detalles y explorar más.