davanstrien HF Staff commited on
Commit
2e33030
·
1 Parent(s): 7493f69

Fix reasoning trace parsing for incomplete XML tags

Browse files

- Update detectReasoningTrace to require both opening AND closing tags
- Add console warning when incomplete reasoning traces are detected
- Skip malformed reasoning traces to avoid confusing partial content
- Maintains full functionality for well-formed reasoning traces

Files changed (1) hide show
  1. js/reasoning-parser.js +16 -7
js/reasoning-parser.js CHANGED
@@ -12,15 +12,18 @@ class ReasoningParser {
12
  static detectReasoningTrace(text) {
13
  if (!text || typeof text !== 'string') return false;
14
 
15
- // Check for common reasoning trace patterns
16
- const patterns = [
17
- /<think>/i,
18
- /<thinking>/i,
19
- /<reasoning>/i,
20
- /<thought>/i
21
  ];
22
 
23
- return patterns.some(pattern => pattern.test(text));
 
 
 
24
  }
25
 
26
  /**
@@ -77,6 +80,12 @@ class ReasoningParser {
77
  }
78
  }
79
 
 
 
 
 
 
 
80
  // If no patterns match, return original text as answer
81
  return {
82
  reasoning: null,
 
12
  static detectReasoningTrace(text) {
13
  if (!text || typeof text !== 'string') return false;
14
 
15
+ // Check for complete reasoning trace patterns (both opening and closing tags)
16
+ const completePatterns = [
17
+ { start: /<think>/i, end: /<\/think>/i },
18
+ { start: /<thinking>/i, end: /<\/thinking>/i },
19
+ { start: /<reasoning>/i, end: /<\/reasoning>/i },
20
+ { start: /<thought>/i, end: /<\/thought>/i }
21
  ];
22
 
23
+ // Only return true if we find BOTH opening and closing tags
24
+ return completePatterns.some(pattern =>
25
+ pattern.start.test(text) && pattern.end.test(text)
26
+ );
27
  }
28
 
29
  /**
 
80
  }
81
  }
82
 
83
+ // Check if there are incomplete reasoning tags (opening but no closing)
84
+ const hasOpeningTag = /<think>|<thinking>|<reasoning>|<thought>/i.test(text);
85
+ if (hasOpeningTag) {
86
+ console.warn('Incomplete reasoning trace detected - missing closing tags');
87
+ }
88
+
89
  // If no patterns match, return original text as answer
90
  return {
91
  reasoning: null,