const axios = require("axios");
/**
* HammerAI Chat Client
* Interagir com a API de chat da HammerAI e manter sessões de chat por usuário.
*
* List Model:
* - Sleepy : 312b3ce9-62dc-4e94-9a40-fb8f60c93ea1
* - Sarah: 4f2edc8d-2992-427f-93c2-849fc2d956de
* - Myra : deb86452-e27f-47d0-959d-98bdf53fac16
* - Aiko : c8bfad14-8529-4bf2-a359-b5dd067f2b3b
*
* @author synshin9
*
* @By: 𖧄 𝐋𝐔𝐂𝐀𝐒 𝐌𝐎𝐃 𝐃𝐎𝐌𝐈𝐍𝐀 𖧄
* Canal: https://whatsapp.com/channel/0029Vb69bDnAe5VmzSMwBH11
*
*/
const sessions = new Map();
const SESSION_TIMEOUT = 2 * 60 * 1000;
/**
* Envie uma mensagem para a HammerAI e receba uma resposta no chat.
*
* @param {string} userId - Identificador único para o usuário (e.g., WhatsApp ID, Telegram ID).
* @param {string} message - Texto de entrada do usuário para enviar à IA.
* @param {string} model - ID do personagem do modelo de IA no HammerAI.
* @returns {Promise} - Mensagem de resposta da IA.
*/
async function hammerAI(userId, message, model) {
const url = "https://www.hammerai.com/api/cloud/chat";
if (!sessions.has(userId)) {
sessions.set(userId, {
messages: [
{
role: "system",
content:
"Você é um assistente de bate-papo com IA. Responda ao usuário de forma educada e prestativa.",
},
],
timeout: null,
});
}
const session = sessions.get(userId);
session.messages.push({ role: "user", content: message });
if (session.timeout) clearTimeout(session.timeout);
session.timeout = setTimeout(() => {
sessions.delete(userId);
console.log(`Sessão ${userId} expirou após 2 minutos de inatividade..`);
}, SESSION_TIMEOUT);
const payload = {
authorId: "b081fd42-5c88-460a-8ccd-d801e882faf7",
userId: "",
licenseKey: "",
generateChat: {
quantizationKey: "vllm-mistralai/Mistral-Nemo-Instruct-2407",
messages: session.messages,
temperature: 0.8,
topP: 0.9,
topK: 30,
nPredict: 256,
repetitionPenalty: 1.1,
contextSize: 4096,
mlock: true,
characterId: model,
},
};
try {
const { data } = await axios.post(url, payload, {
headers: {
"Content-Type": "text/plain;charset=UTF-8",
"User-Agent":
"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Mobile Safari/537.36",
Origin: "https://www.hammerai.com",
Referer: `https://www.hammerai.com/chat/${model}`,
},
});
session.messages.push({ role: "assistant", content: data });
return data;
} catch (err) {
return `Error: ${err.response?.status || err.message}`;
}
}
module.exports = { hammerAI }
/*
EXEMPLO DE USO:
const { hammerAI } = require('./hammerai');
async function exemploUso() {
try {
const userId = "user-12345"; // ID único do usuário
const message = "Olá, como você está?"; // Mensagem do usuário
const model = "4f2edc8d-2992-427f-93c2-849fc2d956de"; // Modelo Sarah
const resposta = await hammerAI(userId, message, model);
console.log("Resposta do HammerAI:");
console.log(resposta);
} catch (error) {
console.error("Erro na comunicação com HammerAI:", error);
}
}
// exemploUso();
MODELOS DISPONÍVEIS:
- Sleepy: 312b3ce9-62dc-4e94-9a40-fb8f60c93ea1
- Sarah: 4f2edc8d-2992-427f-93c2-849fc2d956de
- Myra: deb86452-e27f-47d0-959d-98bdf53fac16
- Aiko: c8bfad14-8529-4bf2-a359-b5dd067f2b3b
*/