ai-tomoni commited on
Commit
68ca02d
·
verified ·
1 Parent(s): ba98398

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +24 -76
app.py CHANGED
@@ -1,56 +1,4 @@
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
@@ -193,29 +141,6 @@ def test_api_connection():
193
  except Exception as e:
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
-
201
- # Nur User-Nachrichten analysieren
202
- user_messages = [msg["content"] for msg in conversation_history if msg["role"] == "user"]
203
-
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():
@@ -322,6 +247,29 @@ def fallback_evaluation(user_message):
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
 
1
+ import gradio as gr
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2
  import openai
3
  import os
4
  from openai import OpenAI
 
141
  except Exception as e:
142
  return f"❌ API Error: {str(e)}"
143
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
144
  def analyze_single_message(user_message):
145
  """Analysiert eine einzelne Nachricht mit LLM-basierter Evaluation"""
146
  if not user_message.strip():
 
247
  "explanation": "Automatische Fallback-Bewertung (LLM nicht verfügbar)"
248
  }
249
 
250
+ def evaluate_conversation():
251
+ """Evaluiert das gesamte Gespräch mit LLM-basierter Analyse"""
252
+ if not conversation_history:
253
+ return "🤔 **Noch kein Gespräch geführt**\n\nBitte führe erst ein Gespräch, bevor du eine Auswertung anforderst."
254
+
255
+ # Nur User-Nachrichten analysieren
256
+ user_messages = [msg["content"] for msg in conversation_history if msg["role"] == "user"]
257
+
258
+ if not user_messages:
259
+ return "🤔 **Keine Nachrichten zu bewerten**\n\nEs wurden noch keine Nachrichten von dir gesendet."
260
+
261
+ # Sammle alle LLM-Bewertungen
262
+ total_evaluations = {"positive": [], "improvement": [], "scores": [], "explanations": []}
263
+
264
+ for message in user_messages:
265
+ evaluation = analyze_single_message(message)
266
+ total_evaluations["positive"].extend(evaluation["positive"])
267
+ total_evaluations["improvement"].extend(evaluation["improvement"])
268
+ total_evaluations["scores"].append(evaluation["score"])
269
+ total_evaluations["explanations"].append(evaluation.get("explanation", ""))
270
+
271
+ return format_final_evaluation(total_evaluations, len(user_messages))
272
+
273
  def format_final_evaluation(total_evaluations, message_count):
274
  """Formatiert die finale Gesamtauswertung in professionellem Format ohne Scores"""
275
  # Häufigkeiten zählen