
Guardrails v0.24.1
Guardrail programmabili per app di chat LLM: applica vincoli di input/output, blocca jailbreak e prompt injection, rileva le allucinazioni e maschera i dati sensibili.
Libreria NVIDIA NeMo Guardrails
ULTIMA RELEASE / VERSIONE DI SVILUPPO: Il branch develop tiene traccia dell'ultima versione in sviluppo. L'ultima versione rilasciata è la 0.24.1.
✨✨✨
📌 La documentazione ufficiale della libreria NeMo Guardrails è disponibile su docs.nvidia.com/nemo/guardrails.
✨✨✨
La libreria NVIDIA NeMo Guardrails è un toolkit open-source per aggiungere facilmente guardrail programmabili alle applicazioni conversazionali basate su LLM. I guardrail (o "rails" in breve) sono modi specifici di controllare l'output di un modello linguistico di grandi dimensioni, come non parlare di politica, rispondere in modo particolare a richieste specifiche dell'utente, seguire un percorso di dialogo predefinito, utilizzare uno stile linguistico particolare, estrarre dati strutturati e altro ancora.
Questo articolo introduce la libreria NeMo Guardrails e contiene una panoramica tecnica del sistema e la valutazione attuale.
Requisiti
Python 3.10, 3.11, 3.12 o 3.13.
Installazione
Per installare usando pip:
> pip install nemoguardrails
Per istruzioni più dettagliate, consulta la Guida all'installazione.
Panoramica
La libreria NeMo Guardrails consente agli sviluppatori che creano applicazioni basate su LLM di aggiungere guardrail programmabili tra il codice dell'applicazione e l'LLM.
I vantaggi principali dell'aggiunta di guardrail programmabili includono:
-
Creare applicazioni basate su LLM affidabili, sicure e protette: puoi definire rail per guidare e salvaguardare le conversazioni; puoi scegliere di definire il comportamento della tua applicazione basata su LLM su argomenti specifici e impedirle di intraprendere discussioni su argomenti indesiderati.
-
Connettere modelli, chain e altri servizi in modo sicuro: puoi connettere un LLM ad altri servizi (detti anche tool) in modo semplice e sicuro.
-
Dialogo controllabile: puoi guidare l'LLM a seguire percorsi conversazionali predefiniti, permettendoti di progettare l'interazione seguendo le best practice di conversation design e di applicare procedure operative standard (ad esempio, autenticazione, supporto).
Protezione dalle vulnerabilità degli LLM
La libreria NeMo Guardrails fornisce diversi meccanismi per proteggere un'applicazione di chat basata su LLM da vulnerabilità comuni degli LLM, come jailbreak e prompt injection. Di seguito è riportata una panoramica di esempio della protezione offerta da diverse configurazioni di guardrail per l'esempio ABC Bot incluso in questo repository. Per maggiori dettagli, consulta la pagina LLM Vulnerability Scanning.
Casi d'uso
Puoi utilizzare i guardrail programmabili in diversi tipi di casi d'uso:
- Question Answering su un insieme di documenti (noto anche come Retrieval Augmented Generation): applica il fact-checking e la moderazione dell'output.
- Assistenti specifici per dominio (noti anche come chatbot): assicurati che l'assistente rimanga in argomento e segua i flussi conversazionali progettati.
- Endpoint LLM: aggiungi guardrail al tuo LLM personalizzato per un'interazione con il cliente più sicura.
- LangChain Chains (opzionale): se utilizzi LangChain per qualsiasi caso d'uso, puoi aggiungere uno strato di guardrail attorno alle tue chain. Per abilitare questa integrazione, imposta la variabile d'ambiente
NEMOGUARDRAILS_LLM_FRAMEWORK=langchainoppure chiamaset_default_framework("langchain").
Utilizzo
Per aggiungere guardrail programmabili alla tua applicazione puoi utilizzare l'API Python o un server di guardrail (consulta la Guida al server per maggiori dettagli). L'utilizzo dell'API Python è simile all'utilizzo diretto dell'LLM. Chiamare lo strato di guardrail invece dell'LLM richiede solo modifiche minime al codice, e comporta due semplici passaggi:
- Caricare una configurazione di guardrail e creare un'istanza
LLMRails. - Effettuare le chiamate all'LLM utilizzando i metodi
generate/generate_async.
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!"}]
)
Output di esempio:
{"role": "assistant", "content": "Hi! How can I help you?"}
Il formato di input e output per il metodo generate è simile alla Chat Completions API di OpenAI.
Async API
La libreria NeMo Guardrails è un toolkit async-first poiché i meccanismi principali sono implementati utilizzando il modello asincrono di Python. I metodi pubblici hanno sia una versione sync che una async. Ad esempio: LLMRails.generate e LLMRails.generate_async.
LLM supportati
Puoi utilizzare NeMo Guardrails con più LLM come OpenAI GPT-3.5, GPT-4, LLaMa-2, Falcon, Vicuna o Mosaic. Per maggiori dettagli, consulta la sezione Supported LLM Models nella Guida alla configurazione.
Tipi di Guardrails
La libreria NeMo Guardrails supporta cinque tipi principali di guardrails: