23 lines
756 B
Python
23 lines
756 B
Python
|
|
from guardrails.integrations.langchain.base_runnable import BaseRunnable
|
||
|
|
from guardrails.validator_base import FailResult, Validator
|
||
|
|
from guardrails.errors import ValidationError
|
||
|
|
|
||
|
|
|
||
|
|
class ValidatorRunnable(BaseRunnable):
|
||
|
|
validator: Validator
|
||
|
|
|
||
|
|
def __init__(self, validator: Validator):
|
||
|
|
self.name = validator.rail_alias
|
||
|
|
self.validator = validator
|
||
|
|
|
||
|
|
def _validate(self, input: str) -> str:
|
||
|
|
response = self.validator.validate(input, self.validator._metadata)
|
||
|
|
if isinstance(response, FailResult):
|
||
|
|
raise ValidationError(
|
||
|
|
(
|
||
|
|
"The response from the LLM failed validation!"
|
||
|
|
f" {response.error_message}"
|
||
|
|
)
|
||
|
|
)
|
||
|
|
return input
|