@@ -239,36 +239,38 @@ def get_last_user_message(
239239 @staticmethod
240240 def get_last_user_message_block (
241241 request : ChatCompletionRequest ,
242- ) -> Optional [str ]:
242+ ) -> Optional [tuple [ str , int ] ]:
243243 """
244244 Get the last block of consecutive 'user' messages from the request.
245245
246246 Args:
247247 request (ChatCompletionRequest): The chat completion request to process
248248
249249 Returns:
250- Optional[str]: A string containing all consecutive user messages in the
250+ Optional[str, int ]: A string containing all consecutive user messages in the
251251 last user message block, separated by newlines, or None if
252252 no user message block is found.
253+ Index of the first message detected in the block.
253254 """
254255 if request .get ("messages" ) is None :
255256 return None
256257
257258 user_messages = []
258259 messages = request ["messages" ]
260+ block_start_index = None
259261
260262 # Iterate in reverse to find the last block of consecutive 'user' messages
261263 for i in reversed (range (len (messages ))):
262264 if messages [i ]["role" ] == "user" or messages [i ]["role" ] == "assistant" :
263- content_str = None
264- if "content" in messages [i ]:
265- content_str = messages [i ]["content" ] # type: ignore
266- else :
265+ content_str = messages [i ].get ("content" )
266+ if content_str is None :
267267 continue
268268
269269 if messages [i ]["role" ] == "user" :
270270 user_messages .append (content_str )
271- # specifically for Aider, when "ok." block is found, stop
271+ block_start_index = i
272+
273+ # Specifically for Aider, when "Ok." block is found, stop
272274 if content_str == "Ok." and messages [i ]["role" ] == "assistant" :
273275 break
274276 else :
@@ -277,8 +279,9 @@ def get_last_user_message_block(
277279 break
278280
279281 # Reverse the collected user messages to preserve the original order
280- if user_messages :
281- return "\n " .join (reversed (user_messages ))
282+ if user_messages and block_start_index is not None :
283+ content = "\n " .join (reversed (user_messages ))
284+ return content , block_start_index
282285
283286 return None
284287
0 commit comments