Add sendXMLFile function for processing XML files
This commit is contained in:
@@ -156,6 +156,28 @@ async function sendTxtFile(arg:sendFileArg) {
|
|||||||
return Buffer.from(`<File>\n${message}\n</File>\n`).toString('base64')
|
return Buffer.from(`<File>\n${message}\n</File>\n`).toString('base64')
|
||||||
}
|
}
|
||||||
|
|
||||||
|
async function sendXMLFile(arg:sendFileArg) {
|
||||||
|
const hypa = new HypaProcesser('MiniLM')
|
||||||
|
let nodeTexts:string[] = []
|
||||||
|
const parser = new DOMParser();
|
||||||
|
const xmlDoc = parser.parseFromString(arg.file, "text/xml");
|
||||||
|
const nodes = xmlDoc.getElementsByTagName('*')
|
||||||
|
for(const node of nodes){
|
||||||
|
nodeTexts.push(node.textContent)
|
||||||
|
}
|
||||||
|
hypa.addText(nodeTexts)
|
||||||
|
const result = await hypa.similaritySearch(arg.query)
|
||||||
|
let message = ''
|
||||||
|
for(let i = 0; i<result.length; i++){
|
||||||
|
message += "\n" + result[i]
|
||||||
|
if(i>5){
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
console.log(message)
|
||||||
|
return Buffer.from(`<File>\n${message}\n</File>\n`).toString('base64')
|
||||||
|
}
|
||||||
|
|
||||||
type postFileResult = postFileResultImage | postFileResultVoid | postFileResultText
|
type postFileResult = postFileResultImage | postFileResultVoid | postFileResultText
|
||||||
|
|
||||||
type postFileResultImage = {
|
type postFileResultImage = {
|
||||||
@@ -211,6 +233,16 @@ export async function postChatFile(query:string):Promise<postFileResult>{
|
|||||||
name: file.name
|
name: file.name
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
case 'xml':{
|
||||||
|
return {
|
||||||
|
type: 'text',
|
||||||
|
data: await sendXMLFile({
|
||||||
|
file: BufferToText(file.data),
|
||||||
|
query: query
|
||||||
|
}),
|
||||||
|
name: file.name
|
||||||
|
}
|
||||||
|
}
|
||||||
case 'jpg':
|
case 'jpg':
|
||||||
case 'jpeg':
|
case 'jpeg':
|
||||||
case 'png':
|
case 'png':
|
||||||
|
|||||||
Reference in New Issue
Block a user