Files
ST-Amily2-Chat-Optimisation/core/rag-processor.js
2025-07-23 06:23:50 +08:00

2 lines
24 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
'use strict';const _0x3f5590=_0x555a;(function(_0x4c94f3,_0x492e3c){const _0xcffccf=_0x555a,_0x3ff047=_0x4c94f3();while(!![]){try{const _0x4203ef=-parseInt(_0xcffccf(0x1a9))/0x1+parseInt(_0xcffccf(0x15b))/0x2+parseInt(_0xcffccf(0x1ae))/0x3+parseInt(_0xcffccf(0x158))/0x4+parseInt(_0xcffccf(0x1e1))/0x5+-parseInt(_0xcffccf(0x197))/0x6*(-parseInt(_0xcffccf(0x1a8))/0x7)+-parseInt(_0xcffccf(0x1b8))/0x8*(parseInt(_0xcffccf(0x1a1))/0x9);if(_0x4203ef===_0x492e3c)break;else _0x3ff047['push'](_0x3ff047['shift']());}catch(_0x177488){_0x3ff047['push'](_0x3ff047['shift']());}}}(_0x39cc,0x1f6b5));import{extension_prompt_roles,setExtensionPrompt}from'/script.js';function _0x555a(_0x32e683,_0x365ee1){const _0x39cc57=_0x39cc();return _0x555a=function(_0x555abe,_0x2df5a6){_0x555abe=_0x555abe-0x152;let _0x48ced7=_0x39cc57[_0x555abe];return _0x48ced7;},_0x555a(_0x32e683,_0x365ee1);}import*as _0x518e01 from'./utils/context-utils.js';import{defaultSettings as _0x338568}from'./rag-settings.js';const MODULE_NAME='hanlinyuan-rag-core',OFFICIAL_REARRANGE_CHAT_FUNCTION_NAME=_0x3f5590(0x1af);let context=null,settings=null;export{initialize,getSettings,saveSettings,resetSettings,testApiConnection,fetchEmbeddingModels,fetchRerankModels,getVectorCount,purgeStorage,getMessagesForCondensation,processCondensation,ingestTextToHanlinyuan,getCollectionId};function _0x39cc(){const _0x89c7d7=['join','queryMessageCount','[翰林院-日志]\x20没有需要插入的文本块操作完成。','获取模型列表失败\x20(','replace','[翰林院-日志]\x20清空宝库API错误:','[翰林院]\x20处理外部文书时发生错误:','azure','[翰林院-日志]\x20正在为\x20','150szBETd','min','embedding','\x20条结果。','mes','top_n','rerank','凝识之权未开启','url','floor','354852TRFErV','\x20个文本块获取向量...','saveSettingsDebounced','retrieval','/api/vector/purge','GET','enabled','68054pwCbWt','206795yODbKk','[翰林院-日志]\x20开始向量查询\x20(采用最终API交互模式)...','/v1/embeddings','reduce','object','377328hqlfDl','vectors_rearrangeChat','[翰林院-Rerank]\x20外部Rerank失败将仅使用内部加权。','getContext','API\x20URL\x20或\x20Key\x20未提供。','外部Rerank完成','charCodeAt','position','忆识存入API错误\x20','maxResults','96hCjLql','application/json','api-key','notify','log','Rerank模型API的响应格式无效:\x20未找到\x20\x27data\x27\x20数组。','HANLINYUAN_RAG','Bearer\x20','now','/v1','rerank_score','[翰林院-日志]\x20开始向量插入...','lorebook','[翰林院-日志]\x20/api/vector/purge\x20响应状态:\x20','original_index','quiet','length','[翰林院-日志]\x20/api/vector/list\x20响应状态:\x20','isArray','depth_role','[翰林院-日志]\x20清空宝库API调用成功。','/embeddings','final_score','condensation','[翰林院]\x20未能获取SillyTavern上下文初始化失败。','endsWith','extensionSettings','embeddings','warning','webllm','POST','stringify','hashes','[翰林院-日志]\x20开始获取向量总数...','status','forEach','[翰林院-日志]\x20获取向量列表API错误:','embeddingModel','info','/v1/rerank','json','319565EYlgby','toString','[翰林院-日志]\x20/api/vector/list\x20响应内容:','map','[翰林院-日志]\x20发送到\x20/api/vector/list\x20的请求体:','/api/vector/insert','message','is_user','data','push','翰林院忆识核心已启动\x20(V5.1-借壳上市版),已注册全局函数:\x20','[翰林院-Rerank]\x20元数据加权排序完成。','856728awqjqz','source','神力获取失败\x20','323406TavmOi','metadata','unknown','filter','manual','matchThreshold','trim','[翰林院-日志]\x20宝库查询API错误:','relevance_score','[翰林院-日志]\x20/api/vector/insert\x20响应状态:\x20','error','findIndex','[翰林院-日志]\x20发送到\x20/api/vector/query\x20的请求体:','Rerank失败:\x20','/rerank','substring','):\x20','getRequestHeaders','batchSize','\x20获取模型列表...','/v1/models','depth','[翰林院-日志]\x20清空目标集合ID:\x20','advanced','openai','model','function','[翰林院-日志]\x20查询目标集合ID:\x20','slice','text','injection','[翰林院-Rerank]\x20开始外部API重排序...','max','No\x20messages\x20to\x20process.','send_date','宝库查询API错误\x20','{{text}}','/api/vector/query','Rerank\x20API\x20请求失败\x20(','chat','\x20个向量。','测试连接','/api/vector/list','items','Authorization','sort','[翰林院-Rerank]\x20正在从\x20','count','核心未初始化','https://api.openai.com','toISOString'];_0x39cc=function(){return _0x89c7d7;};return _0x39cc();}function initialize(){const _0x5a5be9=_0x3f5590;context=SillyTavern[_0x5a5be9(0x1b1)]();if(!context){console[_0x5a5be9(0x165)](_0x5a5be9(0x1d0));return;}settings=getSettings();const _0x487807=window[OFFICIAL_REARRANGE_CHAT_FUNCTION_NAME];typeof _0x487807===_0x5a5be9(0x175)?(window[OFFICIAL_REARRANGE_CHAT_FUNCTION_NAME]=async function(..._0x201182){await rearrangeChat(..._0x201182),await _0x487807(..._0x201182);},console['log']('翰林院忆识核心已启动\x20(V5.1-和平共存版),已代理\x20'+OFFICIAL_REARRANGE_CHAT_FUNCTION_NAME)):(window[OFFICIAL_REARRANGE_CHAT_FUNCTION_NAME]=rearrangeChat,console[_0x5a5be9(0x1bc)](_0x5a5be9(0x156)+OFFICIAL_REARRANGE_CHAT_FUNCTION_NAME));}async function ingestTextToHanlinyuan(_0xd659db,_0x1401ca=_0x3f5590(0x15f),_0x58dd10=null){const _0x5cbede=_0x3f5590;if(!settings)return{'success':![],'error':_0x5cbede(0x18b)};try{const _0x258faa=splitIntoChunks(_0xd659db)[_0x5cbede(0x1e4)](_0x39ba94=>{const _0x2b1564=_0x5cbede,_0x1693a8={'source':_0x1401ca,'timestamp':new Date()['toISOString']()};return _0x1401ca===_0x2b1564(0x1c4)&&_0x58dd10&&(_0x1693a8['entry']=_0x58dd10),{'text':_0x39ba94,'metadata':_0x1693a8};});if(_0x258faa[_0x5cbede(0x1c8)]===0x0)return{'success':!![]};const _0xefe218=await insertVectors(_0x258faa);return{'success':!![],'count':_0xefe218[_0x5cbede(0x18a)]};}catch(_0x2da01f){return console[_0x5cbede(0x165)](_0x5cbede(0x194),_0x2da01f),{'success':![],'error':_0x2da01f[_0x5cbede(0x152)]};}}function getSettings(){const _0x69186a=_0x3f5590;if(!context||!context[_0x69186a(0x1d2)])return structuredClone(_0x338568);let _0x2d28b4=context[_0x69186a(0x1d2)][MODULE_NAME];!_0x2d28b4&&(_0x2d28b4={},context['extensionSettings'][MODULE_NAME]=_0x2d28b4);for(const _0x28fdfb in _0x338568){if(_0x2d28b4[_0x28fdfb]===undefined)_0x2d28b4[_0x28fdfb]=structuredClone(_0x338568[_0x28fdfb]);else{if(typeof _0x338568[_0x28fdfb]===_0x69186a(0x1ad)&&!Array[_0x69186a(0x1ca)](_0x338568[_0x28fdfb])&&_0x338568[_0x28fdfb]!==null)for(const _0x2a4615 in _0x338568[_0x28fdfb]){_0x2d28b4[_0x28fdfb][_0x2a4615]===undefined&&(_0x2d28b4[_0x28fdfb][_0x2a4615]=_0x338568[_0x28fdfb][_0x2a4615]);}}}return _0x2d28b4;}function saveSettings(){const _0x526e55=_0x3f5590;if(context)context[_0x526e55(0x1a3)]();}function resetSettings(){context&&(context['extensionSettings'][MODULE_NAME]=structuredClone(_0x338568),saveSettings());}function showNotification(_0x19244a,_0x23a9f4=_0x3f5590(0x1de)){toastr[_0x23a9f4](_0x19244a);}function splitIntoChunks(_0x2a7a38){const _0x180699=_0x3f5590,{chunkSize:_0x32b849,overlap:_0xe6f3c7}=settings[_0x180699(0x172)],_0x4cbe8c=[];if(!_0x2a7a38||_0x32b849<=0x0)return _0x4cbe8c;let _0x2da619=0x0;while(_0x2da619<_0x2a7a38['length']){const _0x5c17b8=Math[_0x180699(0x198)](_0x2da619+_0x32b849,_0x2a7a38[_0x180699(0x1c8)]);_0x4cbe8c['push'](_0x2a7a38[_0x180699(0x16a)](_0x2da619,_0x5c17b8)),_0x2da619+=_0x32b849-_0xe6f3c7;}return _0x4cbe8c;}import{getCollectionId}from'./utils/context-utils.js';function generateHash(_0x32d809){const _0x2e212c=_0x3f5590;let _0x2fbe5e=0x0;for(let _0x540460=0x0;_0x540460<_0x32d809[_0x2e212c(0x1c8)];_0x540460++){const _0x2b272b=_0x32d809[_0x2e212c(0x1b4)](_0x540460);_0x2fbe5e=(_0x2fbe5e<<0x5)-_0x2fbe5e+_0x2b272b,_0x2fbe5e=_0x2fbe5e&_0x2fbe5e;}return Math['abs'](_0x2fbe5e)[_0x2e212c(0x1e2)](0x24);}function getSanitizedBaseUrl(_0x4c41d0){const _0x482359=_0x3f5590;let _0x568e98=_0x4c41d0[_0x482359(0x161)]();return _0x568e98[_0x482359(0x1d1)]('/')&&(_0x568e98=_0x568e98[_0x482359(0x177)](0x0,-0x1)),_0x568e98['endsWith'](_0x482359(0x1c1))&&(_0x568e98=_0x568e98[_0x482359(0x177)](0x0,-0x3)),_0x568e98[_0x482359(0x1d1)](_0x482359(0x1cd))&&(_0x568e98=_0x568e98[_0x482359(0x177)](0x0,-0xb)),_0x568e98;}async function fetchEmbeddingModels(){const _0x2ec184=_0x3f5590,{apiKey:_0x39b323}=settings['retrieval'],_0x5a695d=getApiEndpointUrl(!![]);if(!_0x5a695d||!_0x39b323)throw new Error(_0x2ec184(0x1b2));const _0x432f3d=getSanitizedBaseUrl(_0x5a695d),_0x22e5ea=_0x432f3d+_0x2ec184(0x16f);console['log']('[翰林院]\x20正在从\x20'+_0x22e5ea+_0x2ec184(0x16e));const _0xc47b98=await fetch(_0x22e5ea,{'method':_0x2ec184(0x1a6),'headers':getApiHeaders()});if(!_0xc47b98['ok']){const _0x2aa617=await _0xc47b98[_0x2ec184(0x178)]();throw new Error(_0x2ec184(0x191)+_0xc47b98[_0x2ec184(0x1da)]+_0x2ec184(0x16b)+_0x2aa617);}const _0x24e182=await _0xc47b98[_0x2ec184(0x1e0)]();if(!_0x24e182[_0x2ec184(0x154)]||!Array[_0x2ec184(0x1ca)](_0x24e182['data']))throw new Error('模型API的响应格式无效:\x20未找到\x20\x27data\x27\x20数组。');return _0x24e182[_0x2ec184(0x154)][_0x2ec184(0x1e4)](_0x5a1bd3=>_0x5a1bd3['id'])['sort']();}function getRerankBaseUrl(_0x3207ea){const _0x520c5a=_0x3f5590;let _0x3cfa26=_0x3207ea['trim']();return _0x3cfa26['endsWith']('/')&&(_0x3cfa26=_0x3cfa26[_0x520c5a(0x177)](0x0,-0x1)),_0x3cfa26['endsWith'](_0x520c5a(0x1c1))&&(_0x3cfa26=_0x3cfa26[_0x520c5a(0x177)](0x0,-0x3)),_0x3cfa26[_0x520c5a(0x1d1)](_0x520c5a(0x169))&&(_0x3cfa26=_0x3cfa26['slice'](0x0,-0x7)),_0x3cfa26;}async function fetchRerankModels(){const _0x52979f=_0x3f5590,{url:_0x14d217,apiKey:_0x109aa0}=settings[_0x52979f(0x19d)];if(!_0x14d217||!_0x109aa0)throw new Error('Rerank\x20API\x20URL\x20或\x20Key\x20未提供。');const _0x18b5c6=getRerankBaseUrl(_0x14d217),_0x478121=_0x18b5c6+_0x52979f(0x16f);console[_0x52979f(0x1bc)](_0x52979f(0x189)+_0x478121+_0x52979f(0x16e));const _0x29358a=await fetch(_0x478121,{'method':'GET','headers':{'Authorization':_0x52979f(0x1bf)+_0x109aa0}});if(!_0x29358a['ok']){const _0x3b29e9=await _0x29358a[_0x52979f(0x178)]();throw new Error('获取Rerank模型列表失败\x20('+_0x29358a[_0x52979f(0x1da)]+_0x52979f(0x16b)+_0x3b29e9);}const _0x2811a0=await _0x29358a['json']();if(!_0x2811a0['data']||!Array['isArray'](_0x2811a0['data']))throw new Error(_0x52979f(0x1bd));return _0x2811a0[_0x52979f(0x154)]['map'](_0x348bb7=>_0x348bb7['id'])[_0x52979f(0x188)]();}function getApiEndpointUrl(_0x258970=![]){const _0x7f093a=_0x3f5590,{apiEndpoint:_0x51366f,customApiUrl:_0x2a8a0e}=settings[_0x7f093a(0x1a4)];let _0x35da17;switch(_0x51366f){case _0x7f093a(0x173):_0x35da17=_0x7f093a(0x18c);break;case'azure':case'custom':_0x35da17=_0x2a8a0e;break;default:_0x35da17=_0x7f093a(0x18c);break;}if(_0x258970)return _0x35da17;return getSanitizedBaseUrl(_0x35da17)+_0x7f093a(0x1ab);}function getApiHeaders(){const _0x3352aa=_0x3f5590,_0x324e88={'Content-Type':_0x3352aa(0x1b9)},{apiKey:_0x2d73f3,apiEndpoint:_0x4b03d7}=settings['retrieval'];switch(_0x4b03d7){case'openai':case'custom':_0x324e88[_0x3352aa(0x187)]=_0x3352aa(0x1bf)+_0x2d73f3;break;case _0x3352aa(0x195):_0x324e88[_0x3352aa(0x1ba)]=_0x2d73f3;break;}return _0x324e88;}async function getEmbeddings(_0x21dde){const _0x285755=_0x3f5590;if(!settings[_0x285755(0x1a4)]['apiKey'])throw new Error('请先配置API\x20Key');const _0x3d1a07=getApiEndpointUrl(),_0x496a89=getApiHeaders(),_0x3ce888=settings['retrieval'][_0x285755(0x1dd)],_0x56dd75=settings[_0x285755(0x1a4)][_0x285755(0x16d)]||0x5,_0xb384b5=[];for(let _0x5f4c29=0x0;_0x5f4c29<_0x21dde[_0x285755(0x1c8)];_0x5f4c29+=_0x56dd75){const _0x4998e3=_0x21dde['slice'](_0x5f4c29,_0x5f4c29+_0x56dd75),_0x5674d1=await fetch(_0x3d1a07,{'method':_0x285755(0x1d6),'headers':_0x496a89,'body':JSON[_0x285755(0x1d7)]({'input':_0x4998e3,'model':_0x3ce888})});if(!_0x5674d1['ok']){const _0x298606=await _0x5674d1['text']();throw new Error(_0x285755(0x15a)+_0x5674d1[_0x285755(0x1da)]+':\x20'+_0x298606);}const _0x269d90=await _0x5674d1[_0x285755(0x1e0)]();_0xb384b5[_0x285755(0x155)](..._0x269d90['data'][_0x285755(0x1e4)](_0x9cdabb=>_0x9cdabb[_0x285755(0x199)])),_0x5f4c29+_0x56dd75<_0x21dde[_0x285755(0x1c8)]&&await new Promise(_0x4ba547=>setTimeout(_0x4ba547,0xc8));}return _0xb384b5;}async function queryVectors(_0x276186){const _0x20c2af=_0x3f5590;console[_0x20c2af(0x1bc)](_0x20c2af(0x1aa));const _0xa4e144=getCollectionId();console[_0x20c2af(0x1bc)](_0x20c2af(0x176)+_0xa4e144);const _0x36e4ba=(await getEmbeddings([_0x276186]))[0x0],_0x4430aa={'collectionId':_0xa4e144,'searchText':_0x276186,'topK':settings['advanced'][_0x20c2af(0x1b7)],'threshold':settings[_0x20c2af(0x172)][_0x20c2af(0x160)],'source':_0x20c2af(0x1d5),'embeddings':{[_0x276186]:_0x36e4ba}};console[_0x20c2af(0x1bc)](_0x20c2af(0x167),JSON['stringify'](_0x4430aa,null,0x2));const _0x9cf018=await fetch(_0x20c2af(0x180),{'method':'POST','headers':context[_0x20c2af(0x16c)](),'body':JSON[_0x20c2af(0x1d7)](_0x4430aa)});console['log']('[翰林院-日志]\x20/api/vector/query\x20响应状态:\x20'+_0x9cf018[_0x20c2af(0x1da)]);if(!_0x9cf018['ok']){const _0x44264f=await _0x9cf018[_0x20c2af(0x178)]();console[_0x20c2af(0x165)](_0x20c2af(0x162),_0x44264f);throw new Error(_0x20c2af(0x17e)+_0x9cf018['status']+':\x20'+_0x44264f);}const _0x418a47=await _0x9cf018[_0x20c2af(0x1e0)]();console['log']('[翰林院-日志]\x20/api/vector/query\x20响应内容:',_0x418a47);const _0x2a369e=_0x418a47[_0x20c2af(0x15c)]||_0x418a47['results']||_0x418a47[_0x20c2af(0x154)]||[];return console[_0x20c2af(0x1bc)]('[翰林院-日志]\x20查询成功返回\x20'+_0x2a369e[_0x20c2af(0x1c8)]+_0x20c2af(0x19a)),_0x2a369e;}async function insertVectors(_0x35684c){const _0x126ad3=_0x3f5590;console['log'](_0x126ad3(0x1c3));const _0x3fb5ff=getCollectionId();console[_0x126ad3(0x1bc)]('[翰林院-日志]\x20插入目标集合ID:\x20'+_0x3fb5ff);const _0x42f7b0=_0x35684c[_0x126ad3(0x1e4)](_0x24224d=>_0x24224d[_0x126ad3(0x178)]);if(_0x42f7b0[_0x126ad3(0x1c8)]===0x0)return console[_0x126ad3(0x1bc)](_0x126ad3(0x190)),{'success':!![],'count':0x0};console[_0x126ad3(0x1bc)](_0x126ad3(0x196)+_0x42f7b0[_0x126ad3(0x1c8)]+_0x126ad3(0x1a2));const _0x37723e=await getEmbeddings(_0x42f7b0);console[_0x126ad3(0x1bc)]('[翰林院-日志]\x20成功获取\x20'+_0x37723e[_0x126ad3(0x1c8)]+_0x126ad3(0x183));const _0xeb2818=_0x35684c[_0x126ad3(0x1e4)]((_0x2c94a2,_0x215c7f)=>({'hash':generateHash(_0x2c94a2[_0x126ad3(0x178)]+Date[_0x126ad3(0x1c0)]()+_0x215c7f),'text':_0x2c94a2[_0x126ad3(0x178)],'metadata':_0x2c94a2[_0x126ad3(0x15c)]||{'source':_0x126ad3(0x15d),'timestamp':new Date()[_0x126ad3(0x18d)]()}})),_0x45ebfe=_0xeb2818[_0x126ad3(0x1ac)]((_0x1502d6,_0x9f803c,_0x137d35)=>{const _0x41e0cc=_0x126ad3;return _0x1502d6[_0x9f803c[_0x41e0cc(0x178)]]=_0x37723e[_0x137d35],_0x1502d6;},{}),_0x8afd32={'collectionId':_0x3fb5ff,'items':_0xeb2818,'source':_0x126ad3(0x1d5),'embeddings':_0x45ebfe};console[_0x126ad3(0x1bc)]('[翰林院-日志]\x20发送到\x20/api/vector/insert\x20的请求体\x20(仅显示条目数):',{'collectionId':_0x8afd32['collectionId'],'source':_0x8afd32[_0x126ad3(0x159)],'itemCount':_0x8afd32[_0x126ad3(0x186)][_0x126ad3(0x1c8)],'embeddingCount':Object['keys'](_0x8afd32[_0x126ad3(0x1d3)])[_0x126ad3(0x1c8)]});const _0x563079=await fetch(_0x126ad3(0x1e6),{'method':_0x126ad3(0x1d6),'headers':context[_0x126ad3(0x16c)](),'body':JSON[_0x126ad3(0x1d7)](_0x8afd32)});console[_0x126ad3(0x1bc)](_0x126ad3(0x164)+_0x563079[_0x126ad3(0x1da)]);if(!_0x563079['ok']){const _0x44d351=await _0x563079['text']();console[_0x126ad3(0x165)]('[翰林院-日志]\x20忆识存入API错误:',_0x44d351);throw new Error(_0x126ad3(0x1b6)+_0x563079[_0x126ad3(0x1da)]+':\x20'+_0x44d351);}return console['log']('[翰林院-日志]\x20忆识存入API调用成功。'),{'success':!![],'count':_0xeb2818[_0x126ad3(0x1c8)]};}async function testApiConnection(){const _0x45d578=_0x3f5590;await getEmbeddings([_0x45d578(0x184)]);}async function getVectorCount(){const _0x4c9083=_0x3f5590;console[_0x4c9083(0x1bc)](_0x4c9083(0x1d9));const _0x41acec=getCollectionId();console[_0x4c9083(0x1bc)]('[翰林院-日志]\x20统计目标集合ID:\x20'+_0x41acec);const _0x328ab8={'collectionId':_0x41acec,'source':_0x4c9083(0x1d5),'embeddings':{}};console[_0x4c9083(0x1bc)](_0x4c9083(0x1e5),JSON[_0x4c9083(0x1d7)](_0x328ab8,null,0x2));const _0x5c2440=await fetch(_0x4c9083(0x185),{'method':_0x4c9083(0x1d6),'headers':context[_0x4c9083(0x16c)](),'body':JSON['stringify'](_0x328ab8)});console['log'](_0x4c9083(0x1c9)+_0x5c2440[_0x4c9083(0x1da)]);if(!_0x5c2440['ok']){const _0xd413ac=await _0x5c2440[_0x4c9083(0x178)]();return console[_0x4c9083(0x165)](_0x4c9083(0x1dc),_0xd413ac),0x0;}const _0x4edd6a=await _0x5c2440[_0x4c9083(0x1e0)]();console['log'](_0x4c9083(0x1e3),_0x4edd6a);let _0x5c68f8=0x0;if(Array['isArray'](_0x4edd6a))_0x5c68f8=_0x4edd6a[_0x4c9083(0x1c8)];else _0x4edd6a&&_0x4edd6a['hashes']&&(_0x5c68f8=_0x4edd6a[_0x4c9083(0x1d8)][_0x4c9083(0x1c8)]);return console['log']('[翰林院-日志]\x20统计成功向量总数:\x20'+_0x5c68f8),_0x5c68f8;}async function purgeStorage(){const _0x624315=_0x3f5590;console[_0x624315(0x1bc)]('[翰林院-日志]\x20开始清空宝库...');const _0x50fedd=getCollectionId();console[_0x624315(0x1bc)](_0x624315(0x171)+_0x50fedd);const _0x54fdd0={'collectionId':_0x50fedd};console[_0x624315(0x1bc)]('[翰林院-日志]\x20发送到\x20/api/vector/purge\x20的请求体:',JSON[_0x624315(0x1d7)](_0x54fdd0,null,0x2));const _0x161a3e=await fetch(_0x624315(0x1a5),{'method':_0x624315(0x1d6),'headers':context[_0x624315(0x16c)](),'body':JSON[_0x624315(0x1d7)](_0x54fdd0)});console[_0x624315(0x1bc)](_0x624315(0x1c5)+_0x161a3e['status']);if(!_0x161a3e['ok']){const _0x4daeab=await _0x161a3e[_0x624315(0x178)]();console['error'](_0x624315(0x193),_0x4daeab);}else console['log'](_0x624315(0x1cc));return _0x161a3e['ok'];}function getMessagesForCondensation(_0x2e502b=null){const _0x23982e=_0x3f5590;if(!settings[_0x23982e(0x1cf)][_0x23982e(0x1a7)])return showNotification(_0x23982e(0x19e),_0x23982e(0x1d4)),[];const {layerStart:_0x5b52c3,layerEnd:_0x1d5aa7}=settings[_0x23982e(0x1cf)],_0x20fe45=_0x2e502b||settings[_0x23982e(0x1cf)]['messageTypes'],_0x4fd38e=context['chat'][_0x23982e(0x1c8)],_0xc8e44e=Math[_0x23982e(0x17b)](0x0,_0x5b52c3-0x1),_0x2b4dfe=Math[_0x23982e(0x198)](_0x4fd38e,_0x1d5aa7),_0xa5cee2=context[_0x23982e(0x182)]['slice'](_0xc8e44e,_0x2b4dfe);return _0xa5cee2[_0x23982e(0x15e)](_0x43d4ff=>{const _0x5f128b=_0x23982e,_0x123637=_0x43d4ff['is_user']===!![],_0x52462e=_0x43d4ff[_0x5f128b(0x153)]===![];if(!_0x43d4ff[_0x5f128b(0x19b)]||!_0x43d4ff[_0x5f128b(0x19b)][_0x5f128b(0x161)]())return![];return _0x20fe45['user']&&_0x123637||_0x20fe45['ai']&&_0x52462e;});}async function processCondensation(_0x25d339){const _0x403996=_0x3f5590;if(!_0x25d339||_0x25d339[_0x403996(0x1c8)]===0x0)return{'success':![],'error':_0x403996(0x17c)};const _0x29b39e=[],_0x4bf73c=context[_0x403996(0x182)];for(const _0x321354 of _0x25d339){const _0x4dd2da=(_0x321354[_0x403996(0x19b)]||'')['replace'](/<[^>]*>/g,'')[_0x403996(0x161)]();if(_0x4dd2da[_0x403996(0x1c8)]===0x0)continue;const _0x522b39=_0x4bf73c[_0x403996(0x166)](_0x1155e4=>_0x1155e4===_0x321354),_0x15552d=_0x522b39!==-0x1?_0x522b39+0x1:-0x1,_0x8c5aed={'source':'chat_history','floor':_0x15552d,'is_user':_0x321354[_0x403996(0x153)],'timestamp':new Date(_0x321354[_0x403996(0x17d)])['toISOString']()},_0x2fee10=splitIntoChunks(_0x4dd2da)['map'](_0x3f577a=>({'text':_0x3f577a,'metadata':_0x8c5aed}));_0x29b39e[_0x403996(0x155)](..._0x2fee10);}if(_0x29b39e[_0x403996(0x1c8)]===0x0)return{'success':![],'error':'No\x20valid\x20chunks\x20generated.'};return await insertVectors(_0x29b39e);}async function rerankResults(_0x25aefd,_0x48d172,_0x293be1){const _0xe95076=_0x3f5590;let _0x75c5ce=_0x25aefd;if(_0x293be1[_0xe95076(0x19d)][_0xe95076(0x1a7)]&&_0x25aefd['length']>0x0){console[_0xe95076(0x1bc)](_0xe95076(0x17a));try{const _0x3cb587=_0x25aefd[_0xe95076(0x1e4)]((_0x4161a6,_0x1268df)=>({'text':_0x4161a6[_0xe95076(0x178)],'original_index':_0x1268df})),_0x49e0c8=getRerankBaseUrl(_0x293be1[_0xe95076(0x19d)][_0xe95076(0x19f)]),_0x494ba9=_0x49e0c8+_0xe95076(0x1df),_0x1c4e93=await fetch(_0x494ba9,{'method':'POST','headers':{'Content-Type':'application/json','Authorization':'Bearer\x20'+_0x293be1[_0xe95076(0x19d)]['apiKey']},'body':JSON['stringify']({'query':_0x48d172,'documents':_0x3cb587[_0xe95076(0x1e4)](_0x394183=>_0x394183[_0xe95076(0x178)]),'model':_0x293be1[_0xe95076(0x19d)][_0xe95076(0x174)],'top_n':_0x293be1[_0xe95076(0x19d)][_0xe95076(0x19c)]})});if(!_0x1c4e93['ok'])throw new Error(_0xe95076(0x181)+_0x1c4e93[_0xe95076(0x1da)]+_0xe95076(0x16b)+await _0x1c4e93[_0xe95076(0x178)]());const _0x1b955e=await _0x1c4e93[_0xe95076(0x1e0)](),_0x39f6f5=_0x25aefd[_0xe95076(0x1e4)]((_0x1f7fdc,_0xa2e38a)=>({..._0x1f7fdc,'original_index':_0xa2e38a}));_0x75c5ce=_0x39f6f5[_0xe95076(0x1e4)](_0x1d2e2e=>{const _0x6b2ae4=_0xe95076,_0x364e5e=_0x1b955e['results']['find'](_0x4651d7=>_0x4651d7['index']===_0x1d2e2e[_0x6b2ae4(0x1c6)]),_0x1223a0=_0x364e5e?_0x364e5e[_0x6b2ae4(0x163)]:0x0;return{..._0x1d2e2e,'rerank_score':_0x1223a0};});if(_0x293be1['rerank'][_0xe95076(0x1bb)])showNotification(_0xe95076(0x1b3),'success');}catch(_0x369ec5){console[_0xe95076(0x165)](_0xe95076(0x1b0),_0x369ec5);if(_0x293be1[_0xe95076(0x19d)][_0xe95076(0x1bb)])showNotification(_0xe95076(0x168)+_0x369ec5['message'],_0xe95076(0x165));_0x75c5ce['forEach'](_0x16557b=>_0x16557b[_0xe95076(0x1c2)]=0x0);}}else _0x75c5ce[_0xe95076(0x1db)](_0x2cce3b=>_0x2cce3b[_0xe95076(0x1c2)]=0x0);console[_0xe95076(0x1bc)]('[翰林院-Rerank]\x20开始元数据加权最终排序...');const _0x277dd1=context[_0xe95076(0x182)][_0xe95076(0x1c8)],_0xc03fbc=_0x293be1[_0xe95076(0x19d)]['hybrid_alpha'],_0x529cf1=_0x75c5ce['map'](_0x3deb96=>{const _0x4b8ad1=_0xe95076;let _0x1e7b7c=0x1;const _0x114bbe=_0x3deb96[_0x4b8ad1(0x15c)]||{};switch(_0x114bbe['source']){case'lorebook':_0x1e7b7c*=1.2;break;case _0x4b8ad1(0x15f):_0x1e7b7c*=1.1;break;case'chat_history':if(_0x114bbe[_0x4b8ad1(0x1a0)]&&_0x277dd1>0x0){const _0xe7c62c=_0x114bbe['floor']/_0x277dd1;_0x1e7b7c*=0x1+_0xe7c62c;}break;}const _0x408af4=_0x3deb96['rerank_score']*_0xc03fbc+(_0x3deb96['score']||0x0)*(0x1-_0xc03fbc),_0x3cd452=_0x408af4*_0x1e7b7c;return{..._0x3deb96,'final_score':_0x3cd452};});return _0x529cf1[_0xe95076(0x188)]((_0x1e2281,_0x3b41e5)=>(_0x3b41e5[_0xe95076(0x1ce)]||0x0)-(_0x1e2281[_0xe95076(0x1ce)]||0x0)),console[_0xe95076(0x1bc)](_0xe95076(0x157)),_0x529cf1[_0xe95076(0x177)](0x0,_0x293be1['rerank'][_0xe95076(0x19c)]);}async function rearrangeChat(_0x39eaaa,_0x185227,_0x444b53,_0x540d1e){const _0x166523=_0x3f5590;setExtensionPrompt(_0x166523(0x1be),'',settings[_0x166523(0x179)][_0x166523(0x1b5)],settings[_0x166523(0x179)][_0x166523(0x170)],![],settings[_0x166523(0x179)][_0x166523(0x1cb)]);if(_0x540d1e===_0x166523(0x1c7)||!settings[_0x166523(0x1a4)][_0x166523(0x1a7)])return;const _0x5bdc9c=_0x39eaaa['slice'](-settings[_0x166523(0x172)][_0x166523(0x18f)]);if(_0x5bdc9c['length']===0x0)return;const _0x23efaa=_0x5bdc9c[_0x166523(0x1e4)](_0x3859cd=>_0x3859cd['mes'])[_0x166523(0x18e)]('\x20')[_0x166523(0x192)](/<[^>]*>/g,'')['trim']();if(!_0x23efaa)return;try{const _0x4a3efa=await queryVectors(_0x23efaa);if(_0x4a3efa['length']===0x0)return;const _0x40fc46=await rerankResults(_0x4a3efa,_0x23efaa,settings);if(_0x40fc46['length']===0x0)return;const _0x3a228e=_0x40fc46['map'](_0x8c82b4=>_0x8c82b4[_0x166523(0x178)])[_0x166523(0x18e)]('\x0a\x0a'),_0x5ae818=settings[_0x166523(0x179)]['template']['replace'](_0x166523(0x17f),_0x3a228e);setExtensionPrompt('HANLINYUAN_RAG',_0x5ae818,settings['injection'][_0x166523(0x1b5)],settings[_0x166523(0x179)][_0x166523(0x170)],![],settings[_0x166523(0x179)][_0x166523(0x1cb)]);}catch(_0x201b03){console[_0x166523(0x165)]('[翰林院]\x20检索或注入时发生错误:',_0x201b03);if(settings[_0x166523(0x1a4)][_0x166523(0x1bb)])showNotification('忆识检索失败:\x20'+_0x201b03[_0x166523(0x152)],'error');}}