guardrails ist ein Python-Framework, das beim Erstellen zuverlässiger KI-Anwendungen hilft, indem es zwei Schlüsselfunktionen ausführt:
guardrails Hub ist eine Sammlung vorgefertigter Maßnahmen für bestimmte Arten von Risiken (sogenannte „Validatoren“). Mehrere Validatoren können zu Input- und Output Guards zusammengefasst werden, die die Ein- und Ausgänge von LLMs abfangen. Besuchen Sie guardrails Hub, um die vollständige Liste der Validatoren und deren Dokumentation anzuzeigen.
pip install guardrails - ai
Laden Sie die guardrails Hub-CLI herunter und konfigurieren Sie sie.
pip install guardrails -ai
guardrails configure
Installieren Sie eine Leitplanke vom guardrails -Hub.
guardrails hub install hub:// guardrails /regex_match
Erstellen Sie einen Schutz aus der installierten Leitplanke.
from guardrails import Guard , OnFailAction
from guardrails . hub import RegexMatch
guard = Guard (). use (
RegexMatch , regex = "(?d{3})?-? *d{3}-? *-?d{4}" , on_fail = OnFailAction . EXCEPTION
)
guard . validate ( "123-456-7890" ) # Guardrail passes
try :
guard . validate ( "1234-789-0000" ) # Guardrail fails
except Exception as e :
print ( e )
Ausgabe:
Validation failed for field with errors: Result must match (?d{3})?-? *d{3}-? *-?d{4}
Führen Sie mehrere guardrails innerhalb eines Guards aus. Installieren Sie zunächst die erforderlichen guardrails vom guardrails Hub.
guardrails hub install hub:// guardrails /competitor_check
guardrails hub install hub:// guardrails /toxic_language
Erstellen Sie dann einen Guard aus den installierten guardrails .
from guardrails import Guard , OnFailAction
from guardrails . hub import CompetitorCheck , ToxicLanguage
guard = Guard (). use_many (
CompetitorCheck ([ "Apple" , "Microsoft" , "Google" ], on_fail = OnFailAction . EXCEPTION ),
ToxicLanguage ( threshold = 0.5 , validation_method = "sentence" , on_fail = OnFailAction . EXCEPTION )
)
guard . validate (
"""An apple a day keeps a doctor away.
This is good advice for keeping your health."""
) # Both the guardrails pass
try :
guard . validate (
"""Shut the hell up! Apple just released a new iPhone."""
) # Both the guardrails fail
except Exception as e :
print ( e )
Ausgabe:
Validation failed for field with errors: Found the following competitors: [['Apple']]. Please avoid naming those competitors next time, The following sentences in your response were found to be toxic:
- Shut the hell up!
Sehen wir uns ein Beispiel an, in dem wir einen LLM bitten, gefälschte Kosenamen zu generieren. Dazu erstellen wir ein Pydantic BaseModel, das die Struktur der gewünschten Ausgabe darstellt.
from pydantic import BaseModel , Field
class Pet ( BaseModel ):
pet_type : str = Field ( description = "Species of pet" )
name : str = Field ( description = "a unique pet name" )
Erstellen Sie nun einen Wächter aus der Pet
-Klasse. Der Guard kann verwendet werden, um das LLM so aufzurufen, dass die Ausgabe für die Pet
-Klasse formatiert wird. Unter der Haube geschieht dies mit einer von zwei Methoden:
from guardrails import Guard
import openai
prompt = """
What kind of pet should I get and what should I name it?
${gr.complete_json_suffix_v2}
"""
guard = Guard . for_pydantic ( output_class = Pet , prompt = prompt )
raw_output , validated_output , * rest = guard (
llm_api = openai . completions . create ,
engine = "gpt-3.5-turbo-instruct"
)
print ( validated_output )
Dies druckt:
{
"pet_type": "dog",
"name": "Buddy
}
guardrails können als eigenständiger Dienst eingerichtet werden, der von Flask mit guardrails start
bereitgestellt wird, sodass Sie über eine REST-API damit interagieren können. Dieser Ansatz vereinfacht die Entwicklung und Bereitstellung von guardrails -basierten Anwendungen.
pip install " guardrails -ai"
guardrails configure
guardrails create --validators=hub:// guardrails /two_words --name=two-word-guard
guardrails start --config=./config.py
# with the guardrails client
import guardrails as gr
gr.settings.use_server = True
guard = gr.Guard(name='two-word-guard')
guard.validate('this is more than two words')
# or with the openai sdk
import openai
openai.base_url = "http://localhost:8000/guards/two-word-guard/openai/v1/"
os.environ["OPENAI_API_KEY"] = "youropenaikey"
messages = [
{
"role": "user",
"content": "tell me about an apple with 3 words exactly",
},
]
completion = openai.chat.completions.create(
model="gpt-4o-mini",
messages=messages,
)
Für Produktionsbereitstellungen empfehlen wir die Verwendung von Docker mit Gunicorn als WSGI-Server für verbesserte Leistung und Skalierbarkeit.
Sie können uns auf Discord oder Twitter erreichen.
Ja, guardrails können mit proprietären und Open-Source-LLMs verwendet werden. Sehen Sie sich diese Anleitung zur Verwendung guardrails mit jedem LLM an.
Ja, Sie können Ihre eigenen Validatoren erstellen und diese zum guardrails Hub beitragen. Sehen Sie sich diese Anleitung an, um zu erfahren, wie Sie Ihre eigenen Validatoren erstellen.
guardrails können mit Python und JavaScript verwendet werden. Sehen Sie sich die Dokumentation zur Verwendung guardrails in JavaScript an. Wir arbeiten daran, Unterstützung für andere Sprachen hinzuzufügen. Wenn Sie zu guardrails beitragen möchten, wenden Sie sich bitte über Discord oder Twitter an uns.
Wir freuen uns über Beiträge zu guardrails !
Schauen Sie sich zunächst Github-Probleme an und schauen Sie sich den Contributing Guide an. Fühlen Sie sich frei, ein Problem zu eröffnen oder uns zu kontaktieren, wenn Sie etwas zum Projekt hinzufügen möchten!