Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
44 changes: 44 additions & 0 deletions web-app/src/lib/__tests__/messages.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -407,6 +407,50 @@ describe('CompletionMessagesBuilder', () => {
const result = builder.getMessages()
expect(result[0].content).toBe('Clean answer')
})

it('should remove analysis channel reasoning content', () => {
const builder = new CompletionMessagesBuilder([])

builder.addAssistantMessage(
'<|channel|>analysis<|message|>Let me analyze this step by step...<|start|>assistant<|channel|>final<|message|>The final answer is 42.'
)

const result = builder.getMessages()
expect(result[0].content).toBe('The final answer is 42.')
})

it('should handle analysis channel without final message', () => {
const builder = new CompletionMessagesBuilder([])

builder.addAssistantMessage(
'<|channel|>analysis<|message|>Only analysis content here...'
)

const result = builder.getMessages()
expect(result[0].content).toBe('<|channel|>analysis<|message|>Only analysis content here...')
})

it('should handle analysis channel with multiline content', () => {
const builder = new CompletionMessagesBuilder([])

builder.addAssistantMessage(
'<|channel|>analysis<|message|>Step 1: First analysis\nStep 2: Second analysis\nStep 3: Final analysis<|start|>assistant<|channel|>final<|message|>Based on my analysis, here is the result.'
)

const result = builder.getMessages()
expect(result[0].content).toBe('Based on my analysis, here is the result.')
})

it('should handle both think and analysis channel tags', () => {
const builder = new CompletionMessagesBuilder([])

builder.addAssistantMessage(
'<think>Initial thought</think><|channel|>analysis<|message|>Detailed analysis<|start|>assistant<|channel|>final<|message|>Final response'
)

const result = builder.getMessages()
expect(result[0].content).toBe('Final response')
})
})

describe('integration tests', () => {
Expand Down
9 changes: 9 additions & 0 deletions web-app/src/lib/messages.ts
Original file line number Diff line number Diff line change
Expand Up @@ -102,6 +102,15 @@ export class CompletionMessagesBuilder {
content = content.slice(splitIndex).trim()
}
}
if (content.includes('<|channel|>analysis<|message|>')) {
const match = content.match(
/<\|channel\|>analysis<\|message\|>([\s\S]*?)<\|start\|>assistant<\|channel\|>final<\|message\|>/
)
if (match?.index !== undefined) {
const splitIndex = match.index + match[0].length
content = content.slice(splitIndex).trim()
}
}
return content
}
}
Loading