pub struct MiniMaxAppendThinkParser { /* private fields */ }Expand description
MiniMax Append-Think Reasoning Parser.
The MiniMax model starts generating reasoning content immediately WITHOUT
emitting a <think> opener in its output. SGLang’s MiniMaxAppendThinkDetector
and vLLM’s MiniMaxM2AppendThinkReasoningParser both handle this by simply
prepending <think> to the emitted text and classifying the whole stream
as normal_text/content — neither extracts reasoning based on a </think>
marker. The tag is left inline for downstream consumers that want to render
or post-process it.
This parser matches those upstream implementations verbatim: a pass-through
with a one-time <think> prefix on the first streamed chunk. Reasoning
content is never populated.
References:
- SGLang MiniMaxAppendThinkDetector: https://github.com/sgl-project/sglang/blob/main/python/sglang/srt/parser/reasoning_parser.py
- vLLM MiniMaxM2AppendThinkReasoningParser: https://github.com/vllm-project/vllm/blob/main/vllm/reasoning/minimax_m2_reasoning_parser.py
Implementations§
Trait Implementations§
Source§impl Debug for MiniMaxAppendThinkParser
impl Debug for MiniMaxAppendThinkParser
Source§impl Default for MiniMaxAppendThinkParser
impl Default for MiniMaxAppendThinkParser
Source§fn default() -> MiniMaxAppendThinkParser
fn default() -> MiniMaxAppendThinkParser
Returns the “default value” for a type. Read more
Source§impl ReasoningParser for MiniMaxAppendThinkParser
impl ReasoningParser for MiniMaxAppendThinkParser
Source§fn detect_and_parse_reasoning(
&mut self,
text: &str,
_token_ids: &[u32],
) -> ParserResult
fn detect_and_parse_reasoning( &mut self, text: &str, _token_ids: &[u32], ) -> ParserResult
Parses a standalone, non-streaming input chunk. Implementations may reset or ignore
internal streaming state and should return the split of normal vs reasoning text for
this complete input. Marker tokens must not be included in either output.
Source§fn parse_reasoning_streaming_incremental(
&mut self,
text: &str,
_token_ids: &[u32],
) -> ParserResult
fn parse_reasoning_streaming_incremental( &mut self, text: &str, _token_ids: &[u32], ) -> ParserResult
Parses a streaming chunk and updates internal state. The return value should be the
delta: only the newly discovered normal and reasoning text attributable to this chunk
(not the cumulative totals). Marker tokens must not be included in either output.
Source§fn finish_reasoning_stream(&mut self) -> ParserResult
fn finish_reasoning_stream(&mut self) -> ParserResult
Finalizes a stream after the last chunk, before parser state is dropped. Read more
Source§fn set_in_reasoning(&mut self, _in_reasoning: bool)
fn set_in_reasoning(&mut self, _in_reasoning: bool)
Override the parser’s initial reasoning state. When called with
true, the parser
starts in reasoning mode without waiting for the start token in the completion stream.
Use this when the chat template already injected the start token (e.g., <think>)
into the prompt, so it won’t appear in the model’s output.Auto Trait Implementations§
impl Freeze for MiniMaxAppendThinkParser
impl RefUnwindSafe for MiniMaxAppendThinkParser
impl Send for MiniMaxAppendThinkParser
impl Sync for MiniMaxAppendThinkParser
impl Unpin for MiniMaxAppendThinkParser
impl UnsafeUnpin for MiniMaxAppendThinkParser
impl UnwindSafe for MiniMaxAppendThinkParser
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
Source§fn in_current_span(self) -> Instrumented<Self> ⓘ
fn in_current_span(self) -> Instrumented<Self> ⓘ
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more