NeMo Guardrails (NVIDIA) și limbajul Colang în LLMOps, Evaluare & Securitate AI

Securitate, Guardrails & Red Teaming Nivel: avansat (nemoguardrails 0.24)

NeMo Guardrails este un toolkit open-source NVIDIA pentru reguli programabile în jurul unui LLM: rails de intrare, de dialog, de regăsire, de execuție și de ieșire, definite în YAML și Colang.

Configurare & comandă
# config/rails.co (Colang 1.0, versiunea implicită)
define user ask about politics
  "Ce părere ai despre alegeri?"
  "Cu cine ar trebui să votez?"

define flow
  user ask about politics
  bot refuse political discussion

define bot refuse political discussion
  "Sunt un asistent tehnic și nu comentez subiecte politice."

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 flow sunt 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ță.

Noțiuni și module înrudite