partners[azure]: fix having openai_api_base set for other packages (#22068)

This fix is for #21726. When having other packages installed that
require the `openai_api_base` environment variable, users are not able
to instantiate the AzureChatModels or AzureEmbeddings.

This PR adds a new value `ignore_openai_api_base` which is a bool. When
set to True, it sets `openai_api_base` to `None`

Two new tests were added for the `test_azure` and a new file
`test_azure_embeddings`

A different approach may be better for this. If you can think of better
logic, let me know and I can adjust it.

---------

Co-authored-by: Erick Friis <erick@langchain.dev>
This commit is contained in:
Chip Davis
2024-07-01 13:35:20 -05:00
committed by GitHub
parent b36e95caa9
commit 04bc5f1a95
4 changed files with 70 additions and 10 deletions

View File

@@ -1,4 +1,5 @@
"""Azure OpenAI chat wrapper."""
from __future__ import annotations
import logging
@@ -548,8 +549,10 @@ class AzureChatOpenAI(BaseChatOpenAI):
values["openai_api_key"] = (
convert_to_secret_str(openai_api_key) if openai_api_key else None
)
values["openai_api_base"] = values["openai_api_base"] or os.getenv(
"OPENAI_API_BASE"
values["openai_api_base"] = (
values["openai_api_base"]
if "openai_api_base" in values
else os.getenv("OPENAI_API_BASE")
)
values["openai_api_version"] = values["openai_api_version"] or os.getenv(
"OPENAI_API_VERSION"
@@ -601,12 +604,16 @@ class AzureChatOpenAI(BaseChatOpenAI):
"api_version": values["openai_api_version"],
"azure_endpoint": values["azure_endpoint"],
"azure_deployment": values["deployment_name"],
"api_key": values["openai_api_key"].get_secret_value()
if values["openai_api_key"]
else None,
"azure_ad_token": values["azure_ad_token"].get_secret_value()
if values["azure_ad_token"]
else None,
"api_key": (
values["openai_api_key"].get_secret_value()
if values["openai_api_key"]
else None
),
"azure_ad_token": (
values["azure_ad_token"].get_secret_value()
if values["azure_ad_token"]
else None
),
"azure_ad_token_provider": values["azure_ad_token_provider"],
"organization": values["openai_organization"],
"base_url": values["openai_api_base"],

View File

@@ -75,8 +75,10 @@ class AzureOpenAIEmbeddings(OpenAIEmbeddings):
values["openai_api_key"] = (
convert_to_secret_str(openai_api_key) if openai_api_key else None
)
values["openai_api_base"] = values["openai_api_base"] or os.getenv(
"OPENAI_API_BASE"
values["openai_api_base"] = (
values["openai_api_base"]
if "openai_api_base" in values
else os.getenv("OPENAI_API_BASE")
)
values["openai_api_version"] = values["openai_api_version"] or os.getenv(
"OPENAI_API_VERSION", default="2023-05-15"