guardrails — это платформа Python, которая помогает создавать надежные приложения искусственного интеллекта, выполняя две ключевые функции:
guardrails Hub представляет собой набор предварительно созданных показателей конкретных типов рисков (называемых «валидаторами»). Несколько валидаторов можно объединить в средства защиты ввода и вывода, которые перехватывают входы и выходы LLM. Посетите guardrails Hub, чтобы просмотреть полный список валидаторов и их документацию.
pip install guardrails - ai
Загрузите и настройте интерфейс командной строки guardrails Hub.
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
Затем создайте Guard из установленных 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, которая будет представлять структуру желаемого результата.
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 и ознакомьтесь с Руководством для участников. Не стесняйтесь открыть вопрос или свяжитесь с нами, если вы хотите присоединиться к проекту!