Hey folks,
We have a workflow in our product where we allow folks to use audio files to build contexts (in our vector DB).
However after hitting the whisper API with a files in order the 3rd or 4th always times out and we’re getting this error repeatedly:
Traceback (most recent call last):
File "/usr/local/lib/python3.9/site-packages/billiard/pool.py", line 366, in workloop
put((READY, (job, i, result, inqW_fd)))
File "/usr/local/lib/python3.9/site-packages/billiard/queues.py", line 366, in put
self.send_payload(ForkingPickler.dumps(obj))
File "/usr/local/lib/python3.9/site-packages/billiard/reduction.py", line 56, in dumps
cls(buf, protocol).dump(obj)
billiard.pool.MaybeEncodingError: Error sending result: '"(1, <ExceptionInfo: RetryError('<Future at 0x7f8c4002fbb0 state=finished raised APIError>')>, None)"'. Reason: ''PicklingError("Can\'t pickle <class \'tenacity.RetryError\'>: it\'s not the same object as tenacity.RetryError")''.
We’ve wrapped our code like so:
@retry(wait=wait_random_exponential(min=1, max=60), stop=stop_after_attempt(6))
def transcribe_with_backoff(self, path):
audio_file = open(path, "rb")
logging.info("transcribing with backoff")
response = openai.Audio.transcribe(
"whisper-1",
audio_file,
api_key=os.environ.get("KLU_OPENAI_API_KEY"),
api_type="openai",
api_base="https://api.openai.com/v1",
)
logging.info(response)
return response
Having said that - I can see the file actually did come through.
What am I doing wrong here? The API basically gives an error, but the requests still show up and we will get billed for them.