Skip to content

Commit 472a5a6

Browse files
authored
Merge pull request #21 from pelikhan/azure-entra
Azure Managed Identity support (entra)
2 parents e131f13 + 4df57f7 commit 472a5a6

File tree

3 files changed

+24
-7
lines changed

3 files changed

+24
-7
lines changed

README.md

+4-1
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,10 @@ python3 -m venv .venv
3636
source .venv/bin/activate
3737
pip install -r requirements.txt
3838
```
39-
Set up the `OPENAI_API_KEY` environment variable (for OpenAI) or the `AZURE_OPENAI_API_KEY`, `AZURE_API_VERSION` and `AZURE_API_BASE` environment variables (for Azure OpenAI).
39+
Set up the `OPENAI_API_KEY` environment variable (for OpenAI)
40+
or the `AZURE_OPENAI_API_KEY`, `AZURE_API_VERSION` and `AZURE_API_BASE` environment variables (for Azure OpenAI)
41+
or `AZURE_API_VERSION` and `AZURE_API_BASE` environment variables + `az login` for Azure OpenAI with Managed Entra.
42+
4043
You can then run the optillm proxy as follows.
4144

4245
```bash

optillm.py

+18-5
Original file line numberDiff line numberDiff line change
@@ -31,11 +31,24 @@
3131
API_KEY = os.environ.get("OPENAI_API_KEY")
3232
default_client = OpenAI(api_key=API_KEY)
3333
else:
34-
default_client = AzureOpenAI(
35-
api_key=os.environ.get("AZURE_OPENAI_API_KEY"),
36-
api_version=os.environ.get("AZURE_API_VERSION"),
37-
azure_endpoint=os.environ.get("AZURE_API_BASE"),
38-
)
34+
API_KEY = os.environ.get("AZURE_OPENAI_API_KEY")
35+
API_VERSION = os.environ.get("AZURE_API_VERSION")
36+
AZURE_ENDPOINT = os.environ.get("AZURE_API_BASE")
37+
if API_KEY is not None:
38+
default_client = AzureOpenAI(
39+
api_key=API_KEY,
40+
api_version=API_VERSION,
41+
azure_endpoint=AZURE_ENDPOINT,
42+
)
43+
else:
44+
from azure.identity import DefaultAzureCredential, get_bearer_token_provider
45+
azure_credential = DefaultAzureCredential()
46+
token_provider = get_bearer_token_provider(azure_credential, "https://cognitiveservices.azure.com/.default")
47+
default_client = AzureOpenAI(
48+
api_version=API_VERSION,
49+
azure_endpoint=AZURE_ENDPOINT,
50+
azure_ad_token_provider=token_provider
51+
)
3952

4053
# Server configuration
4154
server_config = {

requirements.txt

+2-1
Original file line numberDiff line numberDiff line change
@@ -3,4 +3,5 @@ networkx
33
openai
44
z3-solver
55
aiohttp
6-
flask
6+
flask
7+
azure.identity

0 commit comments

Comments
 (0)