ai-tomoni commited on
Commit
ba98398
·
verified ·
1 Parent(s): 12e9115

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +257 -84
app.py CHANGED
@@ -1,4 +1,56 @@
1
- import gradio as gr
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2
  import openai
3
  import os
4
  from openai import OpenAI
@@ -142,7 +194,7 @@ def test_api_connection():
142
  return f"❌ API Error: {str(e)}"
143
 
144
  def evaluate_conversation():
145
- """Evaluiert das gesamte Gespräch und gibt eine Gesamtauswertung zurück"""
146
  if not conversation_history:
147
  return "🤔 **Noch kein Gespräch geführt**\n\nBitte führe erst ein Gespräch, bevor du eine Auswertung anforderst."
148
 
@@ -152,123 +204,244 @@ def evaluate_conversation():
152
  if not user_messages:
153
  return "🤔 **Keine Nachrichten zu bewerten**\n\nEs wurden noch keine Nachrichten von dir gesendet."
154
 
155
- # Sammle alle Bewertungen
156
- total_evaluations = {"positive": [], "improvement": [], "scores": []}
157
 
158
  for message in user_messages:
159
  evaluation = analyze_single_message(message)
160
  total_evaluations["positive"].extend(evaluation["positive"])
161
  total_evaluations["improvement"].extend(evaluation["improvement"])
162
  total_evaluations["scores"].append(evaluation["score"])
 
163
 
164
  return format_final_evaluation(total_evaluations, len(user_messages))
165
 
166
  def analyze_single_message(user_message):
167
- """Analysiert eine einzelne Nachricht"""
168
- evaluation = {"positive": [], "improvement": [], "score": 0}
169
- user_lower = user_message.lower()
170
 
171
- # Positive Aspekte prüfen
172
- positive_patterns = {
173
- "Sorge/Interesse zeigen": ["wie geht", "sorge", "wichtig", "interessiert", "kümmert", "wie ist es dir"],
174
- "Offene Fragen stellen": ["was", "wie", "warum", "erzähl", "beschreib", "magst du mir", "kannst du"],
175
- "Unterstützung anbieten": ["kann ich", "helfen", "unterstützen", "da sein", "gemeinsam", "was können wir"],
176
- "Wahrnehmung ansprechen": ["ist mir aufgefallen", "bemerkt", "wahrgenommen", "gesehen", "beobachtet"],
177
- "Empathie zeigen": ["verstehe", "nachvollziehen", "schwer", "belastend", "anstrengend", "klingt schwierig"],
178
- "Wertschätzung ausdrücken": ["schätze", "toll", "stark", "mut", "wichtig dass du", "respektiere"],
179
- "Professionellen Rahmen nutzen": ["schulpsychologie", "beratung", "gespräch", "termin", "unterstützung"],
180
- "Kontinuität zeigen": ["wieder", "weiter", "nächste woche", "bleiben wir", "jederzeit"],
181
- "Ressourcen anbieten": ["ansprechpartner", "hilfe", "beratungsstelle", "unterstützung"]
182
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
183
 
184
- for category, patterns in positive_patterns.items():
185
- if any(pattern in user_lower for pattern in patterns):
186
- evaluation["positive"].append(category)
187
- evaluation["score"] += 1
188
 
189
- # Problematische Aspekte prüfen
190
- negative_patterns = {
191
- "Verharmlosen": ["wird schon", "alle haben mal", "ist normal", "nicht so schlimm", "übertreibst", "pubertät"],
192
- "Einfache Ratschläge": ["musst nur", "einfach mal", "denk positiv", "reiß dich zusammen", "mehr schlafen"],
193
- "Vergleichen": ["anderen geht", "mir ging", "früher war", "bei mir", "andere schüler"],
194
- "Druck ausüben": ["solltest", "musst", "versuch doch mal", "strengst du dich an", "erwarte ich"],
195
- "Fokus nur auf Leistung": ["noten", "hausaufgaben", "versetzung", "abschluss", "leistung", "zeugnis"],
196
- "Unprofessionell": ["eltern sagen", "wird bestraft", "konsequenzen", "melde ich", "ärger"],
197
- "Persönlich nehmen": ["mir gegenüber", "wegen mir", "ich bin", "mache ich falsch"]
198
- }
199
 
200
- for category, patterns in negative_patterns.items():
201
- if any(pattern in user_lower for pattern in patterns):
202
- evaluation["improvement"].append(category)
203
- evaluation["score"] -= 1
 
 
 
204
 
205
- return evaluation
 
 
 
 
 
206
 
207
  def format_final_evaluation(total_evaluations, message_count):
208
- """Formatiert die finale Gesamtauswertung"""
209
- # Durchschnittsscore berechnen
210
- avg_score = sum(total_evaluations["scores"]) / len(total_evaluations["scores"]) if total_evaluations["scores"] else 0
211
- final_score = max(0, min(5, avg_score + 3)) # Normalisierung auf 0-5
212
-
213
  # Häufigkeiten zählen
214
  from collections import Counter
215
  positive_counts = Counter(total_evaluations["positive"])
216
  improvement_counts = Counter(total_evaluations["improvement"])
217
 
218
- feedback = f"# 📋 GESPRÄCHSAUSWERTUNG - ABSCHLUSSBERICHT\n\n"
219
- feedback += f"**Anzahl analysierter Nachrichten:** {message_count}\n"
220
- feedback += f"**Gesamtbewertung:** {'⭐' * int(final_score)}{'☆' * (5 - int(final_score))} ({final_score:.1f}/5)\n\n"
221
 
222
- # Gesamteinschätzung
223
- if final_score >= 4:
224
- feedback += "## 🏆 **AUSGEZEICHNET**\nProfessionelle Gesprächsführung auf hohem Niveau!\n\n"
225
- elif final_score >= 3:
226
- feedback += "## ✅ **GUT**\nSolide professionelle Gesprächsführung mit Potenzial zur Optimierung.\n\n"
227
- elif final_score >= 2:
228
- feedback += "## ⚠️ **VERBESSERUNGSBEDARF**\nGrundlagen vorhanden, aber wichtige Aspekte sollten beachtet werden.\n\n"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
229
  else:
230
- feedback += "## 🚨 **TRAINING ERFORDERLICH**\nBitte Handout-Empfehlungen nochmals studieren und üben.\n\n"
 
 
231
 
232
- # Stärken
 
 
233
  if positive_counts:
234
- feedback += "### 💪 **DEINE STÄRKEN:**\n"
 
 
 
 
 
 
 
 
 
 
 
 
235
  for skill, count in positive_counts.most_common():
 
236
  percentage = (count / message_count) * 100
237
- feedback += f"**{skill}:** {count}x verwendet ({percentage:.1f}%)\n"
238
- feedback += "\n"
239
 
240
- # Verbesserungsbereiche
241
  if improvement_counts:
242
- feedback += "### 🎯 **VERBESSERUNGSBEREICHE:**\n"
243
- improvement_tips = {
244
- "Verharmlosen": "Gefühle validieren statt bagatellisieren",
245
- "Einfache Ratschläge": "Ressourcenorientiert beraten statt schnelle Lösungen",
246
- "Vergleichen": "Individuelle Situation im Fokus behalten",
247
- "Druck ausüben": "Empowerment statt Erwartungsdruck",
248
- "Fokus nur auf Leistung": "Ganzheitliche Sicht auf den Menschen",
249
- "Unprofessionell": "Professionelle Distanz wahren",
250
- "Persönlich nehmen": "Abweisung als Symptom verstehen"
 
251
  }
 
252
  for issue, count in improvement_counts.most_common():
 
253
  percentage = (count / message_count) * 100
254
- tip = improvement_tips.get(issue, issue)
255
- feedback += f"• **{issue}:** {count}x aufgetreten ({percentage:.1f}%) → {tip}\n"
256
- feedback += "\n"
257
 
258
- # Handlungsempfehlungen
259
- feedback += "### 🎓 **LERNEMPFEHLUNGEN:**\n"
260
- if final_score < 3:
261
- feedback += "• Handout-Gesprächsansätze nochmals durcharbeiten\n"
262
- feedback += " Weitere Simulationen mit Fokus auf empathische Kommunikation\n"
263
- feedback += "• Schulische Unterstützungssysteme besser kennenlernen\n"
264
- elif final_score < 4:
265
- feedback += "• Kontinuität in der Gesprächsführung weiter ausbauen\n"
266
- feedback += "• Ressourcenorientierte Beratung vertiefen\n"
267
- feedback += "• Professionelle Reflexion der eigenen Haltung\n"
 
 
 
 
 
268
  else:
269
- feedback += " Weiterführende Fortbildungen zu Gesprächsführung\n"
270
- feedback += "• Supervision und kollegialer Austausch\n"
271
- feedback += "• Mentoring für Kolleg*innen anbieten\n"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
272
 
273
  return feedback
274
 
 
1
+ def format_final_evaluation(total_evaluations, message_count):
2
+ """Formatiert die finale Gesamtauswertung in professionellem Format"""
3
+ # Durchschnittsscore berechnen
4
+ avg_score = sum(total_evaluations["scores"]) / len(total_evaluations["scores"]) if total_evaluations["scores"] else 0
5
+ final_score = max(0, min(5, avg_score + 3)) # Normalisierung auf 0-5
6
+
7
+ # Häufigkeiten zählen
8
+ from collections import Counter
9
+ positive_counts = Counter(total_evaluations["positive"])
10
+ improvement_counts = Counter(total_evaluations["improvement"])
11
+
12
+ # Professionelle Formatierung
13
+ feedback = f"""# PROFESSIONELLE GESPRÄCHSFÜHRUNGSANALYSE
14
+
15
+ ## EXECUTIVE SUMMARY
16
+
17
+ **Analysierte Gesprächseinheiten:** {message_count}
18
+ **Gesamtbewertung:** {final_score:.1f}/5.0 Punkten
19
+ **Bewertungsverfahren:** KI-gestützte Analyse nach evidenzbasierten Kriterien
20
+ **Analysedatum:** {__import__('datetime').datetime.now().strftime('%d.%m.%Y %H:%M')}
21
+
22
+ ---
23
+
24
+ ## GESAMTBEURTEILUNG
25
+
26
+ """
27
+
28
+ # Professionelle Gesamteinschätzung
29
+ if final_score >= 4.5:
30
+ feedback += """**KOMPETENZLEVEL: EXPERTE (4.5-5.0)**
31
+
32
+ Die Analyse zeigt eine hochprofessionelle Gesprächsführung, die evidenzbasierte Prinzipien der therapeutischen Kommunikation konsequent umsetzt. Die Interaktion entspricht aktuellen Standards der Krisenintervention im Bildungskontext."""
33
+ elif final_score >= 3.5:
34
+ feedback += """**KOMPETENZLEVEL: FORTGESCHRITTEN (3.5-4.4)**
35
+
36
+ Solide professionelle Gesprächsführung mit deutlichen Stärken in der empathischen Kommunikation. Die Grundprinzipien werden überwiegend korrekt angewendet, einzelne Optimierungsbereiche wurden identifiziert."""
37
+ elif final_score >= 2.5:
38
+ feedback += """**KOMPETENZLEVEL: GRUNDLAGEN VORHANDEN (2.5-3.4)**
39
+
40
+ Wesentliche Grundlagen der professionellen Gesprächsführung sind erkennbar. Zur Erreichung des Fachstandards sind jedoch signifikante Verbesserungen in mehreren Kompetenzbereichen erforderlich."""
41
+ else:
42
+ feedback += """**KOMPETENZLEVEL: ENTWICKLUNGSBEDARF (0-2.4)**
43
+
44
+ Die Analyse zeigt erheblichen Entwicklungsbedarf in den Grundlagen der professionellen Gesprächsführung. Eine systematische Fortbildung gemäß aktueller Fachstandards wird dringend empfohlen."""
45
+
46
+ feedback += "\n\n---\n\n"
47
+
48
+ # Kompetenzprofil
49
+ if positive_counts:
50
+ feedback += "## KOMPETENZPROFIL - STÄRKEN\n\n"
51
+
52
+ professional_descriptions = {
53
+ "Sorimport gradio as gr
54
  import openai
55
  import os
56
  from openai import OpenAI
 
194
  return f"❌ API Error: {str(e)}"
195
 
196
  def evaluate_conversation():
197
+ """Evaluiert das gesamte Gespräch mit LLM-basierter Analyse"""
198
  if not conversation_history:
199
  return "🤔 **Noch kein Gespräch geführt**\n\nBitte führe erst ein Gespräch, bevor du eine Auswertung anforderst."
200
 
 
204
  if not user_messages:
205
  return "🤔 **Keine Nachrichten zu bewerten**\n\nEs wurden noch keine Nachrichten von dir gesendet."
206
 
207
+ # Sammle alle LLM-Bewertungen
208
+ total_evaluations = {"positive": [], "improvement": [], "scores": [], "explanations": []}
209
 
210
  for message in user_messages:
211
  evaluation = analyze_single_message(message)
212
  total_evaluations["positive"].extend(evaluation["positive"])
213
  total_evaluations["improvement"].extend(evaluation["improvement"])
214
  total_evaluations["scores"].append(evaluation["score"])
215
+ total_evaluations["explanations"].append(evaluation.get("explanation", ""))
216
 
217
  return format_final_evaluation(total_evaluations, len(user_messages))
218
 
219
  def analyze_single_message(user_message):
220
+ """Analysiert eine einzelne Nachricht mit LLM-basierter Evaluation"""
221
+ if not user_message.strip():
222
+ return {"positive": [], "improvement": [], "score": 0}
223
 
224
+ evaluation_prompt = f"""Du bist ein Experte für professionelle Gesprächsführung im Schulkontext mit depressiven Jugendlichen.
225
+
226
+ Bewerte diese Nachricht einer Lehrkraft/Schulperson an einen 16-jährigen depressiven Schüler:
227
+
228
+ NACHRICHT: "{user_message}"
229
+
230
+ Bewerte die Nachricht nach folgenden Kriterien und gib für jedes Kriterium "ja" oder "nein" an:
231
+
232
+ POSITIVE ASPEKTE:
233
+ 1. Sorge/Interesse zeigen: Zeigt die Nachricht echte Sorge und Interesse für das Wohlbefinden?
234
+ 2. Offene Fragen stellen: Werden offene, einladende Fragen gestellt, die zum Erzählen ermutigen?
235
+ 3. Unterstützung anbieten: Wird konkrete, praktische Unterstützung angeboten?
236
+ 4. Wahrnehmung ansprechen: Werden spezifische Beobachtungen professionell angesprochen?
237
+ 5. Empathie zeigen: Wird Verständnis und emotionale Validierung gezeigt?
238
+ 6. Wertschätzung ausdrücken: Werden positive Eigenschaften oder Stärken betont?
239
+ 7. Professionellen Rahmen nutzen: Werden schulische Hilfssysteme erwähnt oder angeboten?
240
+ 8. Kontinuität zeigen: Wird eine verlässliche, fortlaufende Beziehung signalisiert?
241
+
242
+ PROBLEMATISCHE ASPEKTE:
243
+ 1. Verharmlosen: Werden Gefühle oder Probleme bagatellisiert oder heruntergespielt?
244
+ 2. Einfache Ratschläge: Werden oberflächliche "Lösungen" oder Plattitüden angeboten?
245
+ 3. Vergleichen: Werden Vergleiche mit anderen Personen oder Situationen gezogen?
246
+ 4. Druck ausüben: Wird Leistungs- oder Erwartungsdruck aufgebaut?
247
+ 5. Fokus nur auf Leistung: Geht es hauptsächlich um Noten, Hausaufgaben oder Schulleistung?
248
+ 6. Unprofessionell: Wird unprofessionell reagiert (Drohungen, Bestrafung, etc.)?
249
+ 7. Persönlich nehmen: Wird die Situation auf sich selbst bezogen oder persönlich genommen?
250
+
251
+ Antworte EXAKT in folgendem JSON-Format (keine zusätzlichen Erklärungen):
252
+ {{
253
+ "positive": ["Liste der zutreffenden positiven Aspekte"],
254
+ "improvement": ["Liste der zutreffenden problematischen Aspekte"],
255
+ "score_explanation": "Kurze Begründung der Gesamtbewertung"
256
+ }}"""
257
+
258
+ try:
259
+ response = client.chat.completions.create(
260
+ model=model_name,
261
+ messages=[{"role": "user", "content": evaluation_prompt}],
262
+ max_tokens=300,
263
+ temperature=0.1, # Niedrige Temperatur für konsistente Bewertungen
264
+ top_p=0.9
265
+ )
266
+
267
+ response_text = response.choices[0].message.content.strip()
268
+
269
+ # JSON parsen
270
+ import json
271
+ try:
272
+ evaluation_data = json.loads(response_text)
273
+
274
+ # Score basierend auf positiven vs. negativen Aspekten berechnen
275
+ positive_count = len(evaluation_data.get("positive", []))
276
+ negative_count = len(evaluation_data.get("improvement", []))
277
+ score = positive_count - negative_count
278
+
279
+ return {
280
+ "positive": evaluation_data.get("positive", []),
281
+ "improvement": evaluation_data.get("improvement", []),
282
+ "score": score,
283
+ "explanation": evaluation_data.get("score_explanation", "")
284
+ }
285
+
286
+ except json.JSONDecodeError:
287
+ print(f"JSON Parse Error: {response_text}")
288
+ # Fallback: Einfache Bewertung basierend auf Textlänge und Tonfall
289
+ return fallback_evaluation(user_message)
290
+
291
+ except Exception as e:
292
+ print(f"LLM Evaluation Error: {e}")
293
+ return fallback_evaluation(user_message)
294
+
295
+ def fallback_evaluation(user_message):
296
+ """Einfache Fallback-Bewertung wenn LLM-Evaluation fehlschlägt"""
297
+ score = 0
298
+ positive = []
299
+ improvement = []
300
 
301
+ # Sehr einfache Heuristiken als Backup
302
+ if "?" in user_message:
303
+ positive.append("Offene Fragen stellen")
304
+ score += 1
305
 
306
+ if any(word in user_message.lower() for word in ["helfen", "unterstützen", "da sein"]):
307
+ positive.append("Unterstützung anbieten")
308
+ score += 1
 
 
 
 
 
 
 
309
 
310
+ if any(word in user_message.lower() for word in ["wird schon", "ist normal", "übertreibst"]):
311
+ improvement.append("Verharmlosen")
312
+ score -= 1
313
+
314
+ if any(word in user_message.lower() for word in ["musst", "sollst", "erwarte"]):
315
+ improvement.append("Druck ausüben")
316
+ score -= 1
317
 
318
+ return {
319
+ "positive": positive,
320
+ "improvement": improvement,
321
+ "score": score,
322
+ "explanation": "Automatische Fallback-Bewertung (LLM nicht verfügbar)"
323
+ }
324
 
325
  def format_final_evaluation(total_evaluations, message_count):
326
+ """Formatiert die finale Gesamtauswertung in professionellem Format ohne Scores"""
 
 
 
 
327
  # Häufigkeiten zählen
328
  from collections import Counter
329
  positive_counts = Counter(total_evaluations["positive"])
330
  improvement_counts = Counter(total_evaluations["improvement"])
331
 
332
+ # Qualitative Bewertung basierend auf Verhältnis
333
+ total_positive = sum(positive_counts.values())
334
+ total_negative = sum(improvement_counts.values())
335
 
336
+ # Professionelle Formatierung ohne Scores
337
+ feedback = f"""# PROFESSIONELLE GESPRÄCHSFÜHRUNGSANALYSE
338
+
339
+ ## EXECUTIVE SUMMARY
340
+
341
+ **Analysierte Gesprächseinheiten:** {message_count}
342
+ **Bewertungsverfahren:** Qualitative Analyse nach evidenzbasierten Kriterien der Gesprächsführung
343
+ **Analysedatum:** {__import__('datetime').datetime.now().strftime('%d.%m.%Y, %H:%M Uhr')}
344
+ **Bewertungsgrundlage:** Handlungsempfehlungen für den Umgang mit Depression bei Jugendlichen
345
+
346
+ ---
347
+
348
+ ## GESAMTBEURTEILUNG
349
+
350
+ """
351
+
352
+ # Qualitative Gesamteinschätzung ohne Scores
353
+ if total_positive > total_negative * 2:
354
+ feedback += """**KOMPETENZLEVEL: PROFESSIONELL**
355
+
356
+ Die Analyse zeigt eine hochkompetente Gesprächsführung, die evidenzbasierte Prinzipien der therapeutischen Kommunikation konsequent umsetzt. Die Interaktion entspricht aktuellen Fachstandards der Krisenintervention im Bildungskontext und zeigt eine professionelle Haltung gegenüber Jugendlichen mit depressiven Symptomen."""
357
+ elif total_positive > total_negative:
358
+ feedback += """**KOMPETENZLEVEL: KOMPETENT**
359
+
360
+ Solide professionelle Gesprächsführung mit deutlichen Stärken in der empathischen Kommunikation. Die Grundprinzipien der ressourcenorientierten Beratung werden überwiegend korrekt angewendet. Die Interaktion zeigt Verständnis für die Komplexität depressiver Erkrankungen bei Jugendlichen."""
361
+ elif total_positive == total_negative or abs(total_positive - total_negative) <= 1:
362
+ feedback += """**KOMPETENZLEVEL: ENTWICKLUNGSFÄHIG**
363
+
364
+ Die Analyse zeigt sowohl professionelle Ansätze als auch Bereiche mit Optimierungspotential. Wesentliche Grundlagen der Gesprächsführung sind vorhanden, jedoch ist eine gezielte Weiterentwicklung der Kompetenzen zur Erreichung des Fachstandards empfehlenswert."""
365
  else:
366
+ feedback += """**KOMPETENZLEVEL: FORTBILDUNGSBEDARF**
367
+
368
+ Die Analyse identifiziert erheblichen Entwicklungsbedarf in den Grundlagen der professionellen Gesprächsführung mit Jugendlichen in psychischen Krisen. Eine systematische Fortbildung gemäß aktueller Fachstandards und Supervision wird empfohlen."""
369
 
370
+ feedback += "\n\n---\n\n"
371
+
372
+ # Kompetenzprofil
373
  if positive_counts:
374
+ feedback += "## KOMPETENZPROFIL - PROFESSIONELLE STÄRKEN\n\n"
375
+
376
+ professional_descriptions = {
377
+ "Sorge/Interesse zeigen": "Empathische Grundhaltung und genuine Anteilnahme",
378
+ "Offene Fragen stellen": "Gesprächsführungstechnik zur Förderung der Selbstreflexion",
379
+ "Unterstützung anbieten": "Ressourcenorientierte Beratungsansätze",
380
+ "Wahrnehmung ansprechen": "Professionelle Beobachtungskompetenz und Feedback-Kultur",
381
+ "Empathie zeigen": "Emotionale Validierung und therapeutische Grundhaltung",
382
+ "Wertschätzung ausdrücken": "Stärkenorientierte Kommunikation und Ressourcenaktivierung",
383
+ "Professionellen Rahmen nutzen": "Systemische Beratungsansätze und Netzwerkarbeit",
384
+ "Kontinuität zeigen": "Verlässliche Beziehungsgestaltung und Bindungsförderung"
385
+ }
386
+
387
  for skill, count in positive_counts.most_common():
388
+ description = professional_descriptions.get(skill, skill)
389
  percentage = (count / message_count) * 100
390
+ feedback += f"**{skill}** \n{description} \n*Angewandt in {count} von {message_count} Gesprächseinheiten ({percentage:.1f}%)*\n\n"
 
391
 
392
+ # Entwicklungsbereiche
393
  if improvement_counts:
394
+ feedback += "## ENTWICKLUNGSBEREICHE\n\n"
395
+
396
+ professional_recommendations = {
397
+ "Verharmlosen": "**Empfehlung:** Validierung statt Bagatellisierung - Gefühle und Erfahrungen des Jugendlichen ernst nehmen und als realistische Wahrnehmung anerkennen.",
398
+ "Einfache Ratschläge": "**Empfehlung:** Ressourcenorientierte Beratung entwickeln - Statt schneller Lösungsvorschläge den Jugendlichen bei der Entwicklung eigener Bewältigungsstrategien unterstützen.",
399
+ "Vergleichen": "**Empfehlung:** Individuelle Situation würdigen - Vermeidung von Vergleichen mit anderen Personen oder Situationen, Fokus auf die einzigartige Lebenssituation des Jugendlichen.",
400
+ "Druck ausüben": "**Empfehlung:** Empowerment-Ansatz entwickeln - Statt Erwartungsdruck aufzubauen, Selbstwirksamkeit und Autonomie des Jugendlichen fördern.",
401
+ "Fokus nur auf Leistung": "**Empfehlung:** Ganzheitliche Sichtweise entwickeln - Den Menschen hinter dem Schüler sehen und psychosoziale Faktoren in die Betrachtung einbeziehen.",
402
+ "Unprofessionell": "**Empfehlung:** Professionelle Distanz wahren - Klare Rollenabgrenzung und Einhaltung professioneller Standards in der Kommunikation.",
403
+ "Persönlich nehmen": "**Empfehlung:** Symptomverständnis entwickeln - Abweisung und Widerstand als Teil der Symptomatik verstehen, nicht als persönlichen Angriff interpretieren."
404
  }
405
+
406
  for issue, count in improvement_counts.most_common():
407
+ recommendation = professional_recommendations.get(issue, f"Entwicklungsbereich: {issue}")
408
  percentage = (count / message_count) * 100
409
+ feedback += f"**{issue}** \n{recommendation} \n*Identifiziert in {count} von {message_count} Gesprächseinheiten ({percentage:.1f}%)*\n\n"
 
 
410
 
411
+ # Professionelle Handlungsempfehlungen
412
+ feedback += "## PROFESSIONELLE HANDLUNGSEMPFEHLUNGEN\n\n"
413
+
414
+ if total_positive > total_negative * 2:
415
+ feedback += """### Für Fortgeschrittene
416
+ - **Supervision:** Regelmäßige Fallbesprechungen zur Reflexion komplexer Gesprächssituationen
417
+ - **Weiterbildung:** Vertiefung in spezifischen Methoden der Krisenintervention
418
+ - **Mentoring:** Weitergabe von Expertise an Kolleg*innen und Nachwuchskräfte
419
+ - **Dokumentation:** Entwicklung von Best-Practice-Beispielen für das Team"""
420
+ elif total_positive > total_negative:
421
+ feedback += """### Für Kompetente Praktiker*innen
422
+ - **Reflexion:** Systematische Analyse der eigenen Gesprächsführung und Kommunikationsmuster
423
+ - **Fortbildung:** Teilnahme an spezialisierten Schulungen zu Gesprächsführung in Krisensituationen
424
+ - **Supervision:** Regelmäßiger fachlicher Austausch mit erfahrenen Kolleg*innen
425
+ - **Praxisvertiefung:** Weitere Simulationen und Rollenspiele zur Festigung der Kompetenzen"""
426
  else:
427
+ feedback += """### Für Entwicklungsorientierte
428
+ - **Grundlagentraining:** Systematische Schulung in Gesprächsführungsgrundlagen
429
+ - **Supervision:** Intensive fachliche Begleitung durch erfahrene Supervisor*innen
430
+ - **Literaturstudium:** Vertiefung der theoretischen Grundlagen zu Depression bei Jugendlichen
431
+ - **Mentoring:** Begleitung durch erfahrene Kolleg*innen im Arbeitsalltag"""
432
+
433
+ feedback += f"\n\n---\n\n"
434
+
435
+ # Methodische Hinweise
436
+ feedback += f"""## METHODISCHE HINWEISE
437
+
438
+ **Analyseverfahren:** Die vorliegende Analyse basiert auf einer KI-gestützten Auswertung der Gesprächsführung unter Verwendung evidenzbasierter Kriterien für die professionelle Kommunikation mit Jugendlichen in psychischen Krisen.
439
+
440
+ **Bewertungsgrundlage:** Aktuelle Fachliteratur und Handlungsempfehlungen für den Umgang mit Depression bei Jugendlichen im schulischen Kontext.
441
+
442
+ **Limitation:** Diese Analyse stellt eine Momentaufnahme dar und ersetzt nicht die kontinuierliche Reflexion und Supervision der professionellen Praxis.
443
+
444
+ **Empfehlung:** Verwendung dieser Analyse als Grundlage für Entwicklungsgespräche und Fortbildungsplanung."""
445
 
446
  return feedback
447