rrg92 commited on
Commit
f7ae361
0 Parent(s):
Files changed (3) hide show
  1. Dockerfile +9 -0
  2. docker-compose.yml +7 -0
  3. server.js +93 -0
Dockerfile ADDED
@@ -0,0 +1,9 @@
 
 
 
 
 
 
 
 
 
 
1
+ FROM node:22-alpine
2
+
3
+ WORKDIR iatalking
4
+ RUN npm i express
5
+
6
+ COPY ./server.js ./server.js
7
+
8
+ CMD ["node","./server.js"]
9
+
docker-compose.yml ADDED
@@ -0,0 +1,7 @@
 
 
 
 
 
 
 
 
1
+ services:
2
+ jaycoach:
3
+ image: jaycoach
4
+ environment:
5
+ - HF_TOKEN=$HF_TOKEN
6
+ ports:
7
+ - 3000:8080
server.js ADDED
@@ -0,0 +1,93 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ const express = require('express')
2
+ const app = express()
3
+ const port = 8080
4
+
5
+
6
+ const hfToken = process.env.HF_TOKEN
7
+
8
+ if(!hfToken){
9
+ throw new Error('NO TOKEN!');
10
+ }
11
+
12
+ async function Prompt(error, tentativas){
13
+
14
+ if(tentativas){
15
+ tentativas = 'últimas tentativas:'+tentativas
16
+ } else
17
+ tentativas = ""
18
+
19
+ let prompt = `
20
+ (usar muito humor e sarcasmo, máx 20 palavras, encerrar com |fim|)
21
+ Um usuário está estudando Redes Neurais e IA e está aprendendo o conceito de Erro (erro quadrático médio).
22
+ Ele está fazendo um exercío onde deve gerar o menor valor possível (abaixo de 499 já está muito bom!)
23
+
24
+ Gere uma mensagem para ser exibida ao usuário com base no valor do erro atual dele.
25
+ Use essas informacoes:
26
+
27
+ Erro atual: ${error}
28
+ ${tentativas}
29
+ `
30
+
31
+ console.log(prompt.length, prompt);
32
+
33
+ let data = {
34
+ inputs: [
35
+ "<|user|>"
36
+ ,prompt
37
+ +"<|end|>"
38
+ ,"<|assistant|>"
39
+ ].join("\n")
40
+
41
+ ,parameters:{
42
+ max_new_tokens: 100
43
+ ,return_full_text: false
44
+ ,temperature: 0.6
45
+ }
46
+
47
+ ,options:{
48
+ use_cache: false
49
+ }
50
+
51
+ }
52
+
53
+ const response = await fetch(
54
+ "https://api-inference.huggingface.co/models/microsoft/Phi-3-mini-4k-instruct",
55
+ {
56
+ headers: { Authorization: "Bearer "+hfToken, "content-type":"application/json" },
57
+ method: "POST",
58
+ body: JSON.stringify(data),
59
+ }
60
+ );
61
+
62
+ const result = await response.json();
63
+ return result;
64
+ }
65
+
66
+ app.get('/', async (req, res) => {
67
+
68
+ let tentativas = req.query.tentativas;
69
+
70
+ if(tentativas && tentativas.length >= 100){
71
+ res.json({error:"Tentando atacar né?"})
72
+ return;
73
+ }
74
+
75
+ if(tentativas)
76
+ tentativas = tentativas.split(",").map(Number).join(",");
77
+
78
+
79
+ resp = await Prompt(req.query.error, tentativas);
80
+
81
+
82
+ let gentext = resp[0].generated_text
83
+
84
+ let textParts = gentext.split('|fim|');
85
+ let txtFinal = textParts[0];
86
+
87
+ console.log("FullResp:"+gentext);
88
+ res.json({text:txtFinal})
89
+ })
90
+
91
+ app.listen(port, () => {
92
+ console.log(`JayCoach running`)
93
+ })