fromlangchain.embeddingsimportOpenAIEmbeddingsfromopenai.errorimportRateLimitErrorformopenai_toolsimportOpenAICredentialManageremb_db= [] # a list to save text_loader= ...# is a generator that yields cleaned texts# create a credential manager objectcred_man=OpenAICredentialManager("./openai.apikey")
cm=iter(cred_man)
key, nickname=next(cm)
# pick caption text one by oneforcaptionintext_loader:
whileTrue:
model=OpenAIEmbeddings(openai_api_key=key, model="ada", max_retries=1)
try:
ifcred_man.is_limit_exhausted(nickname):
raiseRateLimitError("Rate limit exhausted for {}".format(nickname))
# singleembedding=model.embed_query(caption)
emb_db.append(caption, embedding)
# time.sleep(60 / rpm)breakexceptRateLimitError:
cred_man.set_limit_exhausted(nickname)
key, nickname=next(cm)