From f9a0306c9e7c5985bdfa54be27287f98e705a100 Mon Sep 17 00:00:00 2001 From: Krista Pratico Date: Wed, 7 Jun 2023 14:31:16 -0700 Subject: [PATCH 1/2] add custom exception for content policy --- openai/api_requestor.py | 6 +++++- openai/error.py | 31 +++++++++++++++++++++++++++++++ 2 files changed, 36 insertions(+), 1 deletion(-) diff --git a/openai/api_requestor.py b/openai/api_requestor.py index cde4108bde..beaca4a8c7 100644 --- a/openai/api_requestor.py +++ b/openai/api_requestor.py @@ -362,7 +362,11 @@ def handle_error_response(self, rbody, rcode, resp, rheaders, stream_error=False error_data.get("message"), rbody, rcode, resp, rheaders ) elif rcode in [400, 404, 415]: - return error.InvalidRequestError( + error_type = error.InvalidRequestError + if error_data.get("code") == "content_filter": + error_type = error.ContentPolicyError + + return error_type( error_data.get("message"), error_data.get("param"), error_data.get("code"), diff --git a/openai/error.py b/openai/error.py index 2928ef6aa6..67538d4756 100644 --- a/openai/error.py +++ b/openai/error.py @@ -1,3 +1,4 @@ +import json import openai @@ -167,3 +168,33 @@ def __reduce__(self): self.sig_header, self.http_body, ) + + +class ContentPolicyError(InvalidRequestError): + + def __init__( + self, + message, + param, + code=None, + http_body=None, + http_status=None, + json_body=None, + headers=None, + ): + super().__init__( + message, + param, + code=code, + http_body=http_body, + http_status=http_status, + json_body=json_body, + headers=headers + ) + self.content_filter_result = json_body["error"]["innererror"]["content_filter_result"] + + + def __str__(self): + if self.json_body["error"].get("innererror"): + return f"{self._message}\nInner error: {json.dumps(self.json_body['error'].get('innererror'), indent=4)}" + return self._message From 1c000d9be6455c3505e6a25a34f40c97e6881bea Mon Sep 17 00:00:00 2001 From: Krista Pratico Date: Wed, 7 Jun 2023 14:46:41 -0700 Subject: [PATCH 2/2] innererror --- openai/error.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/openai/error.py b/openai/error.py index 67538d4756..22d5c0f5e1 100644 --- a/openai/error.py +++ b/openai/error.py @@ -191,10 +191,11 @@ def __init__( json_body=json_body, headers=headers ) - self.content_filter_result = json_body["error"]["innererror"]["content_filter_result"] + self.innererror = self.json_body["error"].get("innererror", {}) + self.content_filter_result = self.innererror.get("content_filter_result") def __str__(self): - if self.json_body["error"].get("innererror"): - return f"{self._message}\nInner error: {json.dumps(self.json_body['error'].get('innererror'), indent=4)}" + if self.innererror: + return f"{self._message}\nInner error: {json.dumps(self.innererror, indent=4)}" return self._message