aimodelshare 0.3.7__py3-none-any.whl → 0.4.71__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- aimodelshare/moral_compass/__init__.py +51 -2
- aimodelshare/moral_compass/api_client.py +92 -4
- aimodelshare/moral_compass/apps/__init__.py +36 -16
- aimodelshare/moral_compass/apps/ai_consequences.py +98 -88
- aimodelshare/moral_compass/apps/bias_detective_ca.py +2722 -0
- aimodelshare/moral_compass/apps/bias_detective_en.py +2722 -0
- aimodelshare/moral_compass/apps/bias_detective_part1.py +2722 -0
- aimodelshare/moral_compass/apps/bias_detective_part2.py +2465 -0
- aimodelshare/moral_compass/apps/bias_detective_part_es.py +2722 -0
- aimodelshare/moral_compass/apps/ethical_revelation.py +237 -147
- aimodelshare/moral_compass/apps/fairness_fixer.py +1839 -859
- aimodelshare/moral_compass/apps/fairness_fixer_ca.py +1869 -0
- aimodelshare/moral_compass/apps/fairness_fixer_en.py +1869 -0
- aimodelshare/moral_compass/apps/fairness_fixer_es.py +1869 -0
- aimodelshare/moral_compass/apps/judge.py +130 -143
- aimodelshare/moral_compass/apps/justice_equity_upgrade.py +793 -831
- aimodelshare/moral_compass/apps/justice_equity_upgrade_ca.py +815 -0
- aimodelshare/moral_compass/apps/justice_equity_upgrade_en.py +815 -0
- aimodelshare/moral_compass/apps/justice_equity_upgrade_es.py +815 -0
- aimodelshare/moral_compass/apps/mc_integration_helpers.py +227 -745
- aimodelshare/moral_compass/apps/model_building_app_ca.py +4544 -0
- aimodelshare/moral_compass/apps/model_building_app_ca_final.py +3899 -0
- aimodelshare/moral_compass/apps/model_building_app_en.py +4290 -0
- aimodelshare/moral_compass/apps/model_building_app_en_final.py +3869 -0
- aimodelshare/moral_compass/apps/model_building_app_es.py +4362 -0
- aimodelshare/moral_compass/apps/model_building_app_es_final.py +3899 -0
- aimodelshare/moral_compass/apps/model_building_game.py +4211 -935
- aimodelshare/moral_compass/apps/moral_compass_challenge.py +195 -95
- aimodelshare/moral_compass/apps/what_is_ai.py +126 -117
- aimodelshare/moral_compass/challenge.py +98 -17
- {aimodelshare-0.3.7.dist-info → aimodelshare-0.4.71.dist-info}/METADATA +1 -1
- {aimodelshare-0.3.7.dist-info → aimodelshare-0.4.71.dist-info}/RECORD +35 -19
- aimodelshare/moral_compass/apps/bias_detective.py +0 -714
- {aimodelshare-0.3.7.dist-info → aimodelshare-0.4.71.dist-info}/WHEEL +0 -0
- {aimodelshare-0.3.7.dist-info → aimodelshare-0.4.71.dist-info}/licenses/LICENSE +0 -0
- {aimodelshare-0.3.7.dist-info → aimodelshare-0.4.71.dist-info}/top_level.txt +0 -0
|
@@ -5,6 +5,7 @@ Updated with i18n support for English (en), Spanish (es), and Catalan (ca).
|
|
|
5
5
|
import contextlib
|
|
6
6
|
import os
|
|
7
7
|
import gradio as gr
|
|
8
|
+
from functools import lru_cache
|
|
8
9
|
|
|
9
10
|
# -------------------------------------------------------------------------
|
|
10
11
|
# TRANSLATION CONFIGURATION
|
|
@@ -33,7 +34,7 @@ TRANSLATIONS = {
|
|
|
33
34
|
"s2_ex_li2": "• Based on this, the judge kept her in prison",
|
|
34
35
|
"s2_ex_li3": "• In reality, Sarah would have rebuilt her life and never committed another crime",
|
|
35
36
|
"s2_cost_title": "The Human Cost:",
|
|
36
|
-
"s2_cost_li1": "
|
|
37
|
+
"s2_cost_li1": "People who would not re-offend spend unnecessary time in prison",
|
|
37
38
|
"s2_cost_li2": "Families are separated for longer than needed",
|
|
38
39
|
"s2_cost_li3": "Job opportunities and rehabilitation are delayed",
|
|
39
40
|
"s2_cost_li4": "Trust in the justice system erodes",
|
|
@@ -47,7 +48,7 @@ TRANSLATIONS = {
|
|
|
47
48
|
"s3_def": "A <b>false negative</b> occurs when the AI predicts someone is <b style='color:#16a34a;'>LOW RISK</b>, but they DO actually re-offend after being released.",
|
|
48
49
|
"s3_ex_title": "Example Scenario:",
|
|
49
50
|
"s3_ex_li1": "• James was flagged as <b style='color:#16a34a;'>LOW RISK</b>",
|
|
50
|
-
"s3_ex_li2": "• Based on this, the judge released him",
|
|
51
|
+
"s3_ex_li2": "• Based on this, the judge released him on parole",
|
|
51
52
|
"s3_ex_li3": "• Unfortunately, James did commit another serious crime",
|
|
52
53
|
"s3_cost_title": "The Human Cost:",
|
|
53
54
|
"s3_cost_li1": "New victims of preventable crimes",
|
|
@@ -62,14 +63,14 @@ TRANSLATIONS = {
|
|
|
62
63
|
"s4_card_title": "Every AI System Makes Trade-offs",
|
|
63
64
|
"s4_p1": "Here's the harsh reality: <b>No AI system can eliminate both types of errors.</b>",
|
|
64
65
|
"s4_sub1": "<b>If you make the AI more cautious:</b>",
|
|
65
|
-
"s4_sub1_li1": "✓ Fewer false negatives (fewer
|
|
66
|
-
"s4_sub1_li2": "✗ More false positives (more
|
|
66
|
+
"s4_sub1_li1": "✓ Fewer false negatives (fewer people who pose a real risk are released)",
|
|
67
|
+
"s4_sub1_li2": "✗ More false positives (more people who would not re-offend kept in prison)",
|
|
67
68
|
"s4_sub2": "<b>If you make the AI more lenient:</b>",
|
|
68
|
-
"s4_sub2_li1": "✓ Fewer false positives (more
|
|
69
|
-
"s4_sub2_li2": "✗ More false negatives (more
|
|
69
|
+
"s4_sub2_li1": "✓ Fewer false positives (more people who would not re-offend are released)",
|
|
70
|
+
"s4_sub2_li2": "✗ More false negatives (more people who pose a real risk released)",
|
|
70
71
|
"s4_eth_title": "The Ethical Question:",
|
|
71
72
|
"s4_q1": "Which mistake is worse?",
|
|
72
|
-
"s4_q2": "• Keeping
|
|
73
|
+
"s4_q2": "• Keeping people who would not re-offend in prison?<br>• Or releasing individuals who pose a real risk?",
|
|
73
74
|
"s4_conc": "<b>There is no universally 'correct' answer.</b> Different societies, legal systems, and ethical frameworks weigh these trade-offs differently.",
|
|
74
75
|
"s4_final": "<b>This is why understanding AI is crucial.</b> We need to know how these systems work so we can make informed decisions about when and how to use them.",
|
|
75
76
|
"btn_cont": "Continue to Learn About AI ▶️",
|
|
@@ -87,142 +88,142 @@ TRANSLATIONS = {
|
|
|
87
88
|
"intro_box": "Acabas de tomar decisiones basadas en las predicciones de una IA.<br>Pero los sistemas de IA no son perfectos. Exploremos qué sucede cuando cometen errores.",
|
|
88
89
|
"loading": "⏳ Cargando...",
|
|
89
90
|
# Step 1
|
|
90
|
-
"s1_title": "
|
|
91
|
-
"s1_p1": "En el ejercicio anterior, confiaste en un sistema de IA para predecir qué
|
|
91
|
+
"s1_title": "Los riesgos de las predicciones de IA",
|
|
92
|
+
"s1_p1": "En el ejercicio anterior, confiaste en un sistema de IA para predecir qué personas presas tenían un riesgo <b>alto</b>, <b>medio</b> o <b>bajo</b> de reincidir.",
|
|
92
93
|
"s1_p2": "<b>¿Pero qué pasa si esas predicciones eran incorrectas?</b>",
|
|
93
94
|
"s1_p3": "Los sistemas de IA cometen dos tipos de errores que tienen consecuencias muy diferentes:",
|
|
94
|
-
"s1_li1": "<b>Falsos
|
|
95
|
-
"s1_li2": "<b>Falsos
|
|
95
|
+
"s1_li1": "<b>Falsos positivos</b> - Predecir incorrectamente ALTO riesgo",
|
|
96
|
+
"s1_li2": "<b>Falsos negativos</b> - Predecir incorrectamente BAJO riesgo",
|
|
96
97
|
"s1_p4": "Examinemos cada tipo de error y su impacto en el mundo real.",
|
|
97
|
-
"btn_next_fp": "Siguiente: Falsos
|
|
98
|
+
"btn_next_fp": "Siguiente: Falsos positivos ▶️",
|
|
98
99
|
# Step 2
|
|
99
|
-
"s2_title": "🔴 Falsos
|
|
100
|
-
"s2_card_title": "¿Qué es un
|
|
101
|
-
"s2_def": "Un <b>falso positivo</b> ocurre cuando la IA predice que alguien es de <b style='color:#dc2626;'>ALTO RIESGO</b>, pero en realidad NO habría reincidido si
|
|
102
|
-
"s2_ex_title": "Escenario de
|
|
100
|
+
"s2_title": "🔴 Falsos positivos: El riesgo inexistente",
|
|
101
|
+
"s2_card_title": "¿Qué es un falso positivo?",
|
|
102
|
+
"s2_def": "Un <b>falso positivo</b> ocurre cuando la IA predice que alguien es de <b style='color:#dc2626;'>ALTO RIESGO</b>, pero en realidad NO habría reincidido si hubiera sido puesto en libertad.",
|
|
103
|
+
"s2_ex_title": "Escenario de ejemplo:",
|
|
103
104
|
"s2_ex_li1": "• Sarah fue marcada como <b style='color:#dc2626;'>ALTO RIESGO</b>",
|
|
104
|
-
"s2_ex_li2": "• Basado en esto, el
|
|
105
|
+
"s2_ex_li2": "• Basado en esto, el tribunal la mantuvo en prisión",
|
|
105
106
|
"s2_ex_li3": "• En realidad, Sarah habría rehecho su vida y nunca habría cometido otro delito",
|
|
106
|
-
"s2_cost_title": "El
|
|
107
|
-
"s2_cost_li1": "Personas
|
|
107
|
+
"s2_cost_title": "El coste humano:",
|
|
108
|
+
"s2_cost_li1": "Personas que no reincidirían pasan tiempo innecesario en prisión",
|
|
108
109
|
"s2_cost_li2": "Las familias son separadas por más tiempo del necesario",
|
|
109
110
|
"s2_cost_li3": "Las oportunidades laborales y la rehabilitación se retrasan",
|
|
110
111
|
"s2_cost_li4": "La confianza en el sistema judicial se erosiona",
|
|
111
112
|
"s2_cost_li5": "Impacto desproporcionado en comunidades marginadas",
|
|
112
|
-
"s2_key": "<b>Punto
|
|
113
|
+
"s2_key": "<b>Punto clave:</b> Los falsos positivos significan que la IA está siendo <b>demasiado cautelosa</b>, manteniendo en prisión a personas que deberían ser puestas en libertad.",
|
|
113
114
|
"btn_back": "◀️ Atrás",
|
|
114
|
-
"btn_next_fn": "Siguiente: Falsos
|
|
115
|
+
"btn_next_fn": "Siguiente: Falsos negativos ▶️",
|
|
115
116
|
# Step 3
|
|
116
|
-
"s3_title": "🔵 Falsos
|
|
117
|
-
"s3_card_title": "¿Qué es un
|
|
118
|
-
"s3_def": "Un <b>falso negativo</b> ocurre cuando la IA predice que alguien es de <b style='color:#16a34a;'>BAJO RIESGO</b>, pero SÍ
|
|
119
|
-
"s3_ex_title": "Escenario de
|
|
117
|
+
"s3_title": "🔵 Falsos negativos: El riesgo no detectado",
|
|
118
|
+
"s3_card_title": "¿Qué es un falso negativo?",
|
|
119
|
+
"s3_def": "Un <b>falso negativo</b> ocurre cuando la IA predice que alguien es de <b style='color:#16a34a;'>BAJO RIESGO</b>, pero SÍ vuelve a cometer un delito después de ser liberado.",
|
|
120
|
+
"s3_ex_title": "Escenario de ejemplo:",
|
|
120
121
|
"s3_ex_li1": "• James fue marcado como <b style='color:#16a34a;'>BAJO RIESGO</b>",
|
|
121
|
-
"s3_ex_li2": "• Basado en esto, el
|
|
122
|
+
"s3_ex_li2": "• Basado en esto, el tribunal le concedió la libertad condicional",
|
|
122
123
|
"s3_ex_li3": "• Desafortunadamente, James cometió otro delito grave",
|
|
123
|
-
"s3_cost_title": "El
|
|
124
|
+
"s3_cost_title": "El coste humano:",
|
|
124
125
|
"s3_cost_li1": "Nuevas víctimas de delitos prevenibles",
|
|
125
126
|
"s3_cost_li2": "Pérdida de confianza pública en el sistema judicial",
|
|
126
|
-
"s3_cost_li3": "Escrutinio mediático y reacciones contra los
|
|
127
|
-
"s3_cost_li4": "Presión política para
|
|
127
|
+
"s3_cost_li3": "Escrutinio mediático y reacciones contra los tribunales",
|
|
128
|
+
"s3_cost_li4": "Presión política para adoptar medidas severas contra la delincuencia.",
|
|
128
129
|
"s3_cost_li5": "Daño potencial a comunidades y familias",
|
|
129
|
-
"s3_key": "<b>Punto
|
|
130
|
-
"btn_next_dil": "Siguiente: El
|
|
130
|
+
"s3_key": "<b>Punto clave:</b> Los falsos negativos significan que la IA está siendo <b>demasiado indulgente</b>, poniendo en libertad a personas que representan un peligro real para la sociedad.",
|
|
131
|
+
"btn_next_dil": "Siguiente: El dilema ▶️",
|
|
131
132
|
# Step 4
|
|
132
|
-
"s4_title": "⚖️ El
|
|
133
|
-
"s4_card_title": "Todo
|
|
134
|
-
"s4_p1": "
|
|
133
|
+
"s4_title": "⚖️ El equilibrio imposible",
|
|
134
|
+
"s4_card_title": "Todo sistema de IA presenta un dilema",
|
|
135
|
+
"s4_p1": "Esta es la dura realidad: <b>Ningún sistema de IA puede eliminar ambos tipos de errores.</b>",
|
|
135
136
|
"s4_sub1": "<b>Si haces que la IA sea más cautelosa:</b>",
|
|
136
|
-
"s4_sub1_li1": "✓ Menos falsos negativos (menos personas
|
|
137
|
-
"s4_sub1_li2": "✗ Más falsos positivos (más personas
|
|
137
|
+
"s4_sub1_li1": "✓ Menos falsos negativos (menos personas que representan un peligro real liberadas)",
|
|
138
|
+
"s4_sub1_li2": "✗ Más falsos positivos (más personas que no reincidirían permanecen en prisión)",
|
|
138
139
|
"s4_sub2": "<b>Si haces que la IA sea más indulgente:</b>",
|
|
139
|
-
"s4_sub2_li1": "✓ Menos falsos positivos (más personas
|
|
140
|
-
"s4_sub2_li2": "✗ Más falsos negativos (más personas
|
|
141
|
-
"s4_eth_title": "La
|
|
140
|
+
"s4_sub2_li1": "✓ Menos falsos positivos (más personas que no reincidirían son puestas en libertad)",
|
|
141
|
+
"s4_sub2_li2": "✗ Más falsos negativos (más personas que representan un peligro real liberadas son puestas en libertad)",
|
|
142
|
+
"s4_eth_title": "La pregunta ética:",
|
|
142
143
|
"s4_q1": "¿Qué error es peor?",
|
|
143
|
-
"s4_q2": "• ¿Mantener a personas
|
|
144
|
-
"s4_conc": "<b>No hay una respuesta universalmente 'correcta'.</b> Diferentes sociedades, sistemas legales y marcos éticos sopesan
|
|
144
|
+
"s4_q2": "• ¿Mantener a personas que no reincidirían en prisión?<br>• ¿O poner en libertad a personas que representan un peligro real?",
|
|
145
|
+
"s4_conc": "<b>No hay una respuesta universalmente 'correcta'.</b> Diferentes sociedades, sistemas legales y marcos éticos sopesan estos dilemas de manera diferente.",
|
|
145
146
|
"s4_final": "<b>Por eso es crucial entender la IA.</b> Necesitamos saber cómo funcionan estos sistemas para tomar decisiones informadas sobre cuándo y cómo usarlos.",
|
|
146
|
-
"btn_cont": "Continuar Aprendiendo
|
|
147
|
+
"btn_cont": "Continuar Aprendiendo sobre la IA ▶️",
|
|
147
148
|
# Step 5
|
|
148
|
-
"s5_title": "✅ Sección
|
|
149
|
+
"s5_title": "✅ Sección completada",
|
|
149
150
|
"s5_p1": "Ahora entiendes las consecuencias de los errores de la IA en decisiones de alto riesgo.",
|
|
150
151
|
"s5_p2": "<b>A continuación:</b> Aprende qué es realmente la IA y cómo funcionan estos sistemas de predicción.",
|
|
151
152
|
"s5_p3": "Este conocimiento te ayudará a entender cómo construir sistemas de IA mejores y más éticos.",
|
|
152
153
|
"s5_scroll": "👇 DESPLÁZATE HACIA ABAJO 👇",
|
|
153
154
|
"s5_find": "Encuentra la siguiente sección abajo para continuar tu viaje.",
|
|
154
|
-
"btn_review": "◀️ Volver a
|
|
155
|
+
"btn_review": "◀️ Volver a revisar"
|
|
155
156
|
},
|
|
156
157
|
"ca": {
|
|
157
158
|
"title": "⚠️ I si la IA s'hagués equivocat?",
|
|
158
159
|
"intro_box": "Acabes de prendre decisions basades en les prediccions d'una IA.<br>Però els sistemes d'IA no són perfectes. Explorem què passa quan cometen errors.",
|
|
159
160
|
"loading": "⏳ Carregant...",
|
|
160
161
|
# Step 1
|
|
161
|
-
"s1_title": "
|
|
162
|
-
"s1_p1": "En l'exercici anterior,
|
|
162
|
+
"s1_title": "Els riscos de les prediccions d'IA",
|
|
163
|
+
"s1_p1": "En l'exercici anterior, has confiat en un sistema d'IA per predir quines persones preses tenien un risc <b>Alt</b>, <b>Mitjà</b> o <b>Baix</b> de reincidir.",
|
|
163
164
|
"s1_p2": "<b>Però què passa si aquestes prediccions eren incorrectes?</b>",
|
|
164
165
|
"s1_p3": "Els sistemes d'IA cometen dos tipus d'errors que tenen conseqüències molt diferents:",
|
|
165
|
-
"s1_li1": "<b>Falsos
|
|
166
|
+
"s1_li1": "<b>Falsos positius</b> - Predir incorrectament ALT risc",
|
|
166
167
|
"s1_li2": "<b>Falsos Negatius</b> - Predir incorrectament BAIX risc",
|
|
167
168
|
"s1_p4": "Examinem cada tipus d'error i el seu impacte en el món real.",
|
|
168
|
-
"btn_next_fp": "Següent: Falsos
|
|
169
|
+
"btn_next_fp": "Següent: Falsos positius ▶️",
|
|
169
170
|
# Step 2
|
|
170
|
-
"s2_title": "🔴 Falsos
|
|
171
|
-
"s2_card_title": "Què és un
|
|
172
|
-
"s2_def": "Un <b>fals positiu</b> es produeix quan la IA prediu que algú és d'<b style='color:#dc2626;'>ALT RISC</b>, però en realitat NO hauria reincidit si
|
|
173
|
-
"s2_ex_title": "Escenari d'
|
|
174
|
-
"s2_ex_li1": "• La Sarah va ser marcada com
|
|
175
|
-
"s2_ex_li2": "• Basat en això, el
|
|
171
|
+
"s2_title": "🔴 Falsos positius: El risc inexistent",
|
|
172
|
+
"s2_card_title": "Què és un fals positiu?",
|
|
173
|
+
"s2_def": "Un <b>fals positiu</b> es produeix quan la IA prediu que algú és d'<b style='color:#dc2626;'>ALT RISC</b>, però en realitat NO hauria reincidit si hagués estat posat en llibertat.",
|
|
174
|
+
"s2_ex_title": "Escenari d'exemple:",
|
|
175
|
+
"s2_ex_li1": "• La Sarah va ser marcada com d'<b style='color:#dc2626;'>ALT RISC</b>",
|
|
176
|
+
"s2_ex_li2": "• Basat en això, el tribunal la va mantenir a la presó",
|
|
176
177
|
"s2_ex_li3": "• En realitat, la Sarah hauria refet la seva vida i mai hauria comès un altre delicte",
|
|
177
|
-
"s2_cost_title": "El
|
|
178
|
+
"s2_cost_title": "El cost humà:",
|
|
178
179
|
"s2_cost_li1": "Persones innocents passen temps innecessari a la presó",
|
|
179
180
|
"s2_cost_li2": "Les famílies són separades per més temps del necessari",
|
|
180
181
|
"s2_cost_li3": "Les oportunitats laborals i la rehabilitació es retarden",
|
|
181
182
|
"s2_cost_li4": "La confiança en el sistema judicial s'erosiona",
|
|
182
183
|
"s2_cost_li5": "Impacte desproporcionat en comunitats marginades",
|
|
183
|
-
"s2_key": "<b>Punt
|
|
184
|
+
"s2_key": "<b>Punt clau:</b> Els falsos positius signifiquen que la IA està sent <b>massa cautelosa</b>, mantenint a la presó a persones que haurien de ser posades en llibertat.",
|
|
184
185
|
"btn_back": "◀️ Enrere",
|
|
185
|
-
"btn_next_fn": "Següent: Falsos
|
|
186
|
+
"btn_next_fn": "Següent: Falsos negatius ▶️",
|
|
186
187
|
# Step 3
|
|
187
|
-
"s3_title": "🔵 Falsos
|
|
188
|
-
"s3_card_title": "Què és un
|
|
189
|
-
"s3_def": "Un <b>fals negatiu</b> es produeix quan la IA prediu que algú és de <b style='color:#16a34a;'>BAIX RISC</b>, però SÍ
|
|
190
|
-
"s3_ex_title": "Escenari d'
|
|
191
|
-
"s3_ex_li1": "• En James va ser marcat com
|
|
192
|
-
"s3_ex_li2": "• Basat en això, el
|
|
188
|
+
"s3_title": "🔵 Falsos negatius: El risc no detectat",
|
|
189
|
+
"s3_card_title": "Què és un fals negatiu?",
|
|
190
|
+
"s3_def": "Un <b>fals negatiu</b> es produeix quan la IA prediu que algú és de <b style='color:#16a34a;'>BAIX RISC</b>, però SÍ torna a cometre un delicte després de ser posat en llibertat.",
|
|
191
|
+
"s3_ex_title": "Escenari d'exemple:",
|
|
192
|
+
"s3_ex_li1": "• En James va ser marcat com de <b style='color:#16a34a;'>BAIX RISC</b>",
|
|
193
|
+
"s3_ex_li2": "• Basat en això, el tribunal li va concedir la llibertat condicional",
|
|
193
194
|
"s3_ex_li3": "• Malauradament, en James va cometre un altre delicte greu",
|
|
194
|
-
"s3_cost_title": "El
|
|
195
|
+
"s3_cost_title": "El cost humà:",
|
|
195
196
|
"s3_cost_li1": "Noves víctimes de delictes prevenibles",
|
|
196
197
|
"s3_cost_li2": "Pèrdua de confiança pública en el sistema judicial",
|
|
197
|
-
"s3_cost_li3": "Escrutini mediàtic i reaccions contra els
|
|
198
|
-
"s3_cost_li4": "Pressió política per
|
|
198
|
+
"s3_cost_li3": "Escrutini mediàtic i reaccions contra els tribunals",
|
|
199
|
+
"s3_cost_li4": "Pressió política per adoptar mesures severes contra la delinqüència",
|
|
199
200
|
"s3_cost_li5": "Dany potencial a comunitats i famílies",
|
|
200
|
-
"s3_key": "<b>Punt
|
|
201
|
-
"btn_next_dil": "Següent: El
|
|
201
|
+
"s3_key": "<b>Punt clau:</b> Els falsos negatius signifiquen que la IA està sent <b>massa indulgent</b>, posant en llibertat persones que representen un perill real per a la societat.",
|
|
202
|
+
"btn_next_dil": "Següent: El dilema ▶️",
|
|
202
203
|
# Step 4
|
|
203
|
-
"s4_title": "⚖️ L'
|
|
204
|
-
"s4_card_title": "Tot
|
|
205
|
-
"s4_p1": "
|
|
204
|
+
"s4_title": "⚖️ L'equilibri impossible",
|
|
205
|
+
"s4_card_title": "Tot sistema d'IA presenta un dilema",
|
|
206
|
+
"s4_p1": "Aquesta és la dura realitat: <b>Cap sistema d'IA pot eliminar els dos tipus d'errors.</b>",
|
|
206
207
|
"s4_sub1": "<b>Si fas que la IA sigui més cautelosa:</b>",
|
|
207
|
-
"s4_sub1_li1": "✓ Menys falsos negatius (menys persones
|
|
208
|
-
"s4_sub1_li2": "✗ Més falsos positius (més persones
|
|
208
|
+
"s4_sub1_li1": "✓ Menys falsos negatius (menys persones que representen un perill real són posades en llibertat)",
|
|
209
|
+
"s4_sub1_li2": "✗ Més falsos positius (més persones que no reincidirien es mantenen a la presó)",
|
|
209
210
|
"s4_sub2": "<b>Si fas que la IA sigui més indulgent:</b>",
|
|
210
|
-
"s4_sub2_li1": "✓ Menys falsos positius (més persones
|
|
211
|
-
"s4_sub2_li2": "✗ Més falsos negatius (més persones
|
|
212
|
-
"s4_eth_title": "La
|
|
211
|
+
"s4_sub2_li1": "✓ Menys falsos positius (més persones que no reincidirien són posades en llibertat)",
|
|
212
|
+
"s4_sub2_li2": "✗ Més falsos negatius (més persones que representen un perill real són posades en llibertat)",
|
|
213
|
+
"s4_eth_title": "La pregunta ètica:",
|
|
213
214
|
"s4_q1": "Quin error és pitjor?",
|
|
214
|
-
"s4_q2": "• Mantenir persones
|
|
215
|
-
"s4_conc": "<b>No hi ha una resposta universalment 'correcta'.</b> Diferents societats, sistemes legals i marcs ètics sospesen
|
|
215
|
+
"s4_q2": "• Mantenir a la presó persones que no reincidirien?<br>• O posar en llibertat persones que representen un perill real?",
|
|
216
|
+
"s4_conc": "<b>No hi ha una resposta universalment 'correcta'.</b> Diferents societats, sistemes legals i marcs ètics sospesen aquests dilemes de manera diferent.",
|
|
216
217
|
"s4_final": "<b>Per això és crucial entendre la IA.</b> Necessitem saber com funcionen aquests sistemes per prendre decisions informades sobre quan i com utilitzar-los.",
|
|
217
|
-
"btn_cont": "Continuar
|
|
218
|
+
"btn_cont": "Continuar aprenent sobre la IA ▶️",
|
|
218
219
|
# Step 5
|
|
219
|
-
"s5_title": "✅ Secció
|
|
220
|
+
"s5_title": "✅ Secció completada",
|
|
220
221
|
"s5_p1": "Ara entens les conseqüències dels errors de la IA en decisions d'alt risc.",
|
|
221
222
|
"s5_p2": "<b>A continuació:</b> Aprèn què és realment la IA i com funcionen aquests sistemes de predicció.",
|
|
222
223
|
"s5_p3": "Aquest coneixement t'ajudarà a entendre com construir sistemes d'IA millors i més ètics.",
|
|
223
224
|
"s5_scroll": "👇 DESPLAÇA'T CAP AVALL 👇",
|
|
224
225
|
"s5_find": "Troba la següent secció a sota per continuar el teu viatge.",
|
|
225
|
-
"btn_review": "◀️ Tornar a
|
|
226
|
+
"btn_review": "◀️ Tornar a revisar"
|
|
226
227
|
}
|
|
227
228
|
}
|
|
228
229
|
|
|
@@ -421,7 +422,7 @@ def create_ai_consequences_app(theme_primary_hue: str = "indigo") -> "gr.Blocks"
|
|
|
421
422
|
c_s5_html = gr.HTML(_get_step5_html("en"))
|
|
422
423
|
back_to_dilemma_btn = gr.Button(t('en', 'btn_review'))
|
|
423
424
|
|
|
424
|
-
# --- I18N UPDATE LOGIC ---
|
|
425
|
+
# --- I18N UPDATE LOGIC (CACHED) ---
|
|
425
426
|
|
|
426
427
|
update_targets = [
|
|
427
428
|
c_main_title, c_intro_box, c_loading_title,
|
|
@@ -432,12 +433,12 @@ def create_ai_consequences_app(theme_primary_hue: str = "indigo") -> "gr.Blocks"
|
|
|
432
433
|
c_s5_html, back_to_dilemma_btn
|
|
433
434
|
]
|
|
434
435
|
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
436
|
+
@lru_cache(maxsize=16)
|
|
437
|
+
def get_cached_ui_updates(lang):
|
|
438
|
+
"""
|
|
439
|
+
Generates the UI updates once per language.
|
|
440
|
+
Subsequent calls return the pre-calculated list instantly.
|
|
441
|
+
"""
|
|
441
442
|
return [
|
|
442
443
|
f"<h1 style='text-align:center;'>{t(lang, 'title')}</h1>",
|
|
443
444
|
f"<div class='consequences-intro-box'>{t(lang, 'intro_box')}</div>",
|
|
@@ -466,6 +467,15 @@ def create_ai_consequences_app(theme_primary_hue: str = "indigo") -> "gr.Blocks"
|
|
|
466
467
|
gr.Button(value=t(lang, 'btn_review')),
|
|
467
468
|
]
|
|
468
469
|
|
|
470
|
+
def update_language(request: gr.Request):
|
|
471
|
+
params = request.query_params
|
|
472
|
+
lang = params.get("lang", "en")
|
|
473
|
+
if lang not in TRANSLATIONS:
|
|
474
|
+
lang = "en"
|
|
475
|
+
|
|
476
|
+
# This call is now instant for repeat visitors
|
|
477
|
+
return get_cached_ui_updates(lang)
|
|
478
|
+
|
|
469
479
|
demo.load(update_language, inputs=None, outputs=update_targets)
|
|
470
480
|
|
|
471
481
|
# --- NAVIGATION LOGIC ---
|