diff --git a/llama-index-integrations/embeddings/llama-index-embeddings-azure-openai/llama_index/embeddings/azure_openai/base.py b/llama-index-integrations/embeddings/llama-index-embeddings-azure-openai/llama_index/embeddings/azure_openai/base.py index 54dee30a68ca19b726df63f9237f6b487cef33a0..5461847597be85deaeacade01cb3c1a8100a1cd8 100644 --- a/llama-index-integrations/embeddings/llama-index-embeddings-azure-openai/llama_index/embeddings/azure_openai/base.py +++ b/llama-index-integrations/embeddings/llama-index-embeddings-azure-openai/llama_index/embeddings/azure_openai/base.py @@ -46,7 +46,7 @@ class AzureOpenAIEmbedding(OpenAIEmbedding): # azure specific azure_endpoint: Optional[str] = None, azure_deployment: Optional[str] = None, - azure_ad_token_provider: AzureADTokenProvider = None, + azure_ad_token_provider: Optional[AzureADTokenProvider] = None, deployment_name: Optional[str] = None, max_retries: int = 10, reuse_client: bool = True, @@ -60,6 +60,8 @@ class AzureOpenAIEmbedding(OpenAIEmbedding): "azure_endpoint", azure_endpoint, "AZURE_OPENAI_ENDPOINT", "" ) + api_key = get_from_param_or_env("api_key", api_key, "AZURE_OPENAI_API_KEY") + azure_deployment = resolve_from_aliases( azure_deployment, deployment_name, diff --git a/llama-index-integrations/embeddings/llama-index-embeddings-azure-openai/pyproject.toml b/llama-index-integrations/embeddings/llama-index-embeddings-azure-openai/pyproject.toml index f734e8983ab7d5855f4cce35962bef32ebd2ed30..4b631b838d8112af1c057121ba1ffdb69cdd265c 100644 --- a/llama-index-integrations/embeddings/llama-index-embeddings-azure-openai/pyproject.toml +++ b/llama-index-integrations/embeddings/llama-index-embeddings-azure-openai/pyproject.toml @@ -27,7 +27,7 @@ exclude = ["**/BUILD"] license = "MIT" name = "llama-index-embeddings-azure-openai" readme = "README.md" -version = "0.1.8" +version = "0.1.9" [tool.poetry.dependencies] python = ">=3.8.1,<4.0" diff --git a/llama-index-integrations/embeddings/llama-index-embeddings-azure-openai/tests/test_azure_openai.py b/llama-index-integrations/embeddings/llama-index-embeddings-azure-openai/tests/test_azure_openai.py index a4ffcbf450ae41d9bba0007d035a73a78ff97b96..38fc4bf79ea63a17c4ce6ad9644af2626a3264e7 100644 --- a/llama-index-integrations/embeddings/llama-index-embeddings-azure-openai/tests/test_azure_openai.py +++ b/llama-index-integrations/embeddings/llama-index-embeddings-azure-openai/tests/test_azure_openai.py @@ -11,7 +11,7 @@ def test_custom_http_client(azure_openai_mock: MagicMock) -> None: Should get passed on to the implementation from OpenAI. """ custom_http_client = httpx.Client() - embedding = AzureOpenAIEmbedding(http_client=custom_http_client) + embedding = AzureOpenAIEmbedding(http_client=custom_http_client, api_key="mock") embedding._get_client() azure_openai_mock.assert_called() kwargs = azure_openai_mock.call_args.kwargs diff --git a/llama-index-integrations/llms/llama-index-llms-azure-openai/llama_index/llms/azure_openai/base.py b/llama-index-integrations/llms/llama-index-llms-azure-openai/llama_index/llms/azure_openai/base.py index 35ef8e9a63d3415d95f9128481a4161d9c137c29..481e80a348b4359598b89aeb6bb4922a1eca83e5 100644 --- a/llama-index-integrations/llms/llama-index-llms-azure-openai/llama_index/llms/azure_openai/base.py +++ b/llama-index-integrations/llms/llama-index-llms-azure-openai/llama_index/llms/azure_openai/base.py @@ -93,7 +93,7 @@ class AzureOpenAI(OpenAI): # azure specific azure_endpoint: Optional[str] = None, azure_deployment: Optional[str] = None, - azure_ad_token_provider: AzureADTokenProvider = None, + azure_ad_token_provider: Optional[AzureADTokenProvider] = None, use_azure_ad: bool = False, callback_manager: Optional[CallbackManager] = None, # aliases for engine @@ -186,6 +186,16 @@ class AzureOpenAI(OpenAI): if self.use_azure_ad: self._azure_ad_token = refresh_openai_azuread_token(self._azure_ad_token) self.api_key = self._azure_ad_token.token + else: + import os + + self.api_key = self.api_key or os.getenv("AZURE_OPENAI_API_KEY") + + if self.api_key is None: + raise ValueError( + "You must set an `api_key` parameter. " + "Alternatively, you can set the AZURE_OPENAI_API_KEY env var OR set `use_azure_ad=True`." + ) return { "api_key": self.api_key, diff --git a/llama-index-integrations/llms/llama-index-llms-azure-openai/pyproject.toml b/llama-index-integrations/llms/llama-index-llms-azure-openai/pyproject.toml index 3e2242f309c9e83da0b3a845fb169fcebd10771c..0924c6a43c3fc36b5d57f069f9d960507c598c04 100644 --- a/llama-index-integrations/llms/llama-index-llms-azure-openai/pyproject.toml +++ b/llama-index-integrations/llms/llama-index-llms-azure-openai/pyproject.toml @@ -29,7 +29,7 @@ exclude = ["**/BUILD"] license = "MIT" name = "llama-index-llms-azure-openai" readme = "README.md" -version = "0.1.6" +version = "0.1.7" [tool.poetry.dependencies] python = ">=3.8.1,<4.0" diff --git a/llama-index-integrations/llms/llama-index-llms-azure-openai/tests/test_azure_openai.py b/llama-index-integrations/llms/llama-index-llms-azure-openai/tests/test_azure_openai.py index 7529bad7ebec82335cb37027dc0bc99a660d38e7..9e66ee8f4236be02a45a6420bbb45927a3dd20d0 100644 --- a/llama-index-integrations/llms/llama-index-llms-azure-openai/tests/test_azure_openai.py +++ b/llama-index-integrations/llms/llama-index-llms-azure-openai/tests/test_azure_openai.py @@ -40,7 +40,9 @@ def test_custom_http_client(sync_azure_openai_mock: MagicMock) -> None: mock_instance = sync_azure_openai_mock.return_value # Valid mocked result required to not run into another error mock_instance.chat.completions.create.return_value = mock_chat_completion_v1() - azure_openai = AzureOpenAI(engine="foo bar", http_client=custom_http_client) + azure_openai = AzureOpenAI( + engine="foo bar", http_client=custom_http_client, api_key="mock" + ) azure_openai.complete("test prompt") sync_azure_openai_mock.assert_called() kwargs = sync_azure_openai_mock.call_args.kwargs