Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
26 changes: 16 additions & 10 deletions guardrails/api_client.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,9 @@
ValidationOutcome as IValidationOutcome,
)

from guardrails_api_client.exceptions import BadRequestException
from guardrails.errors import ValidationError

from guardrails.logger import logger


Expand Down Expand Up @@ -58,16 +61,19 @@ def validate(
payload: ValidatePayload,
openai_api_key: Optional[str] = None,
):
_openai_api_key = (
openai_api_key
if openai_api_key is not None
else os.environ.get("OPENAI_API_KEY")
)
return self._validate_api.validate(
guard_name=guard.name,
validate_payload=payload,
x_openai_api_key=_openai_api_key,
)
try:
_openai_api_key = (
openai_api_key
if openai_api_key is not None
else os.environ.get("OPENAI_API_KEY")
)
return self._validate_api.validate(
guard_name=guard.name,
validate_payload=payload,
x_openai_api_key=_openai_api_key,
)
except BadRequestException as e:
raise ValidationError(f"{e.body}")

def stream_validate(
self,
Expand Down
18 changes: 6 additions & 12 deletions guardrails/guard.py
Original file line number Diff line number Diff line change
Expand Up @@ -91,10 +91,9 @@
json_function_calling_tool as json_function_calling_tool_util,
output_format_json_schema as output_format_json_schema,
)
from guardrails.decorators.experimental import experimental

from guardrails.settings import settings
from guardrails.errors import ValidationError
from guardrails.decorators.experimental import experimental


class Guard(IGuard, Generic[OT]):
Expand Down Expand Up @@ -1175,16 +1174,11 @@ def upsert_guard(self):

def _single_server_call(self, *, payload: Dict[str, Any]) -> ValidationOutcome[OT]:
if settings.use_server and self._api_client:
try:
validation_output: IValidationOutcome = self._api_client.validate(
guard=self, # type: ignore
payload=ValidatePayload.from_dict(payload), # type: ignore
openai_api_key=get_call_kwarg("api_key"),
)
except Exception as e:
if e.status and e.status == 400:
raise ValidationError(f"{e.body}")
raise e
validation_output: IValidationOutcome = self._api_client.validate(
guard=self, # type: ignore
payload=ValidatePayload.from_dict(payload), # type: ignore
openai_api_key=get_call_kwarg("api_key"),
)
if not validation_output:
return ValidationOutcome[OT](
call_id="0", # type: ignore
Expand Down