|  | @@ -1,5 +1,4 @@
 | 
	
		
			
				|  |  |  import logging
 | 
	
		
			
				|  |  | -import re
 | 
	
		
			
				|  |  |  from collections.abc import Generator
 | 
	
		
			
				|  |  |  from typing import Optional
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -231,6 +230,17 @@ class VolcengineMaaSLargeLanguageModel(LargeLanguageModel):
 | 
	
		
			
				|  |  |              return _handle_chat_response()
 | 
	
		
			
				|  |  |          return _handle_stream_chat_response()
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +    def wrap_thinking(self, delta: dict, is_reasoning: bool) -> tuple[str, bool]:
 | 
	
		
			
				|  |  | +        content = ""
 | 
	
		
			
				|  |  | +        reasoning_content = None
 | 
	
		
			
				|  |  | +        if hasattr(delta, "content"):
 | 
	
		
			
				|  |  | +            content = delta.content
 | 
	
		
			
				|  |  | +        if hasattr(delta, "reasoning_content"):
 | 
	
		
			
				|  |  | +            reasoning_content = delta.reasoning_content
 | 
	
		
			
				|  |  | +        return self._wrap_thinking_by_reasoning_content(
 | 
	
		
			
				|  |  | +            {"content": content, "reasoning_content": reasoning_content}, is_reasoning
 | 
	
		
			
				|  |  | +        )
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |      def _generate_v3(
 | 
	
		
			
				|  |  |          self,
 | 
	
		
			
				|  |  |          model: str,
 | 
	
	
		
			
				|  | @@ -253,22 +263,7 @@ class VolcengineMaaSLargeLanguageModel(LargeLanguageModel):
 | 
	
		
			
				|  |  |                  content = ""
 | 
	
		
			
				|  |  |                  if chunk.choices:
 | 
	
		
			
				|  |  |                      delta = chunk.choices[0].delta
 | 
	
		
			
				|  |  | -                    if is_reasoning_started and not hasattr(delta, "reasoning_content") and not delta.content:
 | 
	
		
			
				|  |  | -                        content = ""
 | 
	
		
			
				|  |  | -                    elif hasattr(delta, "reasoning_content"):
 | 
	
		
			
				|  |  | -                        if not is_reasoning_started:
 | 
	
		
			
				|  |  | -                            is_reasoning_started = True
 | 
	
		
			
				|  |  | -                            content = "> 💭 " + delta.reasoning_content
 | 
	
		
			
				|  |  | -                        else:
 | 
	
		
			
				|  |  | -                            content = delta.reasoning_content
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -                        if "\n" in content:
 | 
	
		
			
				|  |  | -                            content = re.sub(r"\n(?!(>|\n))", "\n> ", content)
 | 
	
		
			
				|  |  | -                    elif is_reasoning_started:
 | 
	
		
			
				|  |  | -                        content = "\n\n" + delta.content
 | 
	
		
			
				|  |  | -                        is_reasoning_started = False
 | 
	
		
			
				|  |  | -                    else:
 | 
	
		
			
				|  |  | -                        content = delta.content
 | 
	
		
			
				|  |  | +                    content, is_reasoning_started = self.wrap_thinking(delta, is_reasoning_started)
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |                  yield LLMResultChunk(
 | 
	
		
			
				|  |  |                      model=model,
 |