SimrusDenuvo commited on
Commit
73410d3
·
verified ·
1 Parent(s): f1b5d20

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +35 -10
app.py CHANGED
@@ -4,7 +4,6 @@ import matplotlib.pyplot as plt
4
  import io
5
  from PIL import Image
6
 
7
- # Оценки от 1 до 5
8
  metrics = {
9
  "Классификация обращений": {
10
  "ChatGPT": {"Точность": 5, "Интерпретируемость": 4, "Стабильность": 4, "Время отклика": 3, "Применимость": 4},
@@ -53,7 +52,7 @@ def update(task, selected_criteria):
53
  x = np.arange(len(models))
54
  width = 0.8 / len(criteria)
55
 
56
- # График 1: сравнение по критериям
57
  fig1, ax1 = plt.subplots(figsize=(5, 3))
58
  for i, crit in enumerate(criteria):
59
  values = [metrics[task][m][crit] for m in models]
@@ -67,20 +66,24 @@ def update(task, selected_criteria):
67
  ax1.set_ylim(0, 5.5)
68
  ax1.set_ylabel("Оценка (1–5)")
69
  ax1.set_title(f"Сравнение моделей по критериям\nЗадача: {task}")
70
- ax1.legend(fontsize=7, loc='upper right')
71
  ax1.grid(axis='y', linestyle='--', alpha=0.3)
 
 
72
  fig1.patch.set_facecolor('#1e1e1e')
73
  ax1.set_facecolor('#1e1e1e')
74
  ax1.tick_params(colors='white')
75
  ax1.yaxis.label.set_color('white')
76
  ax1.xaxis.label.set_color('white')
77
  ax1.title.set_color('white')
 
 
 
78
  ax1.legend().get_frame().set_facecolor('#2e2e2e')
79
  ax1.legend().get_frame().set_edgecolor('#444')
80
  ax1.xaxis.labelpad = 10
81
- fig1.subplots_adjust(bottom=0.2)
82
 
83
- # График 2: средний балл
84
  avg_scores = []
85
  for model in models:
86
  vals = metrics[task][model]
@@ -104,16 +107,38 @@ def update(task, selected_criteria):
104
  ax2.xaxis.label.set_color('white')
105
  ax2.title.set_color('white')
106
  ax2.xaxis.labelpad = 10
107
- fig2.subplots_adjust(bottom=0.2)
108
 
109
- # Лидер
110
  sums = {model: sum(metrics[task][model][crit] for crit in criteria) for model in models}
111
  leader = max(sums, key=sums.get)
112
- result = f"📌 **Модель `{leader}` лидирует** по выбранным критериям в задаче **{task}**."
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
113
 
114
- return cards[0], cards[1], cards[2], fig_to_image(fig1), fig_to_image(fig2), result
115
 
116
- # CSS — тёмная тема
117
  css = """
118
  .gradio-container { font-family: Arial, sans-serif; background-color: #181818; color: white; }
119
  .card.dark-card { background: #2e2e2e; border-radius: 8px; padding: 10px; margin: 10px; }
 
4
  import io
5
  from PIL import Image
6
 
 
7
  metrics = {
8
  "Классификация обращений": {
9
  "ChatGPT": {"Точность": 5, "Интерпретируемость": 4, "Стабильность": 4, "Время отклика": 3, "Применимость": 4},
 
52
  x = np.arange(len(models))
53
  width = 0.8 / len(criteria)
54
 
55
+ # График 1
56
  fig1, ax1 = plt.subplots(figsize=(5, 3))
57
  for i, crit in enumerate(criteria):
58
  values = [metrics[task][m][crit] for m in models]
 
66
  ax1.set_ylim(0, 5.5)
67
  ax1.set_ylabel("Оценка (1–5)")
68
  ax1.set_title(f"Сравнение моделей по критериям\nЗадача: {task}")
 
69
  ax1.grid(axis='y', linestyle='--', alpha=0.3)
70
+
71
+ # Цвета и стили
72
  fig1.patch.set_facecolor('#1e1e1e')
73
  ax1.set_facecolor('#1e1e1e')
74
  ax1.tick_params(colors='white')
75
  ax1.yaxis.label.set_color('white')
76
  ax1.xaxis.label.set_color('white')
77
  ax1.title.set_color('white')
78
+
79
+ # Легенда — ВНЕ графика
80
+ ax1.legend(fontsize=8, loc='upper center', bbox_to_anchor=(0.5, 1.25), ncol=3, frameon=True)
81
  ax1.legend().get_frame().set_facecolor('#2e2e2e')
82
  ax1.legend().get_frame().set_edgecolor('#444')
83
  ax1.xaxis.labelpad = 10
84
+ fig1.subplots_adjust(top=0.75, bottom=0.25)
85
 
86
+ # График 2
87
  avg_scores = []
88
  for model in models:
89
  vals = metrics[task][model]
 
107
  ax2.xaxis.label.set_color('white')
108
  ax2.title.set_color('white')
109
  ax2.xaxis.labelpad = 10
110
+ fig2.subplots_adjust(bottom=0.25)
111
 
112
+ # Лидер в текущей задаче
113
  sums = {model: sum(metrics[task][model][crit] for crit in criteria) for model in models}
114
  leader = max(sums, key=sums.get)
115
+ result = f"### 📌 <span style='font-size: 18px;'>**Модель `{leader}` лидирует** по выбранным критериям в задаче **{task}**.</span>"
116
+
117
+ # Общий анализ по всем задачам
118
+ model_scores = {model: [] for model in models}
119
+ for tsk in metrics:
120
+ for model in models:
121
+ vals = metrics[tsk][model]
122
+ selected = selected_criteria if selected_criteria else vals.keys()
123
+ model_scores[model].extend([vals[c] for c in selected])
124
+
125
+ avg_all = {model: round(np.mean(scores), 2) for model, scores in model_scores.items()}
126
+ overall_leader = max(avg_all, key=avg_all.get)
127
+
128
+ analysis_text = f"""
129
+ <br><br>
130
+ ### 🔎 <span style='font-size: 17px;'>**Общий анализ моделей:**</span>
131
+
132
+ - ChatGPT — средняя оценка: **{avg_all["ChatGPT"]}/5**
133
+ - GigaChat — средняя оценка: **{avg_all["GigaChat"]}/5**
134
+ - DeepSeek — средняя оценка: **{avg_all["DeepSeek"]}/5**
135
+
136
+ 📊 <span style='font-size: 18px;'>**Лидирует модель `{overall_leader}`** по суммарным показателям в выбранных задачах.</span>
137
+ """
138
 
139
+ return cards[0], cards[1], cards[2], fig_to_image(fig1), fig_to_image(fig2), result + analysis_text
140
 
141
+ # CSS
142
  css = """
143
  .gradio-container { font-family: Arial, sans-serif; background-color: #181818; color: white; }
144
  .card.dark-card { background: #2e2e2e; border-radius: 8px; padding: 10px; margin: 10px; }