Document loading chapter - getting RateLimitError: exceeded quota for this month

[youtube] Extracting URL: https://www.youtube.com/watch?v=7Ron6MN45LY
[youtube] 7Ron6MN45LY: Downloading webpage
[youtube] 7Ron6MN45LY: Downloading ios player API JSON
[youtube] 7Ron6MN45LY: Downloading android player API JSON
[youtube] 7Ron6MN45LY: Downloading m3u8 information
[info] 7Ron6MN45LY: Downloading 1 format(s): 140
[download] docs/youtube//Learn How to Solve a Rubik's Cube in 10 Minutes (Beginner Tutorial).m4a has already been downloaded
[download] 100% of    9.30MiB
[ExtractAudio] Not converting audio docs/youtube//Learn How to Solve a Rubik's Cube in 10 Minutes (Beginner Tutorial).m4a; file is already in target format m4a
Transcribing part 1!
---------------------------------------------------------------------------
RateLimitError                            Traceback (most recent call last)
Cell In[28], line 7
      2 save_dir="docs/youtube/"
      3 loader = GenericLoader(
      4     YoutubeAudioLoader([url],save_dir),
      5     OpenAIWhisperParser()
      6 )
----> 7 docs = loader.load()

File /usr/local/lib/python3.9/site-packages/langchain/document_loaders/generic.py:90, in GenericLoader.load(self)
     88 def load(self) -> List[Document]:
     89     """Load all documents."""
---> 90     return list(self.lazy_load())

File /usr/local/lib/python3.9/site-packages/langchain/document_loaders/generic.py:86, in GenericLoader.lazy_load(self)
     84 """Load documents lazily. Use this when working at a large scale."""
     85 for blob in self.blob_loader.yield_blobs():
---> 86     yield from self.blob_parser.lazy_parse(blob)

File /usr/local/lib/python3.9/site-packages/langchain/document_loaders/parsers/audio.py:51, in OpenAIWhisperParser.lazy_parse(self, blob)
     49 # Transcribe
     50 print(f"Transcribing part {split_number+1}!")
---> 51 transcript = openai.Audio.transcribe("whisper-1", file_obj)
     53 yield Document(
     54     page_content=transcript.text,
     55     metadata={"source": blob.source, "chunk": split_number},
     56 )

File /usr/local/lib/python3.9/site-packages/openai/api_resources/audio.py:57, in Audio.transcribe(cls, model, file, api_key, api_base, api_type, api_version, organization, **params)
     55 requestor, files, data = cls._prepare_request(file, file.name, model, **params)
     56 url = cls._get_url("transcriptions")
---> 57 response, _, api_key = requestor.request("post", url, files=files, params=data)
     58 return util.convert_to_openai_object(
     59     response, api_key, api_version, organization
     60 )

File /usr/local/lib/python3.9/site-packages/openai/api_requestor.py:226, in APIRequestor.request(self, method, url, params, headers, files, stream, request_id, request_timeout)
    205 def request(
    206     self,
    207     method,
   (...)
    214     request_timeout: Optional[Union[float, Tuple[float, float]]] = None,
    215 ) -> Tuple[Union[OpenAIResponse, Iterator[OpenAIResponse]], bool, str]:
    216     result = self.request_raw(
    217         method.lower(),
    218         url,
   (...)
    224         request_timeout=request_timeout,
    225     )
--> 226     resp, got_stream = self._interpret_response(result, stream)
    227     return resp, got_stream, self.api_key

File /usr/local/lib/python3.9/site-packages/openai/api_requestor.py:619, in APIRequestor._interpret_response(self, result, stream)
    611     return (
    612         self._interpret_response_line(
    613             line, result.status_code, result.headers, stream=True
    614         )
    615         for line in parse_stream(result.iter_lines())
    616     ), True
    617 else:
    618     return (
--> 619         self._interpret_response_line(
    620             result.content.decode("utf-8"),
    621             result.status_code,
    622             result.headers,
    623             stream=False,
    624         ),
    625         False,
    626     )

File /usr/local/lib/python3.9/site-packages/openai/api_requestor.py:679, in APIRequestor._interpret_response_line(self, rbody, rcode, rheaders, stream)
    677 stream_error = stream and "error" in resp.data
    678 if stream_error or not 200 <= rcode < 300:
--> 679     raise self.handle_error_response(
    680         rbody, rcode, resp.data, rheaders, stream_error=stream_error
    681     )
    682 return resp

RateLimitError: exceeded quota for this month

Hello @vsrinivas ,

This means that you have exhausted your account’s free quota to use it.

With regards,
Nilosree Sengupta

Hello @ nilosreesengupta, I understand that. Just to clarify, it is the learning platform account, not my account. The notebook was provided for students to try out. Hence, I have highlighted the error.

Hello @ nilosreesengupta, this ratelimiterror still continues, thus preventing execution of code provided in the notebook. Can the account quota for the learning platform be extended?

Hello @vsrinivas ,

Okay, I am asking the team and will let you know.

With regards,
Nilosree Sengupta

Hello @vsrinivas ,

No, extension is not possible. However, you should have a reseted rate limit next month.

With regards,
Nilosree Sengupta

:sunglasses::sleepy::sob::sleeping:

Hi @nilosreesengupta , just thought of seeking a few clarifications on account free quota.

  1. Is the limit per user per course per month? Or is it per user per month irrespective of number of courses?
  2. If it is per user, is there a way I know how much free quota is left for me for that month at any point of time?

Hello @Mubsi ,

I’m tagging you here.

@vsrinivas , he will be the right person to clear your doubts better regarding the free quota.

Thanks,
With regards,
Nilosree Sengupta

Hi @vsrinivas,

Let me get back to you on that.

1 Like

Hi @vsrinivas,

  1. It’s per user - about $1’s worth of tokens
  2. Not possible at the moment.

Best,
Mubsi