NeMo Guardrails este un toolkit open-source de la NVIDIA care adaugă reguli programabile (rails) unei aplicații LLM. O configurație conține un config.yml (modele, rails active, setări), fișiere .co în limbajul Colang și, opțional, config.py și actions.py cu cod propriu.
Documentația descrie cinci tipuri de rails: input (pe mesajul utilizatorului; îl pot respinge sau modifica, de exemplu mascarea datelor sensibile), dialog (decid dacă se execută o acțiune, se apelează modelul sau se dă un răspuns predefinit), retrieval (pe fragmentele aduse în RAG), execution (pe intrările și ieșirile acțiunilor sau uneltelor) și output (pe răspunsul modelului).
Sunt suportate Colang 1.0 și Colang 2.0; 1.0 este implicită. Biblioteca este asincronă în interior, iar metodele publice au variantă sincronă și asincronă (generate / generate_async), cu un format de mesaje asemănător Chat Completions.
Concepte cheie și caracteristici
| Concept / Parametru | Descriere practică |
|---|---|
config.yml |
Modelele (models), rails active (rails.input.flows, rails.output.flows) și configurația lor. |
*.co |
Fișiere Colang: define user ... (exemple de mesaje), define bot ... (răspunsuri), define flow (fluxuri). |
RailsConfig.from_path("./config") |
Încarcă o configurație din director. |
LLMRails(config) |
Obiectul care aplică rails în jurul modelului. |
rails.generate(messages=[...]) / generate_async |
Generează un răspuns trecut prin rails. |
self check input / self check output |
Rails predefinite în care un LLM verifică mesajul sau răspunsul după o politică scrisă de tine. |
Exemple practice și scenarii reale
Exemplul 1: Inițializare și apel
from nemoguardrails import LLMRails, RailsConfig
config = RailsConfig.from_path("./config")
rails = LLMRails(config)
raspuns = rails.generate(messages=[{"role": "user", "content": "Bună!"}])
Exemplul 2: Rails de intrare și de ieșire în config.yml
Fragment după exemplul din README; numele fluxurilor sunt cele predefinite în bibliotecă.
rails:
input:
flows:
- check jailbreak
- mask sensitive data on input
output:
flows:
- self check facts
- self check hallucination
config:
sensitive_data_detection:
input:
entities:
- PERSON
- EMAIL_ADDRESS
Greșeli frecvente și capcane
- Amesteci sintaxa Colang 1.0 cu cea 2.0 în aceeași configurație. Alege o versiune; exemplele
define user/define flowsunt Colang 1.0. - Te bazezi doar pe rails de dialog pentru securitate. Ele ghidează conversația; pentru date sensibile și răspunsuri periculoase adaugă rails de intrare și de ieșire.
- Uiți costul rails-urilor de tip self check. Fiecare este un apel suplimentar la un LLM și adaugă latență.