guardrails 는 두 가지 주요 기능을 수행하여 안정적인 AI 애플리케이션을 구축하는 데 도움이 되는 Python 프레임워크입니다.
guardrails 허브는 특정 위험 유형('검증기'라고 함)에 대해 사전 구축된 측정값 모음입니다. 여러 유효성 검사기를 LLM의 입력 및 출력을 가로채는 입력 및 출력 가드로 결합할 수 있습니다. 유효성 검사기의 전체 목록과 관련 문서를 보려면 guardrails 허브를 방문하세요.
pip install guardrails - ai
guardrails Hub CLI를 다운로드하고 구성합니다.
pip install guardrails -ai
guardrails configure
guardrails 허브에서 가드레일을 설치합니다.
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}
Guard 내에서 여러 guardrails 실행합니다. 먼저 guardrails 허브에서 필요한 guardrails 설치하세요.
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" )
이제 Pet
클래스에서 Guard를 만듭니다. Guard는 출력이 Pet
클래스로 형식화되는 방식으로 LLM을 호출하는 데 사용될 수 있습니다. 내부적으로는 다음 두 가지 방법 중 하나로 이 작업이 수행됩니다.
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 guardrails start
사용하여 Flask에서 제공하는 독립 실행형 서비스로 설정하여 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,
)
프로덕션 배포의 경우 향상된 성능과 확장성을 위해 Gunicorn과 함께 Docker를 WSGI 서버로 사용하는 것이 좋습니다.
Discord나 Twitter를 통해 저희에게 연락하실 수 있습니다.
예, guardrails 독점 및 오픈 소스 LLM과 함께 사용할 수 있습니다. LLM에서 guardrails 사용하는 방법에 대한 이 가이드를 확인하세요.
예, 자체 유효성 검사기를 생성하여 guardrails 허브에 기여할 수 있습니다. 자신만의 유효성 검사기를 만드는 방법에 대한 이 가이드를 확인하세요.
guardrails Python 및 JavaScript와 함께 사용할 수 있습니다. JavaScript에서 guardrails 사용하는 방법에 대한 문서를 확인하세요. 우리는 다른 언어에 대한 지원을 추가하기 위해 노력하고 있습니다. guardrails 에 기여하고 싶다면 Discord나 Twitter로 연락해 주세요.
우리는 guardrails 에 대한 기여를 환영합니다!
Github 문제를 확인하고 기여 가이드를 확인하여 시작하세요. 자유롭게 이슈를 열거나 프로젝트에 추가하고 싶다면 연락하세요!