guardrails est un framework Python qui permet de créer des applications d'IA fiables en remplissant deux fonctions clés :
guardrails Hub est un ensemble de mesures prédéfinies de types spécifiques de risques (appelées « validateurs »). Plusieurs validateurs peuvent être combinés dans des gardes d'entrée et de sortie qui interceptent les entrées et les sorties des LLM. Visitez guardrails Hub pour voir la liste complète des validateurs et leur documentation.
pip install guardrails - ai
Téléchargez et configurez la CLI Hub guardrails .
pip install guardrails -ai
guardrails configure
Installez un garde-corps à partir guardrails Hub.
guardrails hub install hub:// guardrails /regex_match
Créez une garde à partir du garde-corps installé.
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 )
Sortir:
Validation failed for field with errors: Result must match (?d{3})?-? *d{3}-? *-?d{4}
Exécutez plusieurs guardrails au sein d’un garde. Tout d’abord, installez les guardrails nécessaires à partir du guardrails Hub.
guardrails hub install hub:// guardrails /competitor_check
guardrails hub install hub:// guardrails /toxic_language
Créez ensuite une garde à partir des guardrails installés.
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 )
Sortir:
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!
Passons en revue un exemple où nous demandons à un LLM de générer de faux noms d'animaux. Pour ce faire, nous allons créer un Pydantic BaseModel qui représente la structure de la sortie souhaitée.
from pydantic import BaseModel , Field
class Pet ( BaseModel ):
pet_type : str = Field ( description = "Species of pet" )
name : str = Field ( description = "a unique pet name" )
Maintenant, créez un garde à partir de la classe Pet
. Le Guard peut être utilisé pour appeler le LLM de manière à ce que la sortie soit formatée dans la classe Pet
. Sous le capot, cela se fait de deux manières :
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 )
Ceci imprime :
{
"pet_type": "dog",
"name": "Buddy
}
guardrails peut être configuré en tant que service autonome servi par Flask avec guardrails start
, vous permettant d'interagir avec lui via une API REST. Cette approche simplifie le développement et le déploiement d'applications basées sur guardrails .
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,
)
Pour les déploiements de production, nous vous recommandons d'utiliser Docker avec Gunicorn comme serveur WSGI pour améliorer les performances et l'évolutivité.
Vous pouvez nous contacter sur Discord ou Twitter.
Oui, guardrails peuvent être utilisés avec des LLM propriétaires et open source. Consultez ce guide pour savoir comment utiliser guardrails avec n'importe quel LLM.
Oui, vous pouvez créer vos propres validateurs et les contribuer au guardrails Hub. Consultez ce guide pour savoir comment créer vos propres validateurs.
guardrails peuvent être utilisés avec Python et JavaScript. Consultez la documentation sur la façon d'utiliser guardrails à partir de JavaScript. Nous travaillons sur l'ajout de la prise en charge d'autres langues. Si vous souhaitez contribuer aux guardrails , veuillez nous contacter sur Discord ou Twitter.
Nous apprécions les contributions aux guardrails !
Commencez par consulter les problèmes Github et consultez le Guide de contribution. N'hésitez pas à ouvrir un ticket ou à nous contacter si vous souhaitez contribuer au projet !