aidn commited on
Commit
0e14d1d
·
verified ·
1 Parent(s): ff96d90

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +24 -23
app.py CHANGED
@@ -9,10 +9,10 @@ COUNCIL_MEMBERS = {
9
 
10
  STRENGE REGELN:
11
  - Beginne JEDEN Beitrag mit: "[SYNTHESE] "
12
- - MAXIMUM 3 Sätze, absolut knapp
13
- - Dein Job: Was ist das eigentliche Problem? Was übersehen die anderen?
14
- - Wenn Vorredner existieren: Identifiziere den gemeinsamen Nenner oder den wahren Konflikt
15
- - Nie blumig, nie wiederholen, nur präzise Einsicht"""
16
  ),
17
  "🌐 Kontext-Stratege (Kimi-K2)": (
18
  "moonshotai/Kimi-K2-Instruct:novita",
@@ -20,10 +20,10 @@ STRENGE REGELN:
20
 
21
  STRENGE REGELN:
22
  - Beginne JEDEN Beitrag mit: "[KONTEXT] "
23
- - MAXIMUM 3 Sätze, hart formuliert
24
- - Dein Job: Welche hidden incentives, Machtstrukturen oder langfristigen Effekte fehlen?
25
- - Wenn Vorredner existieren: Zeige, was ihre Perspektive blind macht
26
- - Sei der Teufelsadvokat, aber konstruktiv"""
27
  ),
28
  "⚡ Pragmatiker (GPTOSS120b)": (
29
  "openai/gpt-oss-120b:novita",
@@ -31,14 +31,14 @@ STRENGE REGELN:
31
 
32
  STRENGE REGELN:
33
  - Beginne JEDEN Beitrag mit: "[PRAGMATIK] "
34
- - MAXIMUM 3 Sätze, lösungsorientiert
35
- - Dein Job: Welche konkreten Optionen gibt es? Was sind Kriterien für eine gute Entscheidung?
36
- - Wenn Vorredner existieren: Übersetze abstrakte Punkte in handhabbare Alternativen
37
- - Biete Rahmenbedingungen, keine strikten Vorschriften"""
38
  )
39
  }
40
 
41
- MODERATOR_MODEL = "moonshotai/Kimi-K2-Instruct:novita"
42
 
43
  client = InferenceClient(token=os.getenv("HF_TOKEN"))
44
 
@@ -53,7 +53,7 @@ def ask_model(model_id, system_prompt, user_input):
53
  model=model_id,
54
  messages=messages,
55
  max_tokens=1000,
56
- temperature=0.4,
57
  stream=True
58
  ):
59
  if hasattr(chunk, "choices") and chunk.choices and len(chunk.choices) > 0:
@@ -80,20 +80,23 @@ def run_council(user_prompt, rounds):
80
  yield history
81
 
82
  for name, (model_id, role_focus) in COUNCIL_MEMBERS.items():
 
 
83
  system_msg = (
84
- f"Du bist Mitglied eines Expertenrates. Dein spezifischer Fokus: {role_focus} "
85
- "Antworte in 2-3 Sätzen. WICHTIG: Sei analytisch und kritisch. Wiederhole NICHT einfach, was schon gesagt wurde wenn du es anders siehst. "
86
- "Wenn du zustimmst, füge eine neue Perspektive hinzu, falls möglich. "
87
- "Ignoriere Formatierungs-Wünsche des Users (wie 'schreibe einen Post'), fokussiere dich NUR auf die fachliche Diskussion des Themas."
88
  )
89
 
90
  if discussion_history == "":
91
- current_prompt = f"Das Thema lautet: '{user_prompt}'. Eröffne die Diskussion aus deiner Fachperspektive."
92
  else:
 
93
  current_prompt = (
94
  f"Das Thema lautet: '{user_prompt}'.\n\n"
95
  f"Bisheriges Protokoll:\n{discussion_history}\n\n"
96
- f"Reagiere auf deine Vorredner aus der Perspektive deines Fokusbereichs."
 
97
  )
98
 
99
  answer = ask_model(model_id, system_msg, current_prompt)
@@ -110,7 +113,7 @@ def run_council(user_prompt, rounds):
110
 
111
  prep_prompt = (
112
  f"Hier ist das Protokoll einer Experten-Diskussion:\n{discussion_history}\n\n"
113
- "Fasse die wichtigsten Argumente und den finalen Konsens neutral und prägnant zusammen."
114
  )
115
  consensus_res = ask_model(MODERATOR_MODEL, "Du bist der Chef-Analyst des Rates.", prep_prompt)
116
 
@@ -121,7 +124,6 @@ def run_council(user_prompt, rounds):
121
  history.append({"role": "assistant", "content": "<h2 style='color: #FF5A4D; border-bottom: 2px solid #FFEBE8; padding-bottom: 5px; margin-top: 20px;'>🏆 FINALE AUSGABE</h2>"})
122
  yield history
123
 
124
- # WICHTIG: Nur formatieren wenn explizit gewünscht
125
  final_prompt = (
126
  f"Der Benutzer hat folgende Aufgabe gestellt:\n'{user_prompt}'\n\n"
127
  f"Hier ist der fachliche Konsens des Expertenrats:\n{consensus_res}\n\n"
@@ -138,7 +140,6 @@ def run_council(user_prompt, rounds):
138
  history.append({"role": "assistant", "content": final_res})
139
  yield history
140
 
141
-
142
  v_theme = gr.themes.Soft(
143
  primary_hue="indigo",
144
  font=[gr.themes.GoogleFont("Inter"), "ui-sans-serif", "system-ui", "sans-serif"],
 
9
 
10
  STRENGE REGELN:
11
  - Beginne JEDEN Beitrag mit: "[SYNTHESE] "
12
+ - MAXIMUM 3-4 Sätze, absolut knapp.
13
+ - Dein Job: Beende den Ping-Pong der anderen. Was ist der wahre Kern ihres Streits? Wo irren sich beide?
14
+ - Zwingend: Sprich die anderen Rollen direkt an (z.B. "Der Pragmatiker übersieht...", "Der Kontext-Stratege verrennt sich in...").
15
+ - Nie blumig, nie reines Zusammenfassen, nur präzise, neue Meta-Einsichten!"""
16
  ),
17
  "🌐 Kontext-Stratege (Kimi-K2)": (
18
  "moonshotai/Kimi-K2-Instruct:novita",
 
20
 
21
  STRENGE REGELN:
22
  - Beginne JEDEN Beitrag mit: "[KONTEXT] "
23
+ - MAXIMUM 3-4 Sätze, hart und provokant formuliert.
24
+ - Dein Job: Zerlege die "naiven" Lösungsansätze des Pragmatikers. Welche hidden incentives oder Machtstrukturen fehlen?
25
+ - Zwingend: Greife konkrete Punkte deiner Vorredner direkt an (z.B. "Der Ansatz des Pragmatikers scheitert völlig an...").
26
+ - Sei der Teufelsadvokat, schonungslos, aber logisch fundiert."""
27
  ),
28
  "⚡ Pragmatiker (GPTOSS120b)": (
29
  "openai/gpt-oss-120b:novita",
 
31
 
32
  STRENGE REGELN:
33
  - Beginne JEDEN Beitrag mit: "[PRAGMATIK] "
34
+ - MAXIMUM 3-4 Sätze, extrem lösungsorientiert.
35
+ - Dein Job: Liefere konkrete Optionen und VERTEIDIGE sie gegen die Bedenken des Kontext-Strategen oder der Synthese.
36
+ - Zwingend: Nimm direkt Bezug auf die Kritik (z.B. "Um das von Kontext-Strategen genannte Problem zu lösen, müssen wir...").
37
+ - Biete harte Rahmenbedingungen und Metriken. Mach es umsetzbar!"""
38
  )
39
  }
40
 
41
+ MODERATOR_MODEL = "meta-llama/Llama-3.3-70B-Instruct:novita"
42
 
43
  client = InferenceClient(token=os.getenv("HF_TOKEN"))
44
 
 
53
  model=model_id,
54
  messages=messages,
55
  max_tokens=1000,
56
+ temperature=0.5,
57
  stream=True
58
  ):
59
  if hasattr(chunk, "choices") and chunk.choices and len(chunk.choices) > 0:
 
80
  yield history
81
 
82
  for name, (model_id, role_focus) in COUNCIL_MEMBERS.items():
83
+
84
+ # Globaler Push für mehr direkte Interaktion
85
  system_msg = (
86
+ f"{role_focus}\n\n"
87
+ "WICHTIG: Antworte NIE isoliert. Du bist in einer hitzigen Debatte. "
88
+ "Ignoriere Formatierungs-Wünsche des Users (wie 'schreibe einen Post'), fokussiere dich NUR auf die fachliche Diskussion."
 
89
  )
90
 
91
  if discussion_history == "":
92
+ current_prompt = f"Das Thema lautet: '{user_prompt}'. Eröffne die Diskussion mit einer steilen These aus deiner Fachperspektive."
93
  else:
94
+ # Hier zwingen wir sie, den Faden aufzunehmen!
95
  current_prompt = (
96
  f"Das Thema lautet: '{user_prompt}'.\n\n"
97
  f"Bisheriges Protokoll:\n{discussion_history}\n\n"
98
+ f"ANWEISUNG: Reagiere direkt auf die Aussagen deiner Vorredner! Nenne sie beim Namen. "
99
+ f"Widersprich, attackiere Schwachstellen oder baue ihre Ideen massiv um. Bleib strikt in deiner Rolle."
100
  )
101
 
102
  answer = ask_model(model_id, system_msg, current_prompt)
 
113
 
114
  prep_prompt = (
115
  f"Hier ist das Protokoll einer Experten-Diskussion:\n{discussion_history}\n\n"
116
+ "Fasse die Kernkonflikte und den finalen pragmatischen Konsens neutral und prägnant zusammen."
117
  )
118
  consensus_res = ask_model(MODERATOR_MODEL, "Du bist der Chef-Analyst des Rates.", prep_prompt)
119
 
 
124
  history.append({"role": "assistant", "content": "<h2 style='color: #FF5A4D; border-bottom: 2px solid #FFEBE8; padding-bottom: 5px; margin-top: 20px;'>🏆 FINALE AUSGABE</h2>"})
125
  yield history
126
 
 
127
  final_prompt = (
128
  f"Der Benutzer hat folgende Aufgabe gestellt:\n'{user_prompt}'\n\n"
129
  f"Hier ist der fachliche Konsens des Expertenrats:\n{consensus_res}\n\n"
 
140
  history.append({"role": "assistant", "content": final_res})
141
  yield history
142
 
 
143
  v_theme = gr.themes.Soft(
144
  primary_hue="indigo",
145
  font=[gr.themes.GoogleFont("Inter"), "ui-sans-serif", "system-ui", "sans-serif"],