2121from .util import get_logger , ChatRequest
2222from .search_index_manager import SearchIndexManager
2323from azure .core .exceptions import HttpResponseError
24-
24+ import pydantic
2525
2626logger = get_logger (
2727 name = "azureaiapp_routes" ,
4141router = fastapi .APIRouter ()
4242templates = Jinja2Templates (directory = "api/templates" )
4343
44-
4544# Accessors to get app state
4645def get_chat_client (request : Request ) -> ChatCompletionsClient :
4746 return request .app .state .chat
@@ -79,15 +78,13 @@ async def chat_stream_handler(
7978 chat_client : ChatCompletionsClient = Depends (get_chat_client ),
8079 model_deployment_name : str = Depends (get_chat_model ),
8180 search_index_manager : SearchIndexManager = Depends (get_search_index_namager ),
82- feature_manager : FeatureManager = Depends
81+ feature_manager : FeatureManager = Depends ( get_feature_manager )
8382) -> fastapi .responses .StreamingResponse :
8483 if chat_client is None :
8584 raise Exception ("Chat client not initialized" )
8685
8786 async def response_stream ():
8887 messages = [{"role" : message .role , "content" : message .content } for message in chat_request .messages ]
89- model_deployment_name = globals ["chat_model" ]
90- feature_manager = globals ["feature_manager" ]
9188
9289 targeting_id = chat_request .sessionState .get ('sessionId' , str (uuid .uuid4 ()))
9390 attach (set_baggage ("Microsoft.TargetingId" , targeting_id ))
@@ -107,23 +104,7 @@ async def response_stream():
107104 chat_coroutine = await chat_client .complete (
108105 model = model_deployment_name , messages = prompt_messages + messages , stream = True
109106 )
110- async for event in chat_coroutine :
111- if event .choices :
112- first_choice = event .choices [0 ]
113- yield (
114- json .dumps (
115- {
116- "delta" : {
117- "content" : first_choice .delta .content ,
118- "role" : first_choice .delta .role ,
119- }
120- },
121- ensure_ascii = False ,
122- )
123- + "\n "
124- )
125107
126- prompt_messages = PromptTemplate .from_string ('You are a helpful assistant' ).create_messages ()
127108 # Use RAG model, only if we were provided index and we have found a context there.
128109 if search_index_manager is not None :
129110 context = await search_index_manager .search (chat_request )
@@ -135,6 +116,7 @@ async def response_stream():
135116 logger .info (f"{ prompt_messages = } " )
136117 else :
137118 logger .info ("Unable to find the relevant information in the index for the request." )
119+
138120 try :
139121 chat_coroutine = await chat_client .complete (
140122 model = model_deployment_name , messages = prompt_messages + messages , stream = True
0 commit comments