aidn commited on
Commit
1c4146a
·
verified ·
1 Parent(s): 0f65531

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +72 -64
app.py CHANGED
@@ -7,7 +7,7 @@ import dagshub
7
  dagshub.init(repo_owner='homuhe', repo_name='PromptPlenum-Tracking', mlflow=True)
8
 
9
  # ==========================================
10
- # 1. KONFIGURATION & PROMPTS (UNIVERSAL EDITION)
11
  # ==========================================
12
 
13
  MODERATOR_MODEL = "meta-llama/Llama-3.3-70B-Instruct:groq"
@@ -112,7 +112,7 @@ class PromptManager:
112
  )
113
 
114
  # ==========================================
115
- # 2. CORE SERVICES (API & UI Helpers)
116
  # ==========================================
117
  class LLMService:
118
  """Kapselt die gesamte API-Kommunikation mit Hugging Face und trackt sie in MLflow Traces."""
@@ -163,7 +163,7 @@ class UIHelper:
163
  return f"**<span style='color: {color}; font-size: 1.1em;'>👤 {name}</span>**\n\n> {content}"
164
 
165
  # ==========================================
166
- # 3. DER ORCHESTRATOR (Die Business Logik)
167
  # ==========================================
168
  class PlenumOrchestrator:
169
  """Steuert den gesamten Diskussions- und Generierungsprozess."""
@@ -177,74 +177,82 @@ class PlenumOrchestrator:
177
  yield [{"role": "assistant", "content": "Bitte gib ein Thema oder eine Frage ein."}]
178
  return
179
 
180
- history = [{"role": "user", "content": user_prompt}]
181
- yield history
182
-
183
- discussion_history = ""
184
-
185
- # --- KICK-OFF ---
186
- history.append({"role": "assistant", "content": self.ui.header("🎤 MODERATOR: SITZUNGSERÖFFNUNG")})
187
- yield history
188
-
189
- kickoff_res = self.llm.ask(
190
- MODERATOR_MODEL,
191
- self.prompts.get_moderator_kickoff_sys(),
192
- f"User-Anfrage: '{user_prompt}'\nBriefe das Team."
193
- )
194
- discussion_history += f"Moderator (Kick-off): {kickoff_res}\n\n"
195
- history.append({"role": "assistant", "content": self.ui.message("🎤 Moderator", kickoff_res, "#FF5A4D")})
196
- yield history
197
 
198
- # --- ZYKLEN ---
199
- for r in range(int(rounds)):
200
- history.append({"role": "assistant", "content": self.ui.header(f"🔄 ZYKLUS {r+1} - EXPERTENDEBATTE", "#4241A6")})
201
  yield history
202
 
203
- # Moderator Steuerung (ab Runde 2)
204
- if r > 0:
205
- mid_res = self.llm.ask(
206
- MODERATOR_MODEL,
207
- self.prompts.get_moderator_mid_sys(),
208
- f"Protokoll:\n{discussion_history}\n\nGib die Anweisung."
209
- )
210
- discussion_history += f"Moderator (Steuerung): {mid_res}\n\n"
211
- history.append({"role": "assistant", "content": self.ui.message("🎤 Moderator (Steuerung)", mid_res, "#FF5A4D")})
212
- yield history
 
 
 
 
213
 
214
- # Experten antworten
215
- for name, config in COUNCIL_MEMBERS.items():
216
- sys_msg = self.prompts.get_expert_sys(config["role"])
217
- user_msg = self.prompts.get_expert_user_prompt(user_prompt, discussion_history, name)
218
-
219
- answer = self.llm.ask(config["model"], sys_msg, user_msg)
220
- discussion_history += f"{name}: {answer}\n\n"
221
 
222
- history.append({"role": "assistant", "content": self.ui.message(name, answer)})
223
- yield history
 
 
 
 
 
 
 
 
224
 
225
- # --- ANALYSE ---
226
- history.append({"role": "assistant", "content": self.ui.header("🧠 MODERATOR: ANALYSE DER DISKUSSION")})
227
- yield history
228
-
229
- consensus_res = self.llm.ask(
230
- MODERATOR_MODEL,
231
- self.prompts.get_analysis_sys(),
232
- self.prompts.get_analysis_user(discussion_history)
233
- )
234
- history.append({"role": "assistant", "content": f"> {consensus_res}"})
235
- yield history
236
 
237
- # --- FINALE AUSGABE ---
238
- history.append({"role": "assistant", "content": self.ui.header("🏆 FINALE AUSGABE")})
239
- yield history
240
-
241
- final_res = self.llm.ask(
242
- MODERATOR_MODEL,
243
- self.prompts.get_final_sys(),
244
- self.prompts.get_final_user(user_prompt, consensus_res)
245
- )
246
- history.append({"role": "assistant", "content": final_res})
247
- yield history
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
248
 
249
  # Instanziiere den Orchestrator
250
  orchestrator = PlenumOrchestrator()
 
7
  dagshub.init(repo_owner='homuhe', repo_name='PromptPlenum-Tracking', mlflow=True)
8
 
9
  # ==========================================
10
+ # 1. KONFIGURATION & PROMPTS
11
  # ==========================================
12
 
13
  MODERATOR_MODEL = "meta-llama/Llama-3.3-70B-Instruct:groq"
 
112
  )
113
 
114
  # ==========================================
115
+ # 2. CORE SERVICES
116
  # ==========================================
117
  class LLMService:
118
  """Kapselt die gesamte API-Kommunikation mit Hugging Face und trackt sie in MLflow Traces."""
 
163
  return f"**<span style='color: {color}; font-size: 1.1em;'>👤 {name}</span>**\n\n> {content}"
164
 
165
  # ==========================================
166
+ # 3. DER ORCHESTRATOR
167
  # ==========================================
168
  class PlenumOrchestrator:
169
  """Steuert den gesamten Diskussions- und Generierungsprozess."""
 
177
  yield [{"role": "assistant", "content": "Bitte gib ein Thema oder eine Frage ein."}]
178
  return
179
 
180
+ with mlflow.start_span(name="Plenum_Session", span_type="CHAIN") as session_span:
181
+
182
+ # Wir loggen den Start-Input für die Übersicht
183
+ session_span.set_inputs({"user_prompt": user_prompt, "rounds": rounds})
 
 
 
 
 
 
 
 
 
 
 
 
 
184
 
185
+ history = [{"role": "user", "content": user_prompt}]
 
 
186
  yield history
187
 
188
+ discussion_history = ""
189
+
190
+ # --- KICK-OFF ---
191
+ history.append({"role": "assistant", "content": self.ui.header("🎤 MODERATOR: SITZUNGSERÖFFNUNG")})
192
+ yield history
193
+
194
+ kickoff_res = self.llm.ask(
195
+ MODERATOR_MODEL,
196
+ self.prompts.get_moderator_kickoff_sys(),
197
+ f"User-Anfrage: '{user_prompt}'\nBriefe das Team."
198
+ )
199
+ discussion_history += f"Moderator (Kick-off): {kickoff_res}\n\n"
200
+ history.append({"role": "assistant", "content": self.ui.message("🎤 Moderator", kickoff_res, "#FF5A4D")})
201
+ yield history
202
 
203
+ # --- ZYKLEN ---
204
+ for r in range(int(rounds)):
205
+ history.append({"role": "assistant", "content": self.ui.header(f"🔄 ZYKLUS {r+1} - EXPERTENDEBATTE", "#4241A6")})
206
+ yield history
 
 
 
207
 
208
+ # Moderator Steuerung (ab Runde 2)
209
+ if r > 0:
210
+ mid_res = self.llm.ask(
211
+ MODERATOR_MODEL,
212
+ self.prompts.get_moderator_mid_sys(),
213
+ f"Protokoll:\n{discussion_history}\n\nGib die Anweisung."
214
+ )
215
+ discussion_history += f"Moderator (Steuerung): {mid_res}\n\n"
216
+ history.append({"role": "assistant", "content": self.ui.message("🎤 Moderator (Steuerung)", mid_res, "#FF5A4D")})
217
+ yield history
218
 
219
+ # Experten antworten
220
+ for name, config in COUNCIL_MEMBERS.items():
221
+ sys_msg = self.prompts.get_expert_sys(config["role"])
222
+ user_msg = self.prompts.get_expert_user_prompt(user_prompt, discussion_history, name)
223
+
224
+ answer = self.llm.ask(config["model"], sys_msg, user_msg)
225
+ discussion_history += f"{name}: {answer}\n\n"
226
+
227
+ history.append({"role": "assistant", "content": self.ui.message(name, answer)})
228
+ yield history
 
229
 
230
+ # --- ANALYSE ---
231
+ history.append({"role": "assistant", "content": self.ui.header("🧠 MODERATOR: ANALYSE DER DISKUSSION")})
232
+ yield history
233
+
234
+ consensus_res = self.llm.ask(
235
+ MODERATOR_MODEL,
236
+ self.prompts.get_analysis_sys(),
237
+ self.prompts.get_analysis_user(discussion_history)
238
+ )
239
+ history.append({"role": "assistant", "content": f"> {consensus_res}"})
240
+ yield history
241
+
242
+ # --- FINALE AUSGABE ---
243
+ history.append({"role": "assistant", "content": self.ui.header("🏆 FINALE AUSGABE")})
244
+ yield history
245
+
246
+ final_res = self.llm.ask(
247
+ MODERATOR_MODEL,
248
+ self.prompts.get_final_sys(),
249
+ self.prompts.get_final_user(user_prompt, consensus_res)
250
+ )
251
+ history.append({"role": "assistant", "content": final_res})
252
+ yield history
253
+
254
+ # Wir loggen das Endergebnis in den Parent-Span
255
+ session_span.set_outputs({"final_result": final_res})
256
 
257
  # Instanziiere den Orchestrator
258
  orchestrator = PlenumOrchestrator()