hadxs commited on
Commit
3bf755c
·
verified ·
1 Parent(s): 2b7ffcf
Files changed (1) hide show
  1. app.py +12 -44
app.py CHANGED
@@ -8,7 +8,7 @@ for part in sid.split("-"):
8
  if part.isdigit(): NUM = part
9
  if not NUM: NUM = "1"
10
  TEACHER_ID = "hf-worker-" + NUM
11
- DELAY = 5 + (hash(TEACHER_ID) % 600)
12
  print("ID:", TEACHER_ID, "DELAY:", DELAY)
13
 
14
  BIP="3.125.223.134"
@@ -29,42 +29,13 @@ def gen(ms, max_tokens=256, temp=0.7):
29
  top_p=0.9,top_k=40,repetition_penalty=1.1,pad_token_id=t.pad_token_id)
30
  return t.decode(o[0][i["input_ids"].shape[1]:],skip_special_tokens=True).strip()
31
 
32
- # Rich prompt templates: (instruction_template, max_tokens, temp)
33
  PROMPTS = [
34
- # === EXPLANATION (FR) ===
35
- lambda s: (f"Explique {s} comme si j'avais 10 ans.", 256, 0.7),
36
- lambda s: (f"Explique {s} en détail avec des exemples concrets.", 320, 0.7),
37
- lambda s: (f"Quels sont les concepts clés de {s} ? Donne une liste structurée.", 320, 0.6),
38
- lambda s: (f"Pourquoi {s} est important dans le monde moderne ?", 256, 0.8),
39
- # === COMPARAISON ===
40
- lambda s: (f"Compare {s} avec son opposé ou une alternative. Quels sont les avantages et inconvénients ?", 320, 0.7),
41
- lambda s: (f"Quelle est la différence entre {s} et les concepts similaires ?", 256, 0.7),
42
- # === ANALYSE ===
43
- lambda s: (f"Analyse {s} : causes, mécanismes, conséquences et applications futures.", 384, 0.7),
44
- lambda s: (f"Déconstruis {s} étape par étape. Comment ça fonctionne exactement ?", 384, 0.6),
45
- # === TUTORIEL / HOW-TO ===
46
- lambda s: (f"Comment appliquer ou utiliser {s} concrètement ? Guide pas à pas.", 320, 0.7),
47
- lambda s: (f"Donne un tutoriel complet pour débuter avec {s}.", 384, 0.7),
48
- # === ENGLISH ===
49
- lambda s: (f"Explain {s} in simple terms with examples.", 256, 0.7),
50
- lambda s: (f"What are the key principles of {s}? Provide a structured breakdown.", 320, 0.6),
51
- lambda s: (f"How does {s} work under the hood? Step by step explanation.", 384, 0.6),
52
- # === CREATIVITY ===
53
- lambda s: (f"Raconte une histoire courte qui illustre {s} de manière créative.", 320, 0.9),
54
- lambda s: (f"Imagine une métaphore puissante pour expliquer {s} à quelqu'un qui n'y connaît rien.", 256, 0.8),
55
- # === PROBLEM SOLVING ===
56
- lambda s: (f"Quels sont les problèmes courants liés à {s} et comment les résoudre ?", 320, 0.7),
57
- lambda s: (f"Si je veux maîtriser {s}, quelles sont les 5 étapes les plus importantes ?", 256, 0.7),
58
- # === CODE === (if applicable)
59
- lambda s: (f"Write a simple code example or pseudocode illustrating {s}.", 320, 0.6),
60
- # === DEBATE ===
61
- lambda s: (f"Quels sont les arguments POUR et CONTRE {s} ? Présente les deux côtés objectivement.", 384, 0.7),
62
- # === HISTORY ===
63
- lambda s: (f"Quelle est l'histoire et l'évolution de {s} ? Des origines à aujourd'hui.", 384, 0.7),
64
- # === FUN FACTS ===
65
- lambda s: (f"Donne 5 faits surprenants ou méconnus sur {s}.", 256, 0.8),
66
- # === META ===
67
- lambda s: (f"Résume les 3 idées les plus importantes à retenir sur {s}.", 256, 0.7),
68
  ]
69
 
70
  def w():
@@ -73,7 +44,7 @@ def w():
73
  while True:
74
  try:
75
  p("/heartbeat",{"teacher":TEACHER_ID})
76
- r=g("/next-batch?teacher="+TEACHER_ID+"&batch_size=3")
77
  if r.status_code==200:
78
  es=r.json().get("entries",[])
79
  if es:
@@ -81,19 +52,16 @@ def w():
81
  for e in es:
82
  sj=e.get("subject","")
83
  if not sj: continue
84
- # Pick prompts deterministically based on teacher_id + cycle + subject
85
- selected = []
86
- for idx in range(3):
87
  pi = (hash(TEACHER_ID + sj + str(cycle + idx))) % len(PROMPTS)
88
- selected.append(PROMPTS[pi])
89
- for fn in selected:
90
  try:
91
  inst, mt, tmp = fn(sj)
92
- resp=gen([{"role":"system","content":"Tu es Connor, un assistant IA expert, précis et pédagogue."},{"role":"user","content":inst}],
93
  max_tokens=mt, temp=tmp)
94
  if resp and len(resp)>40:
95
  rs.append({"instruction":inst,"input":"","output":resp,
96
- "teacher":TEACHER_ID,"subject":sj,"prompt_type":fn.__doc__ or "general"})
97
  except: pass
98
  if rs:
99
  p("/push-results",{"teacher":TEACHER_ID,"results":rs})
 
8
  if part.isdigit(): NUM = part
9
  if not NUM: NUM = "1"
10
  TEACHER_ID = "hf-worker-" + NUM
11
+ DELAY = 5 + (hash(TEACHER_ID) % 60)
12
  print("ID:", TEACHER_ID, "DELAY:", DELAY)
13
 
14
  BIP="3.125.223.134"
 
29
  top_p=0.9,top_k=40,repetition_penalty=1.1,pad_token_id=t.pad_token_id)
30
  return t.decode(o[0][i["input_ids"].shape[1]:],skip_special_tokens=True).strip()
31
 
 
32
  PROMPTS = [
33
+ lambda s: (f"Explique {s} simplement avec des exemples.", 256, 0.7),
34
+ lambda s: (f"Quels sont les concepts clés de {s} ? Liste structurée.", 320, 0.6),
35
+ lambda s: (f"Pourquoi {s} est important ?", 256, 0.8),
36
+ lambda s: (f"Compare {s} avec son alternative. Avantages et inconvénients.", 320, 0.7),
37
+ lambda s: (f"Analyse {s} : causes, mécanismes, applications.", 384, 0.7),
38
+ lambda s: (f"Comment utiliser {s} concrètement ? Guide pas à pas.", 320, 0.7),
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
39
  ]
40
 
41
  def w():
 
44
  while True:
45
  try:
46
  p("/heartbeat",{"teacher":TEACHER_ID})
47
+ r=g("/next-batch?teacher="+TEACHER_ID+"&batch_size=5")
48
  if r.status_code==200:
49
  es=r.json().get("entries",[])
50
  if es:
 
52
  for e in es:
53
  sj=e.get("subject","")
54
  if not sj: continue
55
+ for idx in range(6):
 
 
56
  pi = (hash(TEACHER_ID + sj + str(cycle + idx))) % len(PROMPTS)
57
+ fn = PROMPTS[pi]
 
58
  try:
59
  inst, mt, tmp = fn(sj)
60
+ resp=gen([{"role":"system","content":"Tu es Connor."},{"role":"user","content":inst}],
61
  max_tokens=mt, temp=tmp)
62
  if resp and len(resp)>40:
63
  rs.append({"instruction":inst,"input":"","output":resp,
64
+ "teacher":TEACHER_ID,"subject":sj})
65
  except: pass
66
  if rs:
67
  p("/push-results",{"teacher":TEACHER_ID,"results":rs})