Skip to content

Commit 1b9a1b7

Browse files
authored
Merge pull request #11 from Azure-Samples/bearerprovider
Use bearer token provider instead of manually calling get_token
2 parents d0e4aa7 + d1ea20c commit 1b9a1b7

File tree

1 file changed

+6
-12
lines changed

1 file changed

+6
-12
lines changed

src/quartapp/chat.py

Lines changed: 6 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,7 @@
11
import json
22
import os
3-
import time
43

5-
from azure.identity.aio import AzureDeveloperCliCredential, ManagedIdentityCredential
4+
from azure.identity.aio import AzureDeveloperCliCredential, ManagedIdentityCredential, get_bearer_token_provider
65
from openai import AsyncOpenAI
76
from quart import (
87
Blueprint,
@@ -28,12 +27,14 @@ async def configure_openai():
2827
bp.azure_credential = AzureDeveloperCliCredential(tenant_id=tenant_id)
2928

3029
# Get the token provider for Azure OpenAI based on the selected Azure credential
31-
bp.openai_token = await bp.azure_credential.get_token("https://cognitiveservices.azure.com/.default")
30+
bp.openai_token_provider = get_bearer_token_provider(
31+
bp.azure_credential, "https://cognitiveservices.azure.com/.default"
32+
)
3233

3334
# Create the Asynchronous Azure OpenAI client
3435
bp.openai_client = AsyncOpenAI(
3536
base_url=os.environ["AZURE_INFERENCE_ENDPOINT"],
36-
api_key=bp.openai_token.token,
37+
api_key=await bp.openai_token_provider(),
3738
default_query={"api-version": "2024-05-01-preview"},
3839
)
3940

@@ -51,14 +52,6 @@ async def index():
5152
return await render_template("index.html")
5253

5354

54-
@bp.before_request
55-
async def maybe_refresh_token():
56-
if bp.openai_token.expires_on < (time.time() + 60):
57-
current_app.logger.info("Token is expired, refreshing token.")
58-
openai_token = await bp.azure_credential.get_token("https://cognitiveservices.azure.com/.default")
59-
bp.openai_client.api_key = openai_token.token
60-
61-
6255
@bp.post("/chat/stream")
6356
async def chat_handler():
6457
request_messages = (await request.get_json())["messages"]
@@ -70,6 +63,7 @@ async def response_stream():
7063
{"role": "system", "content": "You are a helpful assistant."},
7164
] + request_messages
7265

66+
bp.openai_client.api_key = await bp.openai_token_provider()
7367
chat_coroutine = bp.openai_client.chat.completions.create(
7468
# Azure Open AI takes the deployment name as the model name
7569
model=bp.openai_model,

0 commit comments

Comments
 (0)