@@ -175,6 +175,11 @@ async def route_general_request(
175175 request_body = await request .body ()
176176 request_json = await request .json () # TODO (ApostaC): merge two awaits into one
177177
178+ if request .query_params :
179+ request_endpoint = request .query_params .get ("id" )
180+ else :
181+ request_endpoint = None
182+
178183 if hasattr (request .app .state , "callbacks" ) and (
179184 response_overwrite := request .app .state .callbacks .pre_request (
180185 request , request_body , request_json
@@ -206,26 +211,40 @@ async def route_general_request(
206211 # TODO (ApostaC): merge two awaits into one
207212 service_discovery = get_service_discovery ()
208213 endpoints = service_discovery .get_endpoint_info ()
209- engine_stats = request .app .state .engine_stats_scraper .get_engine_stats ()
210- request_stats = request .app .state .request_stats_monitor .get_request_stats (
211- time .time ()
212- )
213214
214215 aliases = getattr (service_discovery , "aliases" , None )
215216 if aliases and requested_model in aliases .keys ():
216217 requested_model = aliases [requested_model ]
217218 request_body = replace_model_in_request_body (request_json , requested_model )
218219 update_content_length (request , request_body )
219220
220- # Filter endpoints that have the requested model
221- endpoints = list (filter (lambda x : requested_model in x .model_names , endpoints ))
221+ if not request_endpoint :
222+ endpoints = list (filter (lambda x : requested_model in x .model_names , endpoints ))
223+ engine_stats = request .app .state .engine_stats_scraper .get_engine_stats ()
224+ request_stats = request .app .state .request_stats_monitor .get_request_stats (
225+ time .time ()
226+ )
227+ else :
228+ endpoints = list (
229+ filter (
230+ lambda x : requested_model in x .model_names and x .Id == request_endpoint ,
231+ endpoints ,
232+ )
233+ )
234+
222235 if not endpoints :
223236 return JSONResponse (
224237 status_code = 400 , content = {"error" : f"Model { requested_model } not found." }
225238 )
226239
227240 logger .debug (f"Routing request { request_id } for model: { requested_model } " )
228- if isinstance (request .app .state .router , KvawareRouter ) or isinstance (
241+ if request_endpoint :
242+ server_url = endpoints [0 ].url
243+ logger .debug (
244+ f"Routing request { request_id } to engine with Id: { endpoints [0 ].Id } "
245+ )
246+
247+ elif isinstance (request .app .state .router , KvawareRouter ) or isinstance (
229248 request .app .state .router , PrefixAwareRouter
230249 ):
231250 server_url = await request .app .state .router .route_request (
@@ -235,6 +254,7 @@ async def route_general_request(
235254 server_url = request .app .state .router .route_request (
236255 endpoints , engine_stats , request_stats , request
237256 )
257+
238258 curr_time = time .time ()
239259 logger .info (
240260 f"Routing request { request_id } to { server_url } at { curr_time } , process time = { curr_time - in_router_time :.4f} "
0 commit comments