Skip to content

Commit 4d03229

Browse files
committed
fix(embeddings): preserve OpenAI import validation
Signed-off-by: Pouyanpi <13303554+Pouyanpi@users.noreply.github.com>
1 parent 1d17ebf commit 4d03229

2 files changed

Lines changed: 8 additions & 6 deletions

File tree

nemoguardrails/embeddings/providers/openai.py

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -47,16 +47,15 @@ def __init__(
4747
):
4848
try:
4949
import openai
50-
from openai import OpenAI
51-
except ImportError:
52-
raise ImportError("Could not import openai, please install it with `pip install openai`.")
50+
except ImportError as err:
51+
raise ImportError("Could not import openai, please install it with `pip install openai`.") from err
5352
if openai.__version__ < "1.0.0":
5453
raise RuntimeError(
5554
"`openai<1.0.0` is no longer supported. Please upgrade using `pip install openai>=1.0.0`."
5655
)
5756

5857
self.model = embedding_model
59-
self.client = OpenAI(**kwargs)
58+
self.client = openai.OpenAI(**kwargs)
6059

6160
self.embedding_size_dict = {
6261
"text-embedding-ada-002": 1536,

tests/test_embeddings_providers_mock.py

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
# limitations under the License.
1515

1616
import sys
17+
from types import ModuleType
1718
from unittest.mock import MagicMock, Mock, patch
1819

1920
import pytest
@@ -226,7 +227,7 @@ def test_init_with_unknown_model(self):
226227

227228
def test_import_error_when_openai_not_installed(self):
228229
with patch.dict("sys.modules", {"openai": None}):
229-
with pytest.raises(ImportError, match="Could not import openai"):
230+
with pytest.raises(ImportError, match="Could not import openai") as exc_info:
230231
if "nemoguardrails.embeddings.providers.openai" in sys.modules:
231232
del sys.modules["nemoguardrails.embeddings.providers.openai"]
232233

@@ -236,8 +237,10 @@ def test_import_error_when_openai_not_installed(self):
236237

237238
OpenAIEmbeddingModel("text-embedding-3-small")
238239

240+
assert isinstance(exc_info.value.__cause__, ImportError)
241+
239242
def test_old_version_error(self):
240-
mock_openai = MagicMock()
243+
mock_openai = ModuleType("openai")
241244
mock_openai.__version__ = "0.28.0"
242245

243246
with patch.dict("sys.modules", {"openai": mock_openai}):

0 commit comments

Comments
 (0)