diff --git a/semantic_router/encoders/openai.py b/semantic_router/encoders/openai.py index 7c8f5451f746aad005b62f3aca858866e8c8cf49..b828c2e571d9dbc361dfadb8738b56bf3866cae3 100644 --- a/semantic_router/encoders/openai.py +++ b/semantic_router/encoders/openai.py @@ -2,7 +2,7 @@ import os from time import sleep import openai -from openai.error import RateLimitError, ServiceUnavailableError +from openai.error import RateLimitError, ServiceUnavailableError, OpenAIError from semantic_router.encoders import BaseEncoder from semantic_router.utils.logger import logger @@ -25,11 +25,12 @@ class OpenAIEncoder(BaseEncoder): # exponential backoff for j in range(5): try: - logger.info(f"Encoding {len(docs)} docs...") + logger.info(f"Encoding {len(docs)} documents...") res = openai.Embedding.create(input=docs, engine=self.name) if isinstance(res, dict) and "data" in res: break - except (RateLimitError, ServiceUnavailableError) as e: + except (RateLimitError, ServiceUnavailableError, OpenAIError) as e: + logger.warning(f"Retrying in {2**j} seconds...") sleep(2**j) error_message = str(e) if not res or not isinstance(res, dict) or "data" not in res: