diff --git a/searx/webapp.py b/searx/webapp.py index 3c246ab1a..60276c123 100755 --- a/searx/webapp.py +++ b/searx/webapp.py @@ -1291,7 +1291,7 @@ let sentences=[] function modal_open(url, num) { if(lock_chat==1) return; - let article; + prev_chat = document.getElementById('chat_talk').innerHTML; if(num == 'pdf') { document.getElementById('chat_talk').innerHTML = prev_chat+'
'+'打开链接'+''+ 'PDF' +''+"
";} else{ document.getElementById('chat_talk').innerHTML = prev_chat+'
'+'打开链接'+''+ String(num) +''+"
";} @@ -1507,113 +1507,117 @@ function modal_open(url, num) resolve("success"); } - }) - }).then( - () => { - fulltext = article.textContent; - fulltext = fulltext.replaceAll("\n\n","\n").replaceAll("\n\n","\n"); - const delimiter = /[?!;\?\n。;!………]/g - fulltext = fulltext.split(delimiter); - fulltext = fulltext.filter((item) => { - // 使用正则表达式匹配仅由数字、逗号和空格组成的字符串 - const regex = /^[0-9,\s]+$/; - return !regex.test(item); - }); - fulltext = fulltext.filter(function(item) { - return item && item.trim(); // 去掉空值和空格 - }); - optkeytext = { - method: "POST", - headers: headers, - body: JSON.stringify({'text':fulltext.join("\n")}) - }; - fetchRetry('https://search.kg/keytext',3,optkeytext) - .then(response => response.json()) - .then(data => - { - keytextres = unique(data); - - promptWebpage = '网页标题:'+ article.title +'\n'+'网页布局:\n' - for (el in modalele) + }).then( + () => { + fulltext = article.textContent; + fulltext = fulltext.replaceAll("\n\n","\n").replaceAll("\n\n","\n"); + const delimiter = /[?!;\?\n。;!………]/g + fulltext = fulltext.split(delimiter); + fulltext = fulltext.filter((item) => { + // 使用正则表达式匹配仅由数字、逗号和空格组成的字符串 + const regex = /^[0-9,\s]+$/; + return !regex.test(item); + }); + fulltext = fulltext.filter(function(item) { + return item && item.trim(); // 去掉空值和空格 + }); + optkeytext = { + method: "POST", + headers: headers, + body: JSON.stringify({'text':fulltext.join("\n")}) + }; + fetchRetry('https://search.kg/keytext',3,optkeytext) + .then(response => response.json()) + .then(data => { - if((promptWebpage + modalele[el] + '\n').length <400) - promptWebpage = promptWebpage + modalele[el] + '\n'; - } - promptWebpage = promptWebpage +'网页内容:\n' - keySentencesCount = 0; - for (st in keytextres) - { - if((promptWebpage + keytextres[st] + '\n').length <1200) - promptWebpage = promptWebpage + keytextres[st] + '\n'; - keySentencesCount = keySentencesCount+1; - } - promptWeb = [{'role':'assistant','content':promptWebpage},{'role':'user','content':'总结网页内容,发表带emoji的评论'}] - const options = { - method: "POST", - headers: headers, - body: b64EncodeUnicode( JSON.stringify({ - "messages": promptWeb.concat(add_system), - "max_tokens": 1000, - "temperature": 0.9, - "top_p": 1, - "frequency_penalty": 0, - "presence_penalty": 0, - "stream": true - }) ) - }; - - chatTemp = "" - text_offset = -1; - prev_chat = document.getElementById('chat_talk').innerHTML; - - fetch("https://search.kg/completions", options) - .then((response) => { - const reader = response.body.getReader(); - let result = ''; - let half = ''; - reader.read().then(function processText({ done, value }) { - if (done) return; - const text = new TextDecoder('utf-8').decode(value); - text.trim().split('\n').forEach(function(v) { - try{document.querySelector("#chat_talk").scrollTop = document.querySelector("#chat_talk").scrollHeight}catch(e){} - result = '' - if(v.length>6) result = v.slice(6); - if(result == "[DONE]") - { - lock_chat=0 - return; - } - let choices; - try - { - try{choices=JSON.parse(half+result)['choices'];half = '';} - catch(e){choices=JSON.parse(result)['choices'];half = '';} - }catch(e){half+=result} - if(choices && choices.length>0 && choices[0].delta.content) - { - chatTemp+=choices[0].delta.content - } - chatTemp=chatTemp.replaceAll("\n\n","\n").replaceAll("\n\n","\n") - document.querySelector("#prompt").innerHTML=""; - markdownToHtml(beautify(chatTemp), document.querySelector("#prompt")) - document.getElementById('chat_talk').innerHTML = prev_chat+'
'+document.querySelector("#prompt").innerHTML+"
"; - + keytextres = unique(data); + + promptWebpage = '网页标题:'+ article.title +'\n'+'网页布局:\n' + for (el in modalele) + { + if((promptWebpage + modalele[el] + '\n').length <400) + promptWebpage = promptWebpage + modalele[el] + '\n'; + } + promptWebpage = promptWebpage +'网页内容:\n' + keySentencesCount = 0; + for (st in keytextres) + { + if((promptWebpage + keytextres[st] + '\n').length <1200) + promptWebpage = promptWebpage + keytextres[st] + '\n'; + keySentencesCount = keySentencesCount+1; + } + promptWeb = [{'role':'assistant','content':promptWebpage},{'role':'user','content':'总结网页内容,发表带emoji的评论'}] + const options = { + method: "POST", + headers: headers, + body: b64EncodeUnicode( JSON.stringify({ + "messages": promptWeb.concat(add_system), + "max_tokens": 1000, + "temperature": 0.9, + "top_p": 1, + "frequency_penalty": 0, + "presence_penalty": 0, + "stream": true + }) ) + }; + + chatTemp = "" + text_offset = -1; + prev_chat = document.getElementById('chat_talk').innerHTML; + + fetch("https://search.kg/completions", options) + .then((response) => { + const reader = response.body.getReader(); + let result = ''; + let half = ''; + reader.read().then(function processText({ done, value }) { + if (done) return; + const text = new TextDecoder('utf-8').decode(value); + text.trim().split('\n').forEach(function(v) { + try{document.querySelector("#chat_talk").scrollTop = document.querySelector("#chat_talk").scrollHeight}catch(e){} + result = '' + if(v.length>6) result = v.slice(6); + if(result == "[DONE]") + { + lock_chat=0 + return; + } + let choices; + try + { + try{choices=JSON.parse(half+result)['choices'];half = '';} + catch(e){choices=JSON.parse(result)['choices'];half = '';} + }catch(e){half+=result} + if(choices && choices.length>0 && choices[0].delta.content) + { + chatTemp+=choices[0].delta.content + } + chatTemp=chatTemp.replaceAll("\n\n","\n").replaceAll("\n\n","\n") + document.querySelector("#prompt").innerHTML=""; + markdownToHtml(beautify(chatTemp), document.querySelector("#prompt")) + document.getElementById('chat_talk').innerHTML = prev_chat+'
'+document.querySelector("#prompt").innerHTML+"
"; + + }) + return reader.read().then(processText); + }); }) - return reader.read().then(processText); + .catch((error) => { + console.error('Error:', error); }); - }) - .catch((error) => { - console.error('Error:', error); - }); - - - - - }) + + + + + }) + - - + + }, + error => { + console.log(error); + } + ); }, error => { console.log(error); diff --git a/searx/webapp1.py b/searx/webapp1.py index 3c246ab1a..60276c123 100644 --- a/searx/webapp1.py +++ b/searx/webapp1.py @@ -1291,7 +1291,7 @@ let sentences=[] function modal_open(url, num) { if(lock_chat==1) return; - let article; + prev_chat = document.getElementById('chat_talk').innerHTML; if(num == 'pdf') { document.getElementById('chat_talk').innerHTML = prev_chat+'
'+'打开链接'+''+ 'PDF' +''+"
";} else{ document.getElementById('chat_talk').innerHTML = prev_chat+'
'+'打开链接'+''+ String(num) +''+"
";} @@ -1507,113 +1507,117 @@ function modal_open(url, num) resolve("success"); } - }) - }).then( - () => { - fulltext = article.textContent; - fulltext = fulltext.replaceAll("\n\n","\n").replaceAll("\n\n","\n"); - const delimiter = /[?!;\?\n。;!………]/g - fulltext = fulltext.split(delimiter); - fulltext = fulltext.filter((item) => { - // 使用正则表达式匹配仅由数字、逗号和空格组成的字符串 - const regex = /^[0-9,\s]+$/; - return !regex.test(item); - }); - fulltext = fulltext.filter(function(item) { - return item && item.trim(); // 去掉空值和空格 - }); - optkeytext = { - method: "POST", - headers: headers, - body: JSON.stringify({'text':fulltext.join("\n")}) - }; - fetchRetry('https://search.kg/keytext',3,optkeytext) - .then(response => response.json()) - .then(data => - { - keytextres = unique(data); - - promptWebpage = '网页标题:'+ article.title +'\n'+'网页布局:\n' - for (el in modalele) + }).then( + () => { + fulltext = article.textContent; + fulltext = fulltext.replaceAll("\n\n","\n").replaceAll("\n\n","\n"); + const delimiter = /[?!;\?\n。;!………]/g + fulltext = fulltext.split(delimiter); + fulltext = fulltext.filter((item) => { + // 使用正则表达式匹配仅由数字、逗号和空格组成的字符串 + const regex = /^[0-9,\s]+$/; + return !regex.test(item); + }); + fulltext = fulltext.filter(function(item) { + return item && item.trim(); // 去掉空值和空格 + }); + optkeytext = { + method: "POST", + headers: headers, + body: JSON.stringify({'text':fulltext.join("\n")}) + }; + fetchRetry('https://search.kg/keytext',3,optkeytext) + .then(response => response.json()) + .then(data => { - if((promptWebpage + modalele[el] + '\n').length <400) - promptWebpage = promptWebpage + modalele[el] + '\n'; - } - promptWebpage = promptWebpage +'网页内容:\n' - keySentencesCount = 0; - for (st in keytextres) - { - if((promptWebpage + keytextres[st] + '\n').length <1200) - promptWebpage = promptWebpage + keytextres[st] + '\n'; - keySentencesCount = keySentencesCount+1; - } - promptWeb = [{'role':'assistant','content':promptWebpage},{'role':'user','content':'总结网页内容,发表带emoji的评论'}] - const options = { - method: "POST", - headers: headers, - body: b64EncodeUnicode( JSON.stringify({ - "messages": promptWeb.concat(add_system), - "max_tokens": 1000, - "temperature": 0.9, - "top_p": 1, - "frequency_penalty": 0, - "presence_penalty": 0, - "stream": true - }) ) - }; - - chatTemp = "" - text_offset = -1; - prev_chat = document.getElementById('chat_talk').innerHTML; - - fetch("https://search.kg/completions", options) - .then((response) => { - const reader = response.body.getReader(); - let result = ''; - let half = ''; - reader.read().then(function processText({ done, value }) { - if (done) return; - const text = new TextDecoder('utf-8').decode(value); - text.trim().split('\n').forEach(function(v) { - try{document.querySelector("#chat_talk").scrollTop = document.querySelector("#chat_talk").scrollHeight}catch(e){} - result = '' - if(v.length>6) result = v.slice(6); - if(result == "[DONE]") - { - lock_chat=0 - return; - } - let choices; - try - { - try{choices=JSON.parse(half+result)['choices'];half = '';} - catch(e){choices=JSON.parse(result)['choices'];half = '';} - }catch(e){half+=result} - if(choices && choices.length>0 && choices[0].delta.content) - { - chatTemp+=choices[0].delta.content - } - chatTemp=chatTemp.replaceAll("\n\n","\n").replaceAll("\n\n","\n") - document.querySelector("#prompt").innerHTML=""; - markdownToHtml(beautify(chatTemp), document.querySelector("#prompt")) - document.getElementById('chat_talk').innerHTML = prev_chat+'
'+document.querySelector("#prompt").innerHTML+"
"; - + keytextres = unique(data); + + promptWebpage = '网页标题:'+ article.title +'\n'+'网页布局:\n' + for (el in modalele) + { + if((promptWebpage + modalele[el] + '\n').length <400) + promptWebpage = promptWebpage + modalele[el] + '\n'; + } + promptWebpage = promptWebpage +'网页内容:\n' + keySentencesCount = 0; + for (st in keytextres) + { + if((promptWebpage + keytextres[st] + '\n').length <1200) + promptWebpage = promptWebpage + keytextres[st] + '\n'; + keySentencesCount = keySentencesCount+1; + } + promptWeb = [{'role':'assistant','content':promptWebpage},{'role':'user','content':'总结网页内容,发表带emoji的评论'}] + const options = { + method: "POST", + headers: headers, + body: b64EncodeUnicode( JSON.stringify({ + "messages": promptWeb.concat(add_system), + "max_tokens": 1000, + "temperature": 0.9, + "top_p": 1, + "frequency_penalty": 0, + "presence_penalty": 0, + "stream": true + }) ) + }; + + chatTemp = "" + text_offset = -1; + prev_chat = document.getElementById('chat_talk').innerHTML; + + fetch("https://search.kg/completions", options) + .then((response) => { + const reader = response.body.getReader(); + let result = ''; + let half = ''; + reader.read().then(function processText({ done, value }) { + if (done) return; + const text = new TextDecoder('utf-8').decode(value); + text.trim().split('\n').forEach(function(v) { + try{document.querySelector("#chat_talk").scrollTop = document.querySelector("#chat_talk").scrollHeight}catch(e){} + result = '' + if(v.length>6) result = v.slice(6); + if(result == "[DONE]") + { + lock_chat=0 + return; + } + let choices; + try + { + try{choices=JSON.parse(half+result)['choices'];half = '';} + catch(e){choices=JSON.parse(result)['choices'];half = '';} + }catch(e){half+=result} + if(choices && choices.length>0 && choices[0].delta.content) + { + chatTemp+=choices[0].delta.content + } + chatTemp=chatTemp.replaceAll("\n\n","\n").replaceAll("\n\n","\n") + document.querySelector("#prompt").innerHTML=""; + markdownToHtml(beautify(chatTemp), document.querySelector("#prompt")) + document.getElementById('chat_talk').innerHTML = prev_chat+'
'+document.querySelector("#prompt").innerHTML+"
"; + + }) + return reader.read().then(processText); + }); }) - return reader.read().then(processText); + .catch((error) => { + console.error('Error:', error); }); - }) - .catch((error) => { - console.error('Error:', error); - }); - - - - - }) + + + + + }) + - - + + }, + error => { + console.log(error); + } + ); }, error => { console.log(error);