boxtrain / tbbot.js
1tbfree's picture
Create tbbot.js
acf8405 verified
raw
history blame
2.54 kB
const io = require('socket.io-client');
const tf = require('@tensorflow/tfjs-node');
// Connect to the existing Socket.IO server
const socket = io('https://box.km.mk/socket.io'); // Replace with your server URL
socket.emit("user joined", "AITrainer", "green")
// Simple in-memory dataset for training
let trainingData = [];
let labels = [];
// Listen for incoming messages
socket.on('data', (data) => {
console.log('Received message:', data);
processMessage(data); // Process the incoming message
});
// Function to process incoming messages and prepare them for training
function processMessage(message) {
// Here we assume the message is an object with text and label properties
if (message.text && message.label) {
trainingData.push(message.text);
labels.push(message.label);
console.log('Added to training data:', message.text);
// Optionally train the AI every N messages or on demand
if (trainingData.length >= 10) { // Example: train after 10 messages
trainAI();
}
}
}
// Function to train the AI model
async function trainAI() {
console.log('Training AI with collected data...');
// Convert texts to tensors (this is a placeholder; implement your own preprocessing)
const xs = tf.tensor2d(trainingData.map(text => text.split('').map(char => char.charCodeAt(0))), [trainingData.length, trainingData[0].length]);
const ys = tf.tensor2d(labels.map(label => label === 'positive' ? [1] : [0]), [labels.length, 1]); // Binary classification example
// Define a simple model (this is just an example)
const model = tf.sequential();
model.add(tf.layers.dense({ units: 5, activation: 'relu', inputShape: [trainingData[0].length] }));
model.add(tf.layers.dense({ units: 1, activation: 'sigmoid' }));
model.compile({ optimizer: 'adam', loss: 'binaryCrossentropy', metrics: ['accuracy'] });
// Train the model
await model.fit(xs, ys, { epochs: 10 });
console.log('Training complete.');
// Clear training data after training (optional)
trainingData = [];
labels = [];
}
// Handle errors
socket.on('connect_error', (err) => {
console.error('Connection error:', err);
});
// Keep the process alive indefinitely
process.on('SIGINT', () => {
console.log("Shutting down gracefully...");
socket.disconnect();
process.exit();
});
console.log("Listening for messages...");
// This will keep the script running indefinitely.
setInterval(() => {}, 1000); // Keeps the event loop active