- Notifications
You must be signed in to change notification settings - Fork 4.4k
Open
Description
Confirm this is a feature request for the Python library and not the underlying OpenAI API.
- This is a feature request for the Python library
Describe the feature or improvement you're requesting
When trying to use the openai-python library in an environment that requires pickling, like Ray, OpenAI exceptions cause failures like:
7m �[39;49;00m�[33m"traceback: Traceback (most recent call last):"�[39;49;00m,�[37m�[39;49;00m �[37m �[39;49;00m�[33m" File \"/opt/conda/lib/python3.10/site-packages/ray/exceptions.py\", line 51, in from_ray_exception"�[39;49;00m,�[37m�[39;49;00m �[37m �[39;49;00m�[33m" return pickle.loads(ray_exception.serialized_exception)"�[39;49;00m,�[37m�[39;49;00m �[37m �[39;49;00m�[33m" File \"/opt/conda/lib/python3.10/site-packages/openai/_exceptions.py\", line 101, in __init__"�[39;49;00m,�[37m�[39;49;00m �[37m �[39;49;00m�[33m" super().__init__(message=\"Request timed out.\", request=request)"�[39;49;00m,�[37m�[39;49;00m �[37m �[39;49;00m�[33m"TypeError: super(type, obj): obj must be an instance or subtype of type"�[39;49;00m,�[37m�[39;49;00m �[37m �[39;49;00m�[33m""�[39;49;00m,�[37m�[39;49;00m �[37m �[39;49;00m�[33m"The above exception was the direct cause of the following exception:"�[39;49;00m,�[37m�[39;49;00m �[37m �[39;49;00m�[33m""�[39;49;00m,�[37m�[39;49;00m �[37m �[39;49;00m�[33m"Traceback (most recent call last):"�[39;49;00m,�[37m�[39;49;00m �[37m �[39;49;00m�[33m" File \"/opt/conda/lib/python3.10/site-packages/ray/_private/serialization.py\", line 460, in deserialize_objects"�[39;49;00m,�[37m�[39;49;00m �[37m �[39;49;00m�[33m" obj = self._deserialize_object(data, metadata, object_ref)"�[39;49;00m,�[37m�[39;49;00m �[37m �[39;49;00m�[33m" File \"/opt/conda/lib/python3.10/site-packages/ray/_private/serialization.py\", line 342, in _deserialize_object"�[39;49;00m,�[37m�[39;49;00m �[37m �[39;49;00m�[33m" return RayError.from_bytes(obj)"�[39;49;00m,�[37m�[39;49;00m �[37m �[39;49;00m�[33m" File \"/opt/conda/lib/python3.10/site-packages/ray/exceptions.py\", line 45, in from_bytes"�[39;49;00m,�[37m�[39;49;00m �[37m �[39;49;00m�[33m" return RayError.from_ray_exception(ray_exception)"�[39;49;00m,�[37m�[39;49;00m �[37m �[39;49;00m�[33m" File \"/opt/conda/lib/python3.10/site-packages/ray/exceptions.py\", line 54, in from_ray_exception"�[39;49;00m,�[37m�[39;49;00m �[37m �[39;49;00m�[33m" raise RuntimeError(msg) from e"�[39;49;00m,�[37m�[39;49;00m �[37m �[39;49;00m�[33m"RuntimeError: Failed to unpickle serialized exception"�[39;49;00m,�[37m�[39;49;00m This is because there is no __reduce__ method defined on the openai exceptions.
See Ray documentation on serialization here: https://docs.ray.io/en/latest/ray-core/objects/serialization.html#customized-serialization, im sure this would affect other runtime environments too
Can a __reduce__ method be added to exceptions so runtimes, like Ray, do not fail when there is an OpenAI exception?
Additional context
No response
Metadata
Metadata
Assignees
Labels
No labels