- Before </think>: tokens sent as delta.reasoning_content - After </think>: tokens sent as delta.content - Handles </think> split across token boundaries - Clean <|im_start|>/<|im_end|>/<think>/</think> from streamed text - Normal models (no thinking) send all as content as before