Spaces:
ainz
/
Configuration error

hi / src /lib /chat.js
ainz's picture
x
688d352
const axios = require('axios')
class Chat {
constructor() {
}
async createChat(token) {
try {
const response = await axios.post(`https://hix.ai/api/trpc/hixChat.createChat?batch=1`,
{
"0": {
"json": {
"title": `${new Date().toLocaleString()} New Chat`,
"botId": 85426
}
}
},
{
headers: {
'Content-Type': 'application/json',
'Cookie': `__Secure-next-auth.session-token=${token}`,
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/129.0.0.0 Safari/537.36',
'Accept': 'application/json',
'Accept-Language': 'zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6',
'Referer': 'https://hix.ai/',
'Origin': 'https://hix.ai',
'Sec-Fetch-Dest': 'empty',
'Sec-Fetch-Mode': 'cors',
'Sec-Fetch-Site': 'cross-site'
}
}
)
return response.data[0].result.data.json.id
} catch (error) {
console.log("Token可能已失效,创建聊天失败!!!")
return null
}
}
async parserMessagesMode(messages) {
try {
const userMessages = messages.filter(item => item.role === 'user' || item.role === 'assistant')
const assistantMessages = messages.filter(item => item.role === 'assistant')
const systemMessages = messages.filter(item => item.role === 'system').map(item => item.content).join('\n')
if (userMessages.length === 1) {
let newMessage = `
${systemMessages ? `<system>\n${systemMessages}</system>\n` : ''}
${JSON.stringify(userMessages[userMessages.length - 1].content)}
`
return {
status: 200,
message: newMessage,
chatId: null,
}
} else {
const signRegex = /\[ChatID: (.*?)\]/
const sign = assistantMessages[assistantMessages.length - 1].content.match(signRegex)
if (sign) {
const chatId = sign[1].replace('[ChatID: ', '').replace(']', '')
return {
status: 200,
message: userMessages[userMessages.length - 1].content,
chatId: chatId,
}
} else {
return this.createForgeChat(messages)
}
}
} catch (error) {
return {
status: 500,
message: null,
chatId: null,
}
}
}
async createForgeChat(messages) {
let newMessage = `
${JSON.stringify(messages.filter(item => item.role === 'system').map(item => item.content).join('\n')) ? `<system>\n${JSON.stringify(messages.filter(item => item.role === 'system').map(item => item.content).join('\n'))}\n</system>\n` : ''}
<history>
${JSON.stringify(messages.filter(item => item.role === 'user' || item.role === 'assistant').map(item => item.content).join('\n'))}
</history>
${messages[messages.length - 1].content}
`
return {
status: 200,
message: newMessage,
chatId: null,
}
}
async sendMessage(chatId, message, token) {
console.log(chatId)
try {
const response = await axios.post(`https://hix.ai/api/hix/chat`,
{
"chatId": chatId,
"question": message,
"fileUrl": "",
"answer": "",
"relatedQuestions": []
},
{
headers: {
'Content-Type': 'application/json',
'Cookie': `__Secure-next-auth.session-token=${token}`
},
responseType: 'stream'
}
)
return {
response: response.data,
status: 200,
}
} catch (error) {
if (error.response.status === 403) {
return {
response: null,
status: 403
}
}
return {
response: null,
status: error.response.status
}
}
}
}
module.exports = Chat