Spaces:
Running
Running
Update app.py
Browse files
app.py
CHANGED
|
@@ -2,11 +2,12 @@ import gradio as gr
|
|
| 2 |
from huggingface_hub import InferenceClient
|
| 3 |
import os
|
| 4 |
|
| 5 |
-
# Die Ratsmitglieder
|
|
|
|
| 6 |
COUNCIL_MEMBERS = {
|
| 7 |
-
"
|
| 8 |
-
"
|
| 9 |
-
"
|
| 10 |
}
|
| 11 |
|
| 12 |
# Ein garantierter Chat-Model-Moderator
|
|
@@ -38,26 +39,42 @@ def run_council(user_prompt, rounds):
|
|
| 38 |
history = [{"role": "user", "content": user_prompt}]
|
| 39 |
yield history
|
| 40 |
|
| 41 |
-
|
|
|
|
| 42 |
|
| 43 |
for r in range(int(rounds)):
|
| 44 |
round_header = f"### ZYKLUS {r+1}"
|
| 45 |
history.append({"role": "assistant", "content": round_header})
|
| 46 |
yield history
|
| 47 |
|
| 48 |
-
round_notes = ""
|
| 49 |
for name, model_id in COUNCIL_MEMBERS.items():
|
| 50 |
-
|
| 51 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 52 |
formatted_answer = f"**{name}**: {answer}"
|
| 53 |
|
|
|
|
|
|
|
|
|
|
|
|
|
| 54 |
history.append({"role": "assistant", "content": formatted_answer})
|
| 55 |
-
round_notes += f"\n{formatted_answer}\n"
|
| 56 |
yield history
|
| 57 |
-
|
| 58 |
-
current_context += f"\nZusammenfassung Zyklus {r+1}:{round_notes}"
|
| 59 |
|
| 60 |
-
|
|
|
|
|
|
|
|
|
|
| 61 |
history.append({"role": "assistant", "content": "### 🏆 FINALE ENTSCHEIDUNG"})
|
| 62 |
history.append({"role": "assistant", "content": final_res})
|
| 63 |
yield history
|
|
|
|
| 2 |
from huggingface_hub import InferenceClient
|
| 3 |
import os
|
| 4 |
|
| 5 |
+
# Die Ratsmitglieder - Ich habe die UI-Namen etwas neutraler gemacht,
|
| 6 |
+
# der System-Prompt ist jetzt für alle gleich (siehe unten in der Funktion)
|
| 7 |
COUNCIL_MEMBERS = {
|
| 8 |
+
"Mitglied 1 (Llama)": "meta-llama/Llama-3.3-70B-Instruct",
|
| 9 |
+
"Mitglied 2 (DeepSeek)": "deepseek-ai/DeepSeek-V3",
|
| 10 |
+
"Mitglied 3 (Qwen)": "Qwen/Qwen2.5-Coder-32B-Instruct"
|
| 11 |
}
|
| 12 |
|
| 13 |
# Ein garantierter Chat-Model-Moderator
|
|
|
|
| 39 |
history = [{"role": "user", "content": user_prompt}]
|
| 40 |
yield history
|
| 41 |
|
| 42 |
+
# Hier speichern wir fortlaufend den gesamten Chatverlauf
|
| 43 |
+
discussion_history = ""
|
| 44 |
|
| 45 |
for r in range(int(rounds)):
|
| 46 |
round_header = f"### ZYKLUS {r+1}"
|
| 47 |
history.append({"role": "assistant", "content": round_header})
|
| 48 |
yield history
|
| 49 |
|
|
|
|
| 50 |
for name, model_id in COUNCIL_MEMBERS.items():
|
| 51 |
+
# Der neue, neutrale System-Prompt für alle
|
| 52 |
+
system_msg = "Du bist ein Council Member eines Rates, bestehend aus mehreren Mitgliedern. Antworte in 2-3 Sätzen und bleib prägnant."
|
| 53 |
+
|
| 54 |
+
# Die Anweisung an das Modell ändert sich, je nachdem ob es der erste Sprecher ist oder nicht
|
| 55 |
+
if discussion_history == "":
|
| 56 |
+
current_prompt = f"Die Frage an den Rat lautet: '{user_prompt}'. Bitte eröffne die Diskussion mit deiner ersten Einschätzung."
|
| 57 |
+
else:
|
| 58 |
+
current_prompt = (
|
| 59 |
+
f"Die ursprüngliche Frage lautet: '{user_prompt}'.\n\n"
|
| 60 |
+
f"Bisheriges Protokoll der Sitzung:\n{discussion_history}\n\n"
|
| 61 |
+
f"Du bist nun an der Reihe. Bitte reagiere auf die bisherigen Aussagen deiner Vorredner und füge deine eigene Perspektive hinzu."
|
| 62 |
+
)
|
| 63 |
+
|
| 64 |
+
answer = ask_model(model_id, system_msg, current_prompt)
|
| 65 |
formatted_answer = f"**{name}**: {answer}"
|
| 66 |
|
| 67 |
+
# WICHTIG: Wir updaten die History SOFORT. Das nächste Modell in der Schleife
|
| 68 |
+
# liest diesen Text also direkt im nächsten Durchlauf als "Bisheriges Protokoll".
|
| 69 |
+
discussion_history += f"{formatted_answer}\n\n"
|
| 70 |
+
|
| 71 |
history.append({"role": "assistant", "content": formatted_answer})
|
|
|
|
| 72 |
yield history
|
|
|
|
|
|
|
| 73 |
|
| 74 |
+
# Finale Zusammenfassung durch den Moderator
|
| 75 |
+
mod_prompt = f"Das ursprüngliche Thema war: '{user_prompt}'.\n\nHier ist das komplette Protokoll des Rates:\n{discussion_history}\n\nFasse den gefundenen Konsens oder die Kernpunkte in 3 Sätzen zusammen."
|
| 76 |
+
final_res = ask_model(MODERATOR_MODEL, "Du bist der Moderator des Rates.", mod_prompt)
|
| 77 |
+
|
| 78 |
history.append({"role": "assistant", "content": "### 🏆 FINALE ENTSCHEIDUNG"})
|
| 79 |
history.append({"role": "assistant", "content": final_res})
|
| 80 |
yield history
|