Skip to content

Commit 1f8a461

Browse files
Add tenacity exponential backoff
1 parent 354e0c6 commit 1f8a461

File tree

2 files changed

+11
-1
lines changed

2 files changed

+11
-1
lines changed

redisvl/vectorize/text/openai.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,9 @@
11
from typing import Callable, Dict, List, Optional
2+
from tenacity import (
3+
retry,
4+
stop_after_attempt,
5+
wait_random_exponential,
6+
) # for exponential backoff
27

38
from redisvl.vectorize.base import BaseVectorizer
49

@@ -19,6 +24,7 @@ def __init__(self, model: str, api_config: Optional[Dict] = None):
1924
openai.api_key = api_config.get("api_key", None)
2025
self._model_client = openai.Embedding
2126

27+
@retry(wait=wait_random_exponential(min=1, max=60), stop=stop_after_attempt(6))
2228
def embed_many(
2329
self,
2430
texts: List[str],
@@ -48,6 +54,7 @@ def embed_many(
4854
]
4955
return embeddings
5056

57+
@retry(wait=wait_random_exponential(min=1, max=60), stop=stop_after_attempt(6))
5158
def embed(
5259
self,
5360
text: str,
@@ -71,6 +78,7 @@ def embed(
7178
result = self._model_client.create(input=[text], engine=self._model)
7279
return self._process_embedding(result["data"][0]["embedding"], as_buffer)
7380

81+
@retry(wait=wait_random_exponential(min=1, max=60), stop=stop_after_attempt(6))
7482
async def aembed_many(
7583
self,
7684
texts: List[str],
@@ -100,6 +108,7 @@ async def aembed_many(
100108
]
101109
return embeddings
102110

111+
@retry(wait=wait_random_exponential(min=1, max=60), stop=stop_after_attempt(6))
103112
async def aembed(
104113
self,
105114
text: str,

requirements.txt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,4 +2,5 @@ numpy
22
redis>=4.3.4
33
pyyaml
44
coloredlogs
5-
pydantic>=2.0.0
5+
pydantic>=2.0.0
6+
tenacity==8.2.2

0 commit comments

Comments
 (0)