@@ -346,12 +346,32 @@ def execute_single_approach(approach, system_prompt, initial_query, client, mode
346346 import inspect
347347 sig = inspect .signature (plugin_func )
348348
349- if 'request_config' in sig .parameters :
350- # Plugin supports request_config
351- return plugin_func (system_prompt , initial_query , client , model , request_config = request_config )
349+ # Check if the plugin function is async
350+ is_async = inspect .iscoroutinefunction (plugin_func )
351+
352+ if is_async :
353+ # For async functions, we need to run them in an event loop
354+ import asyncio
355+ loop = asyncio .new_event_loop ()
356+ asyncio .set_event_loop (loop )
357+ try :
358+ if 'request_config' in sig .parameters :
359+ # Plugin supports request_config
360+ result = loop .run_until_complete (plugin_func (system_prompt , initial_query , client , model , request_config = request_config ))
361+ else :
362+ # Legacy plugin without request_config support
363+ result = loop .run_until_complete (plugin_func (system_prompt , initial_query , client , model ))
364+ return result
365+ finally :
366+ loop .close ()
352367 else :
353- # Legacy plugin without request_config support
354- return plugin_func (system_prompt , initial_query , client , model )
368+ # For synchronous functions, call directly
369+ if 'request_config' in sig .parameters :
370+ # Plugin supports request_config
371+ return plugin_func (system_prompt , initial_query , client , model , request_config = request_config )
372+ else :
373+ # Legacy plugin without request_config support
374+ return plugin_func (system_prompt , initial_query , client , model )
355375 else :
356376 raise ValueError (f"Unknown approach: { approach } " )
357377
0 commit comments