const axios = require('axios'); const TEMP_MAIL_API = 'https://api.internal.temp-mail.io/api/v3'; const CHATAI_API = 'https://chataibot.pro/api'; const headers = { 'Content-Type': 'application/json', 'Accept-Language': 'en' }; const tempMailHeaders = { ...headers, 'Application-Name': 'web', 'Application-Version': '4.0.0', 'X-CORS-Header': 'iaWg3pchvFx48fY' }; const handler = async (req, res) => { try { const { text } = req.query; if (!text) { return res.status(400).json({ success: false, error: 'Missing required parameter: text' }); } const result = await gpt4(text, chatId = null); res.json({ author: "Herza", success: true, data: { msg: result.response, chatID: result.chatId } }); } catch (error) { res.status(500).json({ success: false, error: error.message }); } }; module.exports = { name: 'Haiku Claude AIv3', description: 'Generate responses using Haiku Anthropic Model v3', type: 'GET', routes: ['api/AI/haiku'], tags: ['ai', 'Anthropic', 'Claude'], main: ['AI'], parameters: ['text', 'chatId', 'key'], enabled: true, handler }; async function createTempEmail() { const { data } = await axios.post(`${TEMP_MAIL_API}/email/new`, { min_name_length: 10, max_name_length: 10 }, { headers: tempMailHeaders }); return data; } async function registerAccount(email) { const { data } = await axios.post(`${CHATAI_API}/register`, { email, password: 'Mxlineeecero5632@_++((+))9098+-+-!;::::#$', isAdvertisingAccepted: false, mainSiteUrl: 'https://chataibot.pro/api', utmSource: '', utmCampaign: '', connectBusiness: '' }, { headers }); return data; } async function getMessages(email) { const { data } = await axios.get(`${TEMP_MAIL_API}/email/${email}/messages`, { headers: tempMailHeaders }); return data; } async function waitForVerificationCode(email, maxAttempts = 10) { for (let i = 0; i < maxAttempts; i++) { await new Promise(r => setTimeout(r, 3000)); const msgs = await getMessages(email); const chatAiMsg = msgs.find(m => m.from.includes('chataibot.pro')); if (chatAiMsg) { const match = chatAiMsg.body_text.match(/Your code: (\d+)/); if (match) return match[1]; } } throw new Error('Verification code not received'); } async function verifyAccount(email, token) { const { data, headers: responseHeaders } = await axios.post(`${CHATAI_API}/register/verify`, { email, token, connectBusiness: '' }, { headers }); const cookies = responseHeaders['set-cookie'] || []; return { jwtToken: data.jwtToken, cookies }; } async function createChat(jwtToken, cookies, title = 'New Chat') { const cookieString = cookies.map(c => c.split(';')[0]).join('; '); await axios.post(`${CHATAI_API}/message/change-context-model`, { chatId: 0, title, isInternational: true }, { headers: { ...headers, 'Authorization': `Bearer ${jwtToken}`, 'Cookie': cookieString } }); const { data } = await axios.post(`${CHATAI_API}/message/context`, { title, chatModel: 'claude-3-haiku' }, { headers: { ...headers, 'Authorization': `Bearer ${jwtToken}`, 'Cookie': cookieString } }); return data.id; } async function sendMessage(jwtToken, cookies, text, chatId) { const cookieString = cookies.map(c => c.split(';')[0]).join('; '); const { data } = await axios.post(`${CHATAI_API}/message/streaming`, { text, chatId, withPotentialQuestions: true, linksToParse: [] }, { headers: { ...headers, 'Authorization': `Bearer ${jwtToken}`, 'Cookie': cookieString }, responseType: 'text' }); const lines = data.split('}{').map((line, i, arr) => { if (i === 0) return line + '}'; if (i === arr.length - 1) return '{' + line; return '{' + line + '}'; }); let result = ''; for (const line of lines) { try { const json = JSON.parse(line); if (json.type === 'chunk') { result += json.data; } else if (json.type === 'finalResult') { return json.data.mainText; } } catch (e) {} } return result; } let cachedToken = null; let cachedCookies = null; let cachedChatId = null; async function gpt4(query, chatId = null) { try { if (!cachedToken) { const { email } = await createTempEmail(); await registerAccount(email); const code = await waitForVerificationCode(email); const verifyResult = await verifyAccount(email, code); cachedToken = verifyResult.jwtToken; cachedCookies = verifyResult.cookies; } if (!chatId && !cachedChatId) { cachedChatId = await createChat(cachedToken, cachedCookies, query); } const targetChatId = chatId || cachedChatId; const response = await sendMessage(cachedToken, cachedCookies, query, targetChatId); return { response, chatId: targetChatId }; } catch (err) { cachedToken = null; cachedCookies = null; cachedChatId = null; throw err; } }