From 700d8a3245f1133c37e035039e511a1e5dce1a5d Mon Sep 17 00:00:00 2001 From: sigoden Date: Mon, 3 Feb 2025 22:35:01 +0800 Subject: feat: strip reasoning contents (#1141) --- assets/arena.html | 22 +++++++++++++++++++++- assets/playground.html | 22 +++++++++++++++++++++- 2 files changed, 42 insertions(+), 2 deletions(-) (limited to 'assets') diff --git a/assets/arena.html b/assets/arena.html index 31973eb..2296de2 100644 --- a/assets/arena.html +++ b/assets/arena.html @@ -870,6 +870,7 @@ }); } } + sanitizeMessages(messages); const body = { model: chat.model, messages: messages, @@ -991,6 +992,20 @@ }); } + function sanitizeMessages(messages) { + let messagesLen = messages.length; + for (let i = 0; i < messagesLen; i++) { + const message = messages[i]; + if (typeof message.content === "string" && message.role === "assistant" && i !== messagesLen - 1) { + message.content = stripThinkTag(message.content); + } + } + } + + function stripThinkTag(text) { + return text.replace(/^\s*([\s\S]*?)<\/think>(\s*|$)/g, '') + } + function setupMarked() { const renderer = { code({ text, lang }) { @@ -1013,7 +1028,12 @@ name: 'think', level: 'block', start(src) { - return src.indexOf(''); + const match = /^(\s*)/.exec(src); + if (match) { + return match[1].length + } else { + return -1; + } }, tokenizer(src, tokens) { const rule = /^\s*([\s\S]*?)(<\/think>|$)/; diff --git a/assets/playground.html b/assets/playground.html index d038bd1..06e2e62 100644 --- a/assets/playground.html +++ b/assets/playground.html @@ -1298,6 +1298,7 @@ messages = [...promptMessages, ...messages]; } } + sanitizeMessages(messages); const body = { model: this.settings.model, messages: messages, @@ -1458,6 +1459,20 @@ return { system: prompt, cases: [] } } + function sanitizeMessages(messages) { + let messagesLen = messages.length; + for (let i = 0; i < messagesLen; i++) { + const message = messages[i]; + if (typeof message.content === "string" && message.role === "assistant" && i !== messagesLen - 1) { + message.content = stripThinkTag(message.content); + } + } + } + + function stripThinkTag(text) { + return text.replace(/^\s*([\s\S]*?)<\/think>(\s*|$)/g, '') + } + function convertImageToDataURL(imageFile) { return new Promise((resolve, reject) => { if (!imageFile) { @@ -1494,7 +1509,12 @@ name: 'think', level: 'block', start(src) { - return src.indexOf(''); + const match = /^(\s*)/.exec(src); + if (match) { + return match[1].length + } else { + return -1; + } }, tokenizer(src, tokens) { const rule = /^\s*([\s\S]*?)(<\/think>|$)/; -- cgit v1.2.3