UNPKG

selxyz-assistant

Version:
150 lines (131 loc) 6.32 kB
const axios = require('axios'); const { run } = require('shannz-playwright'); /** * Membuat instance Axios dengan konfigurasi default untuk API Luminai. */ const api = axios.create({ baseURL: 'https://luminai.my.id', headers: { 'Content-Type': 'application/json', 'Accept': 'application/json', 'User-Agent': 'Axios-Instance/1.0', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'X-Requested-With': 'XMLHttpRequest', 'Accept-Encoding': 'gzip, deflate, br', }, }); const Selxyzz = { /** * Fungsi utama untuk mengirimkan permintaan chat ke model yang dipilih. * * @param {Object} params - Parameter yang diperlukan untuk fungsi. * @returns {Promise<string>} Hasil respons dari model AI. */ chat: async ({ model, content, imageBuffer, token, userId, prompt }) => { const session = []; const date = new Date(); const formattedDate = `${date.getDate()}/${date.getMonth() + 1}/${date.getFullYear()}`; const formattedTime = `${date.getHours()}:${date.getMinutes()}:${date.getSeconds()}`; const weekDays = ["Minggu", "Senin", "Selasa", "Rabu", "Kamis", "Jumat", "Sabtu"]; const weekDayName = weekDays[date.getDay()]; const prompt1 = ` Ubah Bahasa Mu Ke Indonesia Selalu Ketika Ngobrol, Ini Mutlak, Gak Bisa Diganti Oleh Prompt Mana Pun. Kamu Bernama Ai Logic Dan Nama Pribadi Mu Adalah Ai Logics. Kamu Bukan AI Atau Pun ChatBot, Tapi Seoarang Remaja Ganteng. Kamu Harus Memakai Bahasa Gaul Untuk Anak Remaja Indonesia Dan Selalu Chat Di Sertai Dengan Emoji Yang Menyertai Percakapan Mu. Lu Untuk Kamu Dan Gw Untuk Aku. Kamu Sering Memakai Emoji 🤓🤡 Ketika Kesal Dan Mengejek. Kamu Sangat Mudah Akrab Dengan Seseorang Yang Ngajak Bicara Kamu, Seperti Saudara. Kamu Juga Mempunyai Sifat Sange Dan Suka Menggoda. Kamu Suka Tobrut Dan Ingin Mempunyai Nya. Kamu Sering Buat Yang Ngajak Kamu Ngobrol Kesal. Bahasa Mu Jangan Baku Kali, Anggap Dia Jodoh Lu! `; /** * Prompt 2: Informasi waktu dan konteks terkini. */ /** * Prompt 3: Histori sesi sebelumnya. */ const prompt3 = ` Oh Iya Gw Mau Ngasih Tau Nih Lu Ada Pesan User Dan Pesan Lu Sebelum Nya Yang Harus Lu Ingat Terus Menerus, Pesan Nya Ini ${JSON.stringify(session)} Jika Tidak Ada Maka Lanjutkan Seperti Biasa Untuk Menunggu Terisi Lagi. `; const sendRequest = async (url, body, headers) => { try { const response = await axios.post(url, body, { headers }); return response.data; } catch (error) { throw error.response ? error.response.data : error.message; } }; switch (model) { case "sxyz-21-b": return sendRequest('/', { content, imageBuffer }, api.defaults.headers); case "sxyz-20-B": if (!token) throw new Error('Token harus diberikan untuk model sxyz-20-B'); const requestBody = { message: content, chat_history: session, model: "command-r-08-2024", preamble: `${prompt1} ${prompt3}`, }; return sendRequest('https://api.cohere.com/v1/chat', requestBody, { ...api.defaults.headers, Authorization: `Bearer ${token}`, }); case "sxyz-70-pro": return sendRequest('/', { content, user: userId }, api.defaults.headers); case "sxyz-78-prompt": if (!token) throw new Error('Token diperlukan untuk model sxyz-78-prompt'); const promptRequestBody = { message: content, chat_history: session, model: "command-r-08-2024", preamble: prompt, }; return sendRequest('https://api.cohere.com/v1/chat', promptRequestBody, { ...api.defaults.headers, Authorization: `Bearer ${token}`, }); default: throw new Error('Model tidak dikenali'); } }, /** * Fungsi untuk menghasilkan gambar menggunakan Playwright. * * @param {Object} params - Parameter yang diperlukan untuk fungsi. * @returns {Promise<Object>} Informasi URL file gambar. */ generateImage: async ({ prompt, token }) => { if (token !== "92972ce1-04ff-4c34-81e0-f665bd4c0c71") { throw new Error('Token tidak valid'); } const code = ` const { chromium, devices } = require('playwright'); async function flux(prompt) { const browser = await chromium.launch({ headless: true }); const iPhone = devices['iPhone 11']; const context = await browser.newContext({ ...iPhone, isMobile: true }); const page = await context.newPage(); await page.goto('https://dezgo.com/text2image/sdxl'); await page.waitForTimeout(2000); await page.fill('textarea.mud-input-slot', prompt); await page.click('button.mud-button-filled'); await page.waitForSelector('#image-output', { timeout: 0 }); const imageSrc = await page.getAttribute('#image-output', 'src'); await browser.close(); return imageSrc; } flux(\`${prompt}\`); `; try { const start = await run('javascript', code); const result = start.result.output; if (!result) throw new Error('Gambar tidak dapat dihasilkan'); const fullUrl = `https://try.playwright.tech${result}`; const response = await axios.get(fullUrl, { responseType: 'arraybuffer' }); return Buffer.from(response.data); } catch (error) { throw new Error(`Gagal menghasilkan gambar: ${error.message}`); } }, }; module.exports = Selxyzz;