Documentation Index
Fetch the complete documentation index at: https://snowglobe.so/docs/llms.txt
Use this file to discover all available pages before exploring further.
Summary
This guide will help you migrate your codebase from 0.8.X to 0.9.0.
Installation
pip install --upgrade guardrails-ai
List of backwards incompatible changes
- Guard.use_many has been removed and its functionality added to Guard.use.
- Guard.use no longer support specifying uninstantiated validators with its arguments as a tuple. You must now pass an instantiated validator class.
- Calling Guard.use with the same
on value multiple times will overwrite the validators applied to the property specified by on.
- Fetching a Guard by supplying the
name keyword argument in the constructor is no Longer Supported. Use Guard.load instead.
- Guard.fetch_guard has been removed. Use Guard.load instead.
- Guard.upsert_guard has been removed. Use Guard.save instead.
New Guard.use Contract
Guard.use now supports specifying multiple validators. Use this pattern instead of the removed Guard.use_many:
# ❌ No Longer Supported
Guard().use_many(DetectPII("pii"), ToxicLanguage())
# ✅ New Pattern
Guard().use(DetectPII("pii"), ToxicLanguage())
Guard.use no longer supports specifying uninstantiated validators with its arguments as a tuple.
# ❌ No Longer Supported
Guard().use(DetectPII, "pii")
# ✅ New Pattern
Guard().use(DetectPII("pii"))
Calling Guard.use with the same on value multiple times will overwrite the validators applied to the property specified by on.
# ❌ No Longer Supported
Guard.use(
DetectPII("pii")
).use(
ToxicLanguage()
)
# ✅ New Pattern
Guard.use(
DetectPII("pii"),
ToxicLanguage()
)
# ✅ Still Supported: Chaining multiple use calls for different `on` values
Guard.use(
DetectPII("pii"),
ToxicLanguage(),
on="output"
).use(
UnusualPrompt(),
on="messages"
)
Loading a Guard from the Server
Retrieving a Guard from your guardrails-api server is now facilitated through the Guard.load method.
# ❌ No Longer Supported
my_guard = Guard(name="my-guard")
# ❌ No Longer Supported
my_guard = Guard.fetch_guard("my-guard")
# ✅ New Pattern
my_guard = Guard.load(
"my-guard",
api_key="my-api-key", # Optional
base_url="http://localhost:8000" # Optional
)
Persiting a Guard to the Server
In order to persist a Guard configured on your client to your postgres database backed server, use the Guard.save method.
# ❌ No Longer Supported: Autosave on init or use
my_guard = Guard(name="my-guard").use(DetectPII())
# ❌ No Longer Supported: upsert_guard
my_guard.upsert_guard()
# ✅ New Pattern
my_guard.save()
Improvements
Guard.get_validators
Guard.get_validators allows you to retrieve the list of validators applied to a specific property.
You can utilize this along with Guard.use to make additive updates to your Guard.
my_guard = Guard.load("my_guard")
input_validators = my_guard.get_validators(on="messages")
input_validators.append(DetectPII("pii"))
my_guard.use(*input_validators, on="messages")
my_guard.save()