
Salvaguardas programables para aplicaciones de chat con LLM: aplica reglas de entrada/salida, bloquea jailbreaks e inyecciones de prompt, detecta alucinaciones y enmascara datos sensibles.
ÚLTIMA VERSIÓN / VERSIÓN DE DESARROLLO: La rama develop sigue lo último en desarrollo. La última versión publicada es la 0.24.1.
✨✨✨
📌 La documentación oficial de la biblioteca NeMo Guardrails está disponible en docs.nvidia.com/nemo/guardrails.
✨✨✨
La biblioteca NVIDIA NeMo Guardrails es un conjunto de herramientas de código abierto para añadir fácilmente guardrails programables a aplicaciones conversacionales basadas en LLM. Los guardrails (o "rails" para abreviar) son formas específicas de controlar la salida de un modelo de lenguaje grande, como no hablar de política, responder de una manera particular a solicitudes específicas del usuario, seguir una ruta de diálogo predefinida, usar un estilo de lenguaje particular, extraer datos estructurados y más.
Este artículo presenta la biblioteca NeMo Guardrails y contiene una descripción técnica del sistema y la evaluación actual.
Python 3.10, 3.11, 3.12 o 3.13.
Para instalar usando pip:```bash
pip install nemoguardrails
Para obtener instrucciones más detalladas, consulte la [Guía de instalación](https://docs.nvidia.com/nemo/guardrails/get-started/installation-guide).
## Descripción general
<!-- start-documentation-reuse -->
La biblioteca NeMo Guardrails permite a los desarrolladores que crean aplicaciones basadas en LLM añadir **guardrails programables** entre el código de la aplicación y el LLM.
<div align="center">
<img src="https://raw.githubusercontent.com/NVIDIA-NeMo/Guardrails/develop/docs/_static/images/programmable_guardrails.png" width="75%" alt="Programmable Guardrails">
</div>
Los beneficios clave de añadir *guardrails programables* incluyen:
- **Crear aplicaciones basadas en LLM confiables, seguras y protegidas:** puede definir rails para guiar y salvaguardar las conversaciones; puede optar por definir el comportamiento de su aplicación basada en LLM sobre temas específicos y evitar que participe en discusiones sobre temas no deseados.
- **Conectar modelos, cadenas y otros servicios de forma segura:** puede conectar un LLM a otros servicios (también conocidos como herramientas) de forma fluida y segura.
- **Diálogo controlable**: puede dirigir el LLM para que siga rutas conversacionales predefinidas, lo que le permite diseñar la interacción siguiendo las mejores prácticas de diseño de conversaciones y aplicar procedimientos operativos estándar (por ejemplo, autenticación, soporte).
<!-- end-documentation-reuse -->
### Protección contra vulnerabilidades de LLM
La biblioteca NeMo Guardrails proporciona varios mecanismos para proteger una aplicación de chat impulsada por LLM contra vulnerabilidades comunes de LLM, como jailbreaks e inyecciones de prompts. A continuación se muestra una descripción general de ejemplo de la protección ofrecida por diferentes configuraciones de guardrails para el ejemplo [ABC Bot](https://github.com/nvidia-nemo/guardrails/blob/develop/examples/bots/abc) incluido en este repositorio. Para obtener más detalles, consulte la página [LLM Vulnerability Scanning](https://docs.nvidia.com/nemo/guardrails/evaluation/llm-vulnerability-scanning.html).
<div align="center">
<img src="https://raw.githubusercontent.com/NVIDIA-NeMo/Guardrails/develop/docs/_static/images/abc-llm-vulnerability-scan-results.png" width="500">
</div>
### Casos de uso
Puede utilizar guardrails programables en diferentes tipos de casos de uso:
1. **Respuesta a preguntas** sobre un conjunto de documentos (también conocido como Generación Aumentada por Recuperación): Aplicar verificación de hechos y moderación de la salida.
2. **Asistentes específicos de dominio** (también conocidos como chatbots): Asegurar que el asistente se mantenga en el tema y siga los flujos conversacionales diseñados.
3. **Endpoints de LLM**: Añadir guardrails a su LLM personalizado para una interacción más segura con el cliente.
4. **Cadenas de LangChain** (opcional): Si utiliza LangChain para cualquier caso de uso, puede añadir una capa de guardrails alrededor de sus cadenas. Para habilitar esta integración, establezca la variable de entorno `NEMOGUARDRAILS_LLM_FRAMEWORK=langchain` o llame a `set_default_framework("langchain")`.
### Uso
Para añadir guardrails programables a su aplicación puede utilizar la API de Python o un servidor de guardrails (consulte la [Guía del servidor](https://docs.nvidia.com/nemo/guardrails/get-started/integrate-into-application) para obtener más detalles). Usar la API de Python es similar a usar el LLM directamente. Llamar a la capa de guardrails en lugar del LLM requiere solo cambios mínimos en el código base, e implica dos pasos sencillos:
1. Cargar una configuración de guardrails y crear una instancia de `LLMRails`.
2. Realizar las llamadas al LLM utilizando los métodos `generate`/`generate_async`.```python
from nemoguardrails import LLMRails, RailsConfig
# Load a guardrails configuration from the specified path.
config = RailsConfig.from_path("PATH/TO/CONFIG")
rails = LLMRails(config)
completion = rails.generate(
messages=[{"role": "user", "content": "Hello world!"}]
)
Salida de ejemplo:```json {"role": "assistant", "content": "Hi! How can I help you?"}
El formato de entrada y salida para el método `generate` es similar a la [API de Chat Completions](https://platform.openai.com/docs/guides/gpt/chat-completions-api) de OpenAI.
#### API asíncrona
La librería NeMo Guardrails es un toolkit async-first, ya que la mecánica principal está implementada utilizando el modelo asíncrono de Python. Los métodos públicos tienen tanto una versión síncrona como una asíncrona. Por ejemplo: `LLMRails.generate` y `LLMRails.generate_async`.
### LLMs compatibles
Puedes usar NeMo Guardrails con múltiples LLMs como OpenAI GPT-3.5, GPT-4, LLaMa-2, Falcon, Vicuna o Mosaic. Para más detalles, consulta la sección [Modelos LLM compatibles](https://docs.nvidia.com/nemo/guardrails/about-nemo-guardrails-library/supported-llms) en la Guía de configuración.
### Tipos de guardrails