guardrails เป็นเฟรมเวิร์ก Python ที่ช่วยสร้างแอปพลิเคชัน AI ที่เชื่อถือได้โดยทำหน้าที่หลักสองประการ:
guardrails Hub คือชุดของมาตรการที่สร้างไว้ล่วงหน้าสำหรับประเภทความเสี่ยงเฉพาะ (เรียกว่า 'เครื่องมือตรวจสอบ') เครื่องมือตรวจสอบความถูกต้องหลายตัวสามารถรวมเข้าด้วยกันเป็น Input และ Output Guards ที่สกัดกั้นอินพุตและเอาต์พุตของ LLM ไปที่ guardrails Hub เพื่อดูรายชื่อผู้ตรวจสอบทั้งหมดและเอกสารประกอบ
pip install guardrails - ai
ดาวน์โหลดและกำหนดค่า guardrails Hub CLI
pip install guardrails -ai
guardrails configure
ติดตั้งราวกั้นจาก guardrails Hub
guardrails hub install hub:// guardrails /regex_match
สร้างยามจากราวกั้นที่ติดตั้งไว้
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 )
เอาท์พุท:
Validation failed for field with errors: Result must match (?d{3})?-? *d{3}-? *-?d{4}
ใช้ guardrails หลายอันภายในการ์ดหนึ่งตัว ขั้นแรก ติดตั้ง guardrails ที่จำเป็นจาก guardrails Hub
guardrails hub install hub:// guardrails /competitor_check
guardrails hub install hub:// guardrails /toxic_language
จากนั้นสร้างตัวป้องกันจาก 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 )
เอาท์พุท:
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!
มาดูตัวอย่างที่เราขอให้ LLM สร้างชื่อสัตว์เลี้ยงปลอมกัน ในการดำเนินการนี้ เราจะสร้าง Pydantic BaseModel ที่แสดงถึงโครงสร้างของเอาต์พุตที่เราต้องการ
from pydantic import BaseModel , Field
class Pet ( BaseModel ):
pet_type : str = Field ( description = "Species of pet" )
name : str = Field ( description = "a unique pet name" )
ตอนนี้ สร้าง Guard จากคลาส Pet
Guard สามารถใช้เพื่อเรียก LLM ในลักษณะเพื่อให้เอาต์พุตถูกจัดรูปแบบเป็นคลาส Pet
ภายใต้ประทุน ทำได้โดยใช้วิธีใดวิธีหนึ่งจากสองวิธี:
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 )
พิมพ์นี้:
{
"pet_type": "dog",
"name": "Buddy
}
คุณสามารถตั้งค่า guardrails เป็นบริการแบบสแตนด์อโลนที่ให้บริการโดย Flask โดยมี guardrails start
ช่วยให้คุณสามารถโต้ตอบกับบริการดังกล่าวผ่าน REST API แนวทางนี้ช่วยลดความยุ่งยากในการพัฒนาและการปรับใช้แอปพลิเคชันที่ขับเคลื่อนด้วย 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,
)
สำหรับการใช้งานจริง เราขอแนะนำให้ใช้ Docker กับ Gunicorn เป็นเซิร์ฟเวอร์ WSGI เพื่อปรับปรุงประสิทธิภาพและความสามารถในการปรับขนาด
คุณสามารถติดต่อเราได้ที่ Discord หรือ Twitter
ใช่ guardrails สามารถใช้กับ LLM ที่เป็นกรรมสิทธิ์และโอเพ่นซอร์สได้ ลองอ่านคู่มือนี้เกี่ยวกับวิธีใช้ guardrails กับ LLM
ใช่ คุณสามารถสร้างเครื่องมือตรวจสอบความถูกต้องของคุณเองและสนับสนุนให้กับ guardrails Hub ได้ ดูคู่มือนี้เกี่ยวกับวิธีสร้างเครื่องมือตรวจสอบความถูกต้องของคุณเอง
guardrails สามารถใช้กับ Python และ JavaScript ตรวจสอบเอกสารเกี่ยวกับวิธีใช้ guardrails จาก JavaScript เรากำลังดำเนินการเพื่อเพิ่มการรองรับภาษาอื่นๆ หากคุณต้องการมีส่วนร่วมใน guardrails โปรดติดต่อเราทาง Discord หรือ Twitter
เรายินดีต้อนรับการมีส่วนร่วมใน guardrails !
เริ่มต้นด้วยการตรวจสอบปัญหา Github และดูคู่มือการสนับสนุน อย่าลังเลที่จะเปิดประเด็นหรือติดต่อเราหากคุณต้องการเพิ่มในโครงการ!