11import json
22import 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
65from openai import AsyncOpenAI
76from 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" )
6356async 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