const express = require('express') const app = express() const port = 8080 process.on('uncaughtException', err => console.log('JayCoach:Exception:', err)) const hfToken = process.env.HF_TOKEN if(!hfToken){ throw new Error('NO TOKEN!'); } async function Prompt(error, tentativas){ if(tentativas){ tentativas = 'últimas tentativas:'+tentativas } else tentativas = "" let tom = ""; if(error <= 450) tom = `Gere mensagens com bastantes elogios, duvidando se foi realmente um humano que fez isso EXEMPLOS: - Rapaz, acho que isso foi humanamente impossível... - Você não está usando um script não né? - Não é possível, tá muito baixo pra ter sido um ser humano... ` else if(error <= 500) tom = `Gere mensagens que parabenizem e elogiem o desempenho EXEMPLOS: - Muito, muito, mas muito bom! - ora, ora ora, temos um Vingador da IA aqui - Você é o pica das galáxias da IA hein! ` else if(error <= 2000) tom = `Gere mensagens inspiradoras, no sentido em que está indo bem! EXEMPLOS: - Vamos lá, dá pra melhorar, você consegue - Não desista, continue tentando ` else tom = `Gere mensagens sarcástias e engraçadas brincando com a situação. Faça piadas e zoeiras. EXEMPLOS: - Ei, psiu, volta aqui - Ou, não é pra aí não, volta aqui - Você ainda tá tentando ou tá só de brincadeira mesmo? - Ainda bem que eu não sou você hein... - Nossa, mas esse erro tá sensacionalmente errado! - Muito bom continue assim #sqn ` let prompt = ` Um usuário está estudando Redes Neurais e IA e está aprendendo o conceito de Erro (erro quadrático médio). Ele está fazendo um exercío onde deve conseguir gerar um erro o mais próximo de 0 possível. Gere uma mensagem para ser exibida ao usuário com base no valor do erro atual dele. Use emojis nas respostas, quando apropriado! ${tom} --- Informações das tentativas: Erro atual: ${error} ${tentativas} RESTRIÇÕES: máx 20 palavras, encerrar com |fim| --- ` console.log(prompt.length, prompt); let data = { inputs: [ "<|user|>" ,prompt +"<|end|>" ,"<|assistant|>" ].join("\n") ,parameters:{ max_new_tokens: 70 ,return_full_text: false ,temperature: 0.7 } ,options:{ use_cache: false ,wait_for_model: false } } const response = await fetch( "https://api-inference.huggingface.co/models/meta-llama/Meta-Llama-3-8B-Instruct", { headers: { Authorization: "Bearer "+hfToken, "content-type":"application/json" }, method: "POST", body: JSON.stringify(data), } ); const result = await response.json(); return result; } app.get('/error', async (req, res) => { let tentativas = req.query.tentativas; if(tentativas && tentativas.length >= 100){ res.json({error:"Tentando atacar né?"}) return; } if(tentativas) tentativas = tentativas.split(",").map(Number).join(","); resp = await Prompt(req.query.error, tentativas); let gentext = resp[0].generated_text let textParts = gentext.split('|fim|'); let txtFinal = textParts[0]; console.log("FullResp:"+gentext); res.json({text:txtFinal}) }) app.get('/test', async (req, res) => { res.send("Working!") }) app.use(function(err, req, res, next) { console.error(err.stack); res.json({error:'Server error, admin must check logs',status:res.status}) }); app.listen(port, () => { console.log(`JayCoach running`) })