@@ -81,7 +81,17 @@ func ChatEndpoint(cl *config.ModelConfigLoader, ml *model.ModelLoader, evaluator
8181 extractor := reason .NewReasoningExtractor (thinkingStartToken , config .ReasoningConfig )
8282
8383 _ , _ , _ , err := ComputeChoices (req , s , config , cl , startupOptions , loader , func (s string , c * []schema.Choice ) {}, func (s string , tokenUsage backend.TokenUsage ) bool {
84- reasoningDelta , contentDelta := extractor .ProcessToken (s )
84+ var reasoningDelta , contentDelta string
85+
86+ // Prefer pre-parsed chat deltas from C++ autoparser when available
87+ if tokenUsage .HasChatDeltaContent () {
88+ reasoningDelta , contentDelta = tokenUsage .ChatDeltaReasoningAndContent ()
89+ // Keep extractor state consistent for fallback
90+ extractor .ProcessToken (s )
91+ } else {
92+ // Fallback: Go-side extraction from raw text
93+ reasoningDelta , contentDelta = extractor .ProcessToken (s )
94+ }
8595
8696 usage := schema.OpenAIUsage {
8797 PromptTokens : tokenUsage .Prompt ,
@@ -133,7 +143,18 @@ func ChatEndpoint(cl *config.ModelConfigLoader, ml *model.ModelLoader, evaluator
133143
134144 _ , tokenUsage , chatDeltas , err := ComputeChoices (req , prompt , config , cl , startupOptions , loader , func (s string , c * []schema.Choice ) {}, func (s string , usage backend.TokenUsage ) bool {
135145 result += s
136- reasoningDelta , contentDelta := extractor .ProcessToken (s )
146+
147+ var reasoningDelta , contentDelta string
148+
149+ // Prefer pre-parsed chat deltas from C++ autoparser when available
150+ if usage .HasChatDeltaContent () {
151+ reasoningDelta , contentDelta = usage .ChatDeltaReasoningAndContent ()
152+ // Keep extractor state consistent for fallback
153+ extractor .ProcessToken (s )
154+ } else {
155+ // Fallback: Go-side extraction from raw text
156+ reasoningDelta , contentDelta = extractor .ProcessToken (s )
157+ }
137158
138159 // Emit reasoning deltas in their own SSE chunks before any tool-call chunks
139160 // (OpenAI spec: reasoning and tool_calls never share a delta)
0 commit comments