guardrails adalah kerangka kerja Python yang membantu membangun aplikasi AI yang andal dengan menjalankan dua fungsi utama:
guardrails Hub adalah kumpulan tindakan yang telah dibuat sebelumnya untuk jenis risiko tertentu (disebut 'validator'). Beberapa validator dapat digabungkan menjadi Penjaga Input dan Output yang mencegat input dan output LLM. Kunjungi Hub guardrails untuk melihat daftar lengkap validator dan dokumentasinya.
pip install guardrails - ai
Unduh dan konfigurasikan Hub CLI guardrails .
pip install guardrails -ai
guardrails configure
Pasang pagar pembatas dari Hub guardrails .
guardrails hub install hub:// guardrails /regex_match
Buat Penjaga dari pagar pembatas yang terpasang.
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 )
Keluaran:
Validation failed for field with errors: Result must match (?d{3})?-? *d{3}-? *-?d{4}
Jalankan beberapa guardrails dalam satu Penjaga. Pertama, pasang guardrails yang diperlukan dari Hub guardrails .
guardrails hub install hub:// guardrails /competitor_check
guardrails hub install hub:// guardrails /toxic_language
Kemudian, buat Penjaga dari guardrails yang terpasang.
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 )
Keluaran:
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!
Mari kita lihat contoh di mana kita meminta LLM untuk membuat nama hewan peliharaan palsu. Untuk melakukan ini, kita akan membuat Pydantic BaseModel yang mewakili struktur output yang kita inginkan.
from pydantic import BaseModel , Field
class Pet ( BaseModel ):
pet_type : str = Field ( description = "Species of pet" )
name : str = Field ( description = "a unique pet name" )
Sekarang, buat Penjaga dari kelas Pet
. Penjaga dapat digunakan untuk memanggil LLM sedemikian rupa sehingga outputnya diformat ke kelas Pet
. Secara sederhana, hal ini dilakukan dengan salah satu dari dua metode berikut:
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 )
Ini mencetak:
{
"pet_type": "dog",
"name": "Buddy
}
guardrails dapat diatur sebagai layanan mandiri yang dilayani oleh Flask dengan guardrails start
, memungkinkan Anda berinteraksi dengannya melalui REST API. Pendekatan ini menyederhanakan pengembangan dan penerapan aplikasi yang didukung 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,
)
Untuk penerapan produksi, kami merekomendasikan penggunaan Docker dengan Gunicorn sebagai server WSGI untuk meningkatkan kinerja dan skalabilitas.
Anda dapat menghubungi kami di Discord atau Twitter.
Ya, guardrails dapat digunakan dengan LLM berpemilik dan sumber terbuka. Lihat panduan ini tentang cara menggunakan guardrails dengan LLM apa pun.
Ya, Anda dapat membuat validator Anda sendiri dan menyumbangkannya ke Hub guardrails . Lihat panduan ini tentang cara membuat validator Anda sendiri.
guardrails dapat digunakan dengan Python dan JavaScript. Lihat dokumen tentang cara menggunakan guardrails dari JavaScript. Kami sedang berupaya menambahkan dukungan untuk bahasa lain. Jika Anda ingin berkontribusi pada guardrails , silakan hubungi kami di Discord atau Twitter.
Kami menyambut kontribusi untuk guardrails !
Mulailah dengan memeriksa masalah Github dan memeriksa Panduan Berkontribusi. Jangan ragu untuk membuka terbitan, atau hubungi kami jika Anda ingin menambahkan ke proyek!