1818
1919logger = logging .getLogger (__name__ )
2020
21+ litellm ._turn_on_debug ()
22+
23+ # Configure logger with timestamp format if not already configured
24+ if not logger .handlers :
25+ handler = logging .StreamHandler ()
26+ handler .setFormatter (logging .Formatter ('%(asctime)s.%(msecs)03d %(message)s' , datefmt = '%H:%M:%S' ))
27+ logger .addHandler (handler )
28+ logger .setLevel (logging .INFO )
29+
2130
2231class SingleTurnRolloutProcessor (RolloutProcessor ):
2332 """Single turn rollout processor for direct LLM calls."""
@@ -39,7 +48,7 @@ def __call__(self, rows: List[EvaluationRow], config: RolloutProcessorConfig) ->
3948 async def process_row (row : EvaluationRow ) -> EvaluationRow :
4049 """Process a single row asynchronously."""
4150 start_time = time .perf_counter ()
42-
51+
4352 if len (row .messages ) == 0 :
4453 raise ValueError ("Messages is empty. Please provide a non-empty dataset" )
4554
@@ -97,7 +106,12 @@ async def process_row(row: EvaluationRow) -> EvaluationRow:
97106 chunks .append (chunk )
98107 response = litellm .stream_chunk_builder (chunks , messages_payload )
99108 else :
109+ logger .warning (f"******** rolling out { row .execution_metadata .run_id } " )
110+ logger .warning (json .dumps (request_params ))
111+ start_time = time .perf_counter ()
100112 response = await acompletion (** request_params )
113+ rollout_duration = time .perf_counter () - start_time
114+ logger .warning (f"******** rollout duration for { row .execution_metadata .run_id } { rollout_duration } seconds" )
101115
102116 assert response is not None , "Response is None"
103117 assert isinstance (response , ModelResponse ), "Response should be ModelResponse"
0 commit comments