1
00:00:10,000 --> 00:00:15,800
Buenas, esto es BIMPRAXIS, el podcast donde el

2
00:00:15,800 --> 00:00:17,920
BIM se encuentra con la inteligencia artificial.

3
00:00:20,519 --> 00:00:23,620
Exploramos la ciencia, la tecnología y el futuro

4
00:00:23,620 --> 00:00:26,559
desde el enfoque de la arquitectura, ingeniería y

5
00:00:26,559 --> 00:00:27,179
construcción.

6
00:00:28,859 --> 00:00:29,519
¡Empezamos!

7
00:00:37,259 --> 00:00:40,479
Muy buenas, bienvenidas, bienvenidos a un nuevo episodio

8
00:00:40,479 --> 00:00:42,079
de BIMPRAXIS.

9
00:00:42,200 --> 00:00:45,259
Hoy os traemos El contexto es el nuevo

10
00:00:45,259 --> 00:00:45,640
código.

11
00:00:46,219 --> 00:00:48,520
Cómo domesticar a la inteligencia artificial.

12
00:00:49,560 --> 00:00:51,299
Y es un tema que de verdad creo

13
00:00:51,299 --> 00:00:53,020
que va a dar mucho que hablar.

14
00:00:52,939 --> 00:00:54,479
Ostras, ya te digo.

15
00:00:54,560 --> 00:00:56,460
A ver, para arrancar me gustaría plantear una

16
00:00:56,460 --> 00:00:58,240
situación a quienes nos escuchan.

17
00:00:59,000 --> 00:01:01,100
imaginemos por un momento que mañana llegamos a

18
00:01:01,100 --> 00:01:04,019
la oficina y decidimos coger nuestro teclado y

19
00:01:03,840 --> 00:01:07,980
tirarlo a la basura literalmente literalmente en lugar

20
00:01:07,980 --> 00:01:10,480
de sentarnos a picar 500 líneas de código

21
00:01:10,200 --> 00:01:14,120
en javascript para levantarnos un servicio nuevo simplemente

22
00:01:14,120 --> 00:01:17,159
abrimos un micrófono dictamos la arquitectura que queremos

23
00:01:17,159 --> 00:01:19,299
las reglas de negocio y el sistema lo

24
00:01:19,299 --> 00:01:22,379
construye solo suena a ciencia ficción total suena

25
00:01:22,379 --> 00:01:25,120
a película del futuro sí pero la gran

26
00:01:25,120 --> 00:01:27,840
premisa de hoy basándonos en una charla reciente

27
00:01:27,840 --> 00:01:30,379
de Patrick Debois, que recordemos es el creador

28
00:01:30,379 --> 00:01:33,420
del movimiento DevOps allá por 2009, es que

29
00:01:33,420 --> 00:01:36,540
la era de picar códigos está terminando.

30
00:01:36,540 --> 00:01:38,219
Ahora estamos entrando en lo que él llama

31
00:01:38,219 --> 00:01:41,719
el vibe coding, que traducido sería algo así

32
00:01:41,719 --> 00:01:44,980
como programar por vibras o por sensaciones, donde

33
00:01:44,980 --> 00:01:47,200
básicamente le decimos a la IA qué tiene

34
00:01:47,200 --> 00:01:48,819
que hacer y ella se encarga.

35
00:01:48,799 --> 00:01:52,239
Sí, y a ver, el término vibe coding

36
00:01:52,239 --> 00:01:54,400
puede sonar un poco frívolo, ¿no?

37
00:01:54,400 --> 00:01:56,980
Como si ahora todo fuera magia y cero

38
00:01:56,980 --> 00:01:58,519
esfuerzo.

39
00:01:58,519 --> 00:02:01,400
Pero nuestra misión en este análisis es dejar

40
00:02:01,400 --> 00:02:04,060
clarísimo que esto no significa que el trabajo

41
00:02:04,060 --> 00:02:05,040
sea más fácil.

42
00:02:05,040 --> 00:02:06,680
Claro, el trabajo no desaparece.

43
00:02:06,680 --> 00:02:07,219
Exacto.

44
00:02:07,219 --> 00:02:10,900
La complejidad simplemente ha cambiado de lugar.

45
00:02:10,900 --> 00:02:14,419
Pensemos en la IA como un motor hiperpotente.

46
00:02:14,419 --> 00:02:16,699
Si la IA es el motor, el contexto

47
00:02:16,699 --> 00:02:18,419
que le damos es el combustible.

48
00:02:18,419 --> 00:02:19,759
Me gusta esa analogía.

49
00:02:19,759 --> 00:02:22,840
Si le metemos mal combustible, Si las instrucciones

50
00:02:22,840 --> 00:02:25,819
son vagas o contradictorias, el motor va a

51
00:02:25,819 --> 00:02:29,379
tomar decisiones desastrosas a una velocidad incalculable.

52
00:02:29,439 --> 00:02:32,080
Por eso, hoy queremos entender el ciclo de

53
00:02:32,080 --> 00:02:34,659
vida del desarrollo de contexto, o CDLC en

54
00:02:34,659 --> 00:02:34,960
inglés.

55
00:02:35,800 --> 00:02:37,520
Que viene a ser un bucle infinito, muy

56
00:02:37,520 --> 00:02:40,039
parecido al de DevOps que todos conocemos, pero

57
00:02:40,039 --> 00:02:43,060
diseñado específicamente para las instrucciones que le damos

58
00:02:43,060 --> 00:02:43,580
a la IA.

59
00:02:43,620 --> 00:02:45,780
Vale, vamos a desgranar esto porque tiene tela.

60
00:02:45,860 --> 00:02:48,539
Empecemos por la primera fase, la generación de

61
00:02:48,539 --> 00:02:49,680
ese combustible.

62
00:02:49,460 --> 00:02:50,319
Eso es.

63
00:02:50,319 --> 00:02:52,639
¿Cómo pasamos de escribir líneas y líneas de

64
00:02:52,639 --> 00:02:55,340
código a crear estos paquetes de instrucciones para

65
00:02:55,340 --> 00:02:55,740
la IA?

66
00:02:55,939 --> 00:02:58,139
Porque claro, ya hemos superado esa fase inicial

67
00:02:58,139 --> 00:03:00,620
en la que simplemente abrías chat GPT, ponías

68
00:03:00,620 --> 00:03:03,060
un prompt cortito y le pedías una función

69
00:03:03,060 --> 00:03:04,099
aislada, ¿verdad?

70
00:03:04,039 --> 00:03:05,379
Totalmente.

71
00:03:05,379 --> 00:03:08,020
Dobois ponía un ejemplo muy curioso de este

72
00:03:08,020 --> 00:03:09,319
nivel básico.

73
00:03:09,379 --> 00:03:11,639
Cuenta que le preguntó a una IA cuándo

74
00:03:11,639 --> 00:03:14,159
era su propia charla en una conferencia y

75
00:03:14,159 --> 00:03:16,800
la IA fue capaz de deducirlo buscando en

76
00:03:16,800 --> 00:03:18,759
la web y cruzando datos.

77
00:03:18,439 --> 00:03:19,060
¡Qué pasada!

78
00:03:19,060 --> 00:03:21,500
Sí, pero claro, ese prompting manual en una

79
00:03:21,500 --> 00:03:23,800
ventanita de chat llega un momento en el

80
00:03:23,800 --> 00:03:25,560
que es insostenible.

81
00:03:25,560 --> 00:03:27,719
Imagina hacer eso para un proyecto de software

82
00:03:27,719 --> 00:03:28,879
a nivel empresarial.

83
00:03:28,919 --> 00:03:30,319
Imposible, te vuelves loco.

84
00:03:30,319 --> 00:03:31,500
Te vuelves loco.

85
00:03:31,500 --> 00:03:33,840
Por eso el nivel avanzado pasa por crear

86
00:03:33,840 --> 00:03:38,319
instrucciones reutilizables, archivos de texto, normalmente en formato

87
00:03:38,319 --> 00:03:42,979
markdown, como un agent.md o un cloud.md, que

88
00:03:42,979 --> 00:03:45,780
metemos directamente en el repositorio de código.

89
00:03:45,759 --> 00:03:47,580
O sea que el contexto vive junto al

90
00:03:47,580 --> 00:03:47,840
código.

91
00:03:47,979 --> 00:03:49,099
Exacto.

92
00:03:49,099 --> 00:03:50,360
Y esto es vital por el tema de

93
00:03:50,360 --> 00:03:52,379
la recolección de contexto.

94
00:03:52,439 --> 00:03:54,319
Piensa que los modelos de IA tienen una

95
00:03:54,319 --> 00:03:56,500
fecha de corte en su entrenamiento.

96
00:03:56,419 --> 00:03:58,099
Ya, que si les preguntas por algo que

97
00:03:58,099 --> 00:03:59,620
salió ayer no tienen ni idea.

98
00:03:59,580 --> 00:04:00,460
Eso es.

99
00:04:00,460 --> 00:04:02,819
Imagina que en tu empresa usáis la versión

100
00:04:02,819 --> 00:04:05,599
3 de una librería que acaba de salir.

101
00:04:05,680 --> 00:04:07,960
El modelo, por defecto, se sabe de memoria

102
00:04:07,960 --> 00:04:09,139
la versión 2.

103
00:04:09,219 --> 00:04:11,139
Si le pides que programe algo, va a

104
00:04:11,139 --> 00:04:13,780
alucinar funciones de la versión antigua y todo

105
00:04:13,780 --> 00:04:14,879
va a fallar.

106
00:04:14,919 --> 00:04:17,279
Claro, ¿y la solución entonces es meterle la

107
00:04:17,279 --> 00:04:19,199
documentación nueva por la fuerza?

108
00:04:19,339 --> 00:04:22,180
Le inyectas la documentación más reciente directamente en

109
00:04:22,180 --> 00:04:24,779
ese archivo de contexto, para que sobrescriba lo

110
00:04:24,779 --> 00:04:25,639
que sabe.

111
00:04:25,879 --> 00:04:27,199
Pero la cosa va más allá de los

112
00:04:27,199 --> 00:04:29,203
archivos de texto estáticos.

113
00:04:29,183 --> 00:04:31,583
Aquí es donde entran herramientas como el MSP,

114
00:04:31,583 --> 00:04:32,023
¿no?

115
00:04:32,023 --> 00:04:34,023
El Model Context Protocol.

116
00:04:34,003 --> 00:04:34,983
Justo.

117
00:04:34,983 --> 00:04:37,263
Esto permite que la IA absorba contexto de

118
00:04:37,263 --> 00:04:38,523
forma dinámica.

119
00:04:38,523 --> 00:04:40,223
Se conecta a tu GitLab, se lee los

120
00:04:40,223 --> 00:04:42,863
hilos interminables de Slack, analiza los tickets de

121
00:04:42,863 --> 00:04:45,943
Jira… Madre mía, la IA leyendo Slack.

122
00:04:45,943 --> 00:04:47,443
A saber qué saca de ahí.

123
00:04:47,463 --> 00:04:49,923
Bueno, saca el caos humano y lo intenta

124
00:04:49,923 --> 00:04:51,903
convertir en algo técnico.

125
00:04:51,903 --> 00:04:53,543
Lo fascinante de esto es que ya no

126
00:04:53,543 --> 00:04:55,683
programamos el paso a paso.

127
00:04:55,863 --> 00:04:58,303
Hacemos lo que se llama desarrollo impulsado por

128
00:04:58,303 --> 00:04:59,223
especificaciones.

129
00:04:59,783 --> 00:05:01,503
¿Y eso cómo funciona exactamente?

130
00:05:01,503 --> 00:05:03,963
Pues tú escribes un FEC, un documento de

131
00:05:03,963 --> 00:05:07,183
especificaciones detallado, y el agente de IA lo

132
00:05:07,183 --> 00:05:09,963
coge, lo desglosa en pasos de planificación y

133
00:05:09,963 --> 00:05:10,563
lo ejecuta.

134
00:05:11,363 --> 00:05:14,703
Cosas súper complejas como analizar todo tu ecosistema

135
00:05:14,703 --> 00:05:18,043
Node.js ya no se programan, se empaquetan como

136
00:05:18,043 --> 00:05:20,803
una habilidad y la IA la ejecuta.

137
00:05:20,763 --> 00:05:21,883
Ostras.

138
00:05:21,883 --> 00:05:23,443
Es que fíjate, viéndolo así es como si

139
00:05:23,443 --> 00:05:25,243
hubiéramos pasado de ser los que tocan los

140
00:05:25,243 --> 00:05:28,303
instrumentos en la orquesta a ser los directores.

141
00:05:28,363 --> 00:05:30,443
Ya no tocas el violín, entregas la partitura

142
00:05:30,443 --> 00:05:31,923
y dices, tócalo así.

143
00:05:32,003 --> 00:05:32,703
Totalmente.

144
00:05:32,703 --> 00:05:35,463
Es un cambio de mentalidad brutal.

145
00:05:35,523 --> 00:05:37,323
Y esto me hace entender por fin por

146
00:05:37,323 --> 00:05:39,043
qué The Voice decía eso de que prefiere

147
00:05:39,043 --> 00:05:42,083
programar dictando por voz, el voice coding.

148
00:05:41,903 --> 00:05:43,323
Sí, es muy curioso.

149
00:05:42,883 --> 00:05:45,863
Al principio yo pensaba, este hombre es un

150
00:05:45,863 --> 00:05:46,383
excéntrico.

151
00:05:46,383 --> 00:05:48,603
Pero tiene todo el sentido.

152
00:05:49,103 --> 00:05:51,063
Cuando usamos el teclado, sobre todo si eres

153
00:05:51,063 --> 00:05:53,123
de los que teclea con dos dedos, tendemos

154
00:05:53,123 --> 00:05:54,343
a resumir mucho.

155
00:05:54,343 --> 00:05:55,683
Escribimos poco.

156
00:05:55,683 --> 00:05:57,083
Nombres de variables cortos.

157
00:05:57,083 --> 00:05:57,863
Cero comentarios.

158
00:05:57,883 --> 00:06:00,163
Somos muy telegráficos, escribiendo.

159
00:06:00,243 --> 00:06:00,763
Exacto.

160
00:06:00,763 --> 00:06:04,143
Pero al hablar somos muchísimo más prolijos.

161
00:06:04,143 --> 00:06:05,903
Damos contexto de forma natural.

162
00:06:05,903 --> 00:06:07,463
Explicamos por qué hacemos algo.

163
00:06:07,463 --> 00:06:08,863
Añadimos matices.

164
00:06:08,863 --> 00:06:10,543
Y eso es exactamente lo que la IA

165
00:06:10,543 --> 00:06:11,483
necesita.

166
00:06:11,483 --> 00:06:13,443
Volumen de información y detalle.

167
00:06:13,123 --> 00:06:16,663
Claro, le das la riqueza descriptiva que necesita

168
00:06:16,663 --> 00:06:18,503
para no equivocarse.

169
00:06:18,503 --> 00:06:21,923
Pero claro, esta facilidad para generar instrucciones masivas

170
00:06:21,923 --> 00:06:24,683
nos lleva de cabeza al siguiente gran problema.

171
00:06:24,683 --> 00:06:26,703
Y aquí es donde empieza la parte peliaguda.

172
00:06:26,683 --> 00:06:27,963
El fin de la actitud YOLO.

173
00:06:28,283 --> 00:06:29,643
Exactamente.

174
00:06:29,643 --> 00:06:31,623
El you only live once o todo va

175
00:06:31,623 --> 00:06:33,343
a salir bien a la primera ya no

176
00:06:33,343 --> 00:06:34,143
sirve.

177
00:06:33,683 --> 00:06:35,843
Vale, es que, piénsalo, en el mundo tradicional

178
00:06:35,843 --> 00:06:38,843
tú compilas el código, pasas los tests y

179
00:06:38,843 --> 00:06:40,963
si todo está en verde, pa'lante.

180
00:06:41,303 --> 00:06:44,003
Pero ahora, si un desarrollador cambia dos líneas

181
00:06:44,003 --> 00:06:47,083
de un archivo de texto de ese cloud.md

182
00:06:47,083 --> 00:06:49,963
para afinar cómo se comporta la IA, ¿cómo

183
00:06:49,963 --> 00:06:51,503
demonios sabes que no ha roto nada?

184
00:06:51,963 --> 00:06:54,603
Es un peligro enorme asumir que todo irá

185
00:06:54,603 --> 00:06:55,423
bien.

186
00:06:55,843 --> 00:07:00,463
Por eso necesitamos IVALS, evaluaciones y tests, pero

187
00:07:00,463 --> 00:07:01,723
diseñados para el contexto.

188
00:07:02,303 --> 00:07:03,643
¿Y cómo testeamos texto?

189
00:07:03,663 --> 00:07:05,363
¿Le pasamos el corrector de Word y ya

190
00:07:05,363 --> 00:07:05,723
está?

191
00:07:05,903 --> 00:07:07,023
No, no.

192
00:07:07,023 --> 00:07:07,863
Ojalá.

193
00:07:07,863 --> 00:07:09,223
Hay varios niveles.

194
00:07:09,263 --> 00:07:11,683
El más básico es el linting, validar el

195
00:07:11,683 --> 00:07:12,663
formato.

196
00:07:12,823 --> 00:07:15,583
Por ejemplo, comprobar con una regla matemática que

197
00:07:15,583 --> 00:07:17,383
la descripción de una habilidad que le has

198
00:07:17,383 --> 00:07:19,143
dado a la IA no exceda los mil

199
00:07:19,143 --> 00:07:21,623
carácteres para que nos ature la memoria.

200
00:07:21,503 --> 00:07:22,363
Vale, eso es fácil.

201
00:07:22,363 --> 00:07:23,863
Es estructural.

202
00:07:23,863 --> 00:07:26,443
Sí, pero luego subimos de nivel.

203
00:07:26,663 --> 00:07:29,023
Pasamos a lo que llaman el Grammarly para

204
00:07:29,023 --> 00:07:29,463
contexto.

205
00:07:30,403 --> 00:07:33,303
Consiste en pedirle a un segundo modelo de

206
00:07:33,303 --> 00:07:36,783
IA que lea tus instrucciones y te evalúe.

207
00:07:36,903 --> 00:07:40,223
Le preguntas, oye, ¿estas instrucciones son lo bastante

208
00:07:40,223 --> 00:07:42,343
claras para que otro agente las entienda sin

209
00:07:42,343 --> 00:07:43,383
equivocarse?

210
00:07:43,683 --> 00:07:45,423
O sea, usar a la IA como un

211
00:07:45,423 --> 00:07:47,723
profesor de lengua muy exigente.

212
00:07:47,763 --> 00:07:48,183
Literal.

213
00:07:48,183 --> 00:07:51,083
Y detecta ambigüedades rapidísimo.

214
00:07:51,163 --> 00:07:53,763
Pero luego tenemos los test de convenciones.

215
00:07:54,583 --> 00:07:56,143
Imagina que la regla de tu empresa es

216
00:07:56,143 --> 00:07:58,443
que todas las URLs tienen que empezar por

217
00:07:58,443 --> 00:07:59,363
la palabra awesome.

218
00:07:59,763 --> 00:08:00,403
Vale.

219
00:08:00,383 --> 00:08:02,323
Pues usas a un modelo de IA como

220
00:08:02,323 --> 00:08:05,563
juez, un LLM as a judge.

221
00:08:05,563 --> 00:08:07,823
El agente genera el código basándose en el

222
00:08:07,823 --> 00:08:10,203
contexto y el juez revisa el código final

223
00:08:10,203 --> 00:08:12,543
para ver si realmente ha puesto awesome en

224
00:08:12,543 --> 00:08:13,523
todos los sitios.

225
00:08:13,543 --> 00:08:13,943
¡Ostras!

226
00:08:13,943 --> 00:08:16,663
¿Pero el juez solo lee el código o

227
00:08:16,663 --> 00:08:17,403
lo ejecuta?

228
00:08:17,583 --> 00:08:19,283
Ahí entramos en los tests sentient.

229
00:08:19,283 --> 00:08:21,923
En entornos aislados, en un sandbox, le das

230
00:08:21,923 --> 00:08:23,323
al juez herramientas de verdad.

231
00:08:23,323 --> 00:08:25,983
Le dices, toma, ejecuta un comando CUR contra

232
00:08:25,983 --> 00:08:27,803
esta API que acaba de crear tu compañero

233
00:08:27,803 --> 00:08:30,323
agente y dime si devuelve un error 404

234
00:08:30,323 --> 00:08:32,203
o si funciona.

235
00:08:32,203 --> 00:08:34,703
Se comprueba si realmente funciona, no solo si

236
00:08:34,703 --> 00:08:35,883
tiene buena pinta.

237
00:08:35,983 --> 00:08:36,543
Vale, vale.

238
00:08:36,543 --> 00:08:38,503
A ver, detente ahí un segundo porque aquí

239
00:08:38,503 --> 00:08:39,663
es donde yo no te lo compro del

240
00:08:39,663 --> 00:08:40,403
todo.

241
00:08:40,403 --> 00:08:41,543
O sea, entiendo la teoría.

242
00:08:41,543 --> 00:08:42,343
Suena genial.

243
00:08:42,323 --> 00:08:43,923
Ya sé por dónde vas a ir.

244
00:08:43,443 --> 00:08:45,263
Es que la IA no es determinista, no

245
00:08:45,263 --> 00:08:46,443
es matemáticas.

246
00:08:46,443 --> 00:08:48,523
Copiloto hoy te da una respuesta y Gemini

247
00:08:48,523 --> 00:08:49,383
te da otra diferente.

248
00:08:50,303 --> 00:08:52,423
Si yo ejecuto ese test E12 hoy, igual

249
00:08:52,423 --> 00:08:53,223
pasa.

250
00:08:53,303 --> 00:08:55,163
Si lo ejecuto mañana con la temperatura de

251
00:08:55,163 --> 00:08:57,203
la IA un poco más creativa, igual el

252
00:08:57,203 --> 00:08:59,306
agente decide implementar la función de una forma

253
00:08:59,306 --> 00:09:00,886
rara y el test falla.

254
00:09:01,266 --> 00:09:03,246
¿Cómo testeamos algo que cambia todo el rato?

255
00:09:03,546 --> 00:09:05,046
Es la gran duda de todo el mundo

256
00:09:05,046 --> 00:09:05,986
ahora mismo.

257
00:09:06,306 --> 00:09:08,426
Recojo el guante porque The Voice tiene una

258
00:09:08,426 --> 00:09:11,546
solución muy clara para esto, los presupuestos de

259
00:09:11,546 --> 00:09:13,166
error o error budgets.

260
00:09:13,726 --> 00:09:15,226
¿Y esto cómo se aplica aquí?

261
00:09:15,386 --> 00:09:17,846
Pues asumiendo que no puedes testear el contexto

262
00:09:17,846 --> 00:09:20,306
con la exactitud de un test unitario normal.

263
00:09:21,126 --> 00:09:23,486
No buscas el 100% de precisión en un

264
00:09:23,486 --> 00:09:24,186
intento.

265
00:09:24,206 --> 00:09:26,866
lo que haces es ejecutar ese mismo test,

266
00:09:26,866 --> 00:09:28,926
digamos, 5 o 10 veces seguidas.

267
00:09:29,126 --> 00:09:30,006
Ah, vale.

268
00:09:30,006 --> 00:09:31,226
Pura estadística.

269
00:09:31,286 --> 00:09:32,226
Eso es.

270
00:09:32,226 --> 00:09:35,186
Toleramos un margen mínimo de fallos aceptables.

271
00:09:35,346 --> 00:09:37,246
Si de 10 intentos el contexto logra que

272
00:09:37,246 --> 00:09:39,806
la gente haga bien el trabajo 9 veces,

273
00:09:39,926 --> 00:09:41,766
decimos que está dentro del presupuesto de error

274
00:09:41,766 --> 00:09:42,486
y se aprueba.

275
00:09:43,046 --> 00:09:45,006
Es cambiar la mentalidad por completo.

276
00:09:45,606 --> 00:09:46,106
Madre mía.

277
00:09:46,106 --> 00:09:50,026
Pasar del verdadero o falso a gestionar probabilidades

278
00:09:50,026 --> 00:09:51,726
en la ingeniería de software.

279
00:09:51,786 --> 00:09:53,626
Es un salto mental importante.

280
00:09:53,626 --> 00:09:54,586
Totalmente.

281
00:09:54,606 --> 00:09:58,186
Bueno, supongamos que logramos ese contexto robusto.

282
00:09:58,186 --> 00:09:59,826
Nos pasa los tests estadísticos.

283
00:10:00,526 --> 00:10:03,326
El siguiente paso, imagino, es compartirlo.

284
00:10:03,286 --> 00:10:05,646
Si hay un equipo de 300 personas, no

285
00:10:05,646 --> 00:10:07,906
van a estar pasándose el archivo por Slack.

286
00:10:08,186 --> 00:10:09,206
No, claro.

287
00:10:09,226 --> 00:10:12,406
Hay que empaquetarlo y distribuirlo, convertirlo en librerías

288
00:10:12,406 --> 00:10:13,566
de contexto.

289
00:10:13,606 --> 00:10:16,006
Por ejemplo, un paquete con todas las directrices

290
00:10:16,006 --> 00:10:18,306
de frontend de la empresa o con las

291
00:10:18,306 --> 00:10:20,166
reglas de negocio de cómo se calculan los

292
00:10:20,166 --> 00:10:21,126
impuestos.

293
00:10:20,646 --> 00:10:22,846
Como el NPM o el PIP de toda

294
00:10:22,846 --> 00:10:24,446
la vida, pero para texto.

295
00:10:24,826 --> 00:10:25,366
Exacto.

296
00:10:25,366 --> 00:10:28,786
De hecho, ya existen registros de habilidades, como

297
00:10:28,786 --> 00:10:32,126
el TESIL Registry, donde puedes buscar y descarlarte

298
00:10:32,126 --> 00:10:33,586
estos paquetes.

299
00:10:33,586 --> 00:10:34,326
Vale.

300
00:10:34,326 --> 00:10:35,666
Y aquí es donde la cosa se pone

301
00:10:35,666 --> 00:10:37,466
realmente interesante.

302
00:10:37,546 --> 00:10:40,566
Porque revisando las fuentes, el propio DeVois soltó

303
00:10:40,566 --> 00:10:42,106
un dato que es brutal.

304
00:10:42,026 --> 00:10:45,966
dice que el 99.9% de las habilidades, de

305
00:10:45,966 --> 00:10:47,606
las skills que hay ahora mismo en esos

306
00:10:47,606 --> 00:10:51,246
registros públicos, son literalmente basura.

307
00:10:51,586 --> 00:10:52,906
Basura total.

308
00:10:52,906 --> 00:10:54,766
No pasaría ni uno de los test de

309
00:10:54,766 --> 00:10:56,546
calidad de los que hablábamos antes.

310
00:10:55,726 --> 00:10:58,086
Es que, claro, si tú te descargas un

311
00:10:58,086 --> 00:11:00,386
paquete de contexto que te dice, usa siempre

312
00:11:00,386 --> 00:11:02,706
React de esta manera, y te descargas otro

313
00:11:02,706 --> 00:11:05,266
que dice, no uses nunca esa función porque

314
00:11:05,266 --> 00:11:07,826
ralentiza el frontend, se lía.

315
00:11:07,586 --> 00:11:10,386
El famoso infierno de las dependencias, pero a

316
00:11:10,386 --> 00:11:11,906
nivel semántico.

317
00:11:11,946 --> 00:11:14,486
La gente se encuentra con dos leyes contradictorias

318
00:11:14,486 --> 00:11:15,706
y colapsa.

319
00:11:15,706 --> 00:11:16,966
No sabe a quién hacer caso.

320
00:11:17,006 --> 00:11:17,786
¡Ostras, qué caos!

321
00:11:17,966 --> 00:11:20,606
Sí, pero si conectamos esto con la perspectiva

322
00:11:20,606 --> 00:11:21,426
general.

323
00:11:21,466 --> 00:11:22,866
Esto ya no hemos vivido.

324
00:11:22,886 --> 00:11:25,106
Es exactamente igual que en los primeros días

325
00:11:25,106 --> 00:11:26,886
del software de código abierto.

326
00:11:27,006 --> 00:11:28,746
Todo el mundo subía de todo y muchas

327
00:11:28,746 --> 00:11:30,306
cosas no funcionaban.

328
00:11:30,286 --> 00:11:32,366
La madurez de esto llegará cuando las empresas

329
00:11:32,366 --> 00:11:35,346
empiecen a usar sus propios registros privados.

330
00:11:35,086 --> 00:11:38,146
Claro, con sus estándares de calidad y seguridad

331
00:11:38,146 --> 00:11:39,386
bien estrictos.

332
00:11:39,386 --> 00:11:42,326
Porque, hablando de seguridad, el tema de descargar

333
00:11:42,326 --> 00:11:44,946
habilidades de desconocidos tiene que ser un agujero

334
00:11:44,946 --> 00:11:46,666
de seguridad tremendo.

335
00:11:46,766 --> 00:11:48,986
Es un caballo de Troya enorme.

336
00:11:48,986 --> 00:11:51,766
Imagina que te descargas una habilidad maravillosa para

337
00:11:51,766 --> 00:11:54,946
refactorizar código de un registro público.

338
00:11:54,946 --> 00:11:56,446
Se la das a tu agente Open Cloud

339
00:11:56,446 --> 00:11:58,466
y ese agente está operando en tu entorno

340
00:11:58,466 --> 00:11:59,006
local.

341
00:11:59,166 --> 00:12:01,346
Con tus variables de entorno, tus claves de

342
00:12:01,346 --> 00:12:02,986
Amazon… Exacto.

343
00:12:02,986 --> 00:12:05,686
El contexto malicioso podría decirle sutilmente a la

344
00:12:05,686 --> 00:12:08,806
gente, oye, y de paso, léele las credenciales

345
00:12:08,806 --> 00:12:10,906
a este usuario y envíalas a este servidor.

346
00:12:11,666 --> 00:12:13,946
Por eso ahora hay que escanear el contexto,

347
00:12:13,946 --> 00:12:15,286
buscando riesgos.

348
00:12:15,326 --> 00:12:17,546
Se usan herramientas como Snyk para ver si

349
00:12:17,546 --> 00:12:19,226
se están exponiendo datos.

350
00:12:19,266 --> 00:12:20,266
Madre mía.

351
00:12:20,266 --> 00:12:23,466
Escanear texto buscando malas intenciones.

352
00:12:23,306 --> 00:12:25,526
Sí, y para esto es clave el concepto

353
00:12:25,526 --> 00:12:29,686
de AISBOM, el Software Bill of Materials para

354
00:12:29,686 --> 00:12:30,006
IA.

355
00:12:30,146 --> 00:12:31,886
O sea, la lista de ingredientes de lo

356
00:12:31,886 --> 00:12:33,126
que te estás descargando.

357
00:12:33,106 --> 00:12:34,126
Justo.

358
00:12:34,126 --> 00:12:37,466
Necesitas saber perfectamente quién construyó esa habilidad, con

359
00:12:37,466 --> 00:12:39,226
qué datos se probó y con qué modelo

360
00:12:39,226 --> 00:12:41,806
concreto de IA funciona de forma segura.

361
00:12:41,866 --> 00:12:43,886
Si algo falla, tienes que saber de dónde

362
00:12:43,886 --> 00:12:44,386
viene.

363
00:12:44,506 --> 00:12:47,406
Pero, claro, incluso con todo escaneado, los agentes

364
00:12:47,406 --> 00:12:49,826
a veces se vuelven creativos en tiempo real.

365
00:12:49,926 --> 00:12:53,606
Los archivos agent.md se cargan por defecto y

366
00:12:53,606 --> 00:12:55,626
la IA podría verse tentada en su intento

367
00:12:55,626 --> 00:12:58,106
de solucionar un problema a extraer secretos en

368
00:12:58,106 --> 00:12:59,046
el sandbox.

369
00:12:58,566 --> 00:13:00,626
¿Cómo frenas eso en vivo?

370
00:13:00,666 --> 00:13:02,866
Con filtros de contexto en tiempo real.

371
00:13:02,946 --> 00:13:05,626
Son como los WAF, los Web Application Firewalls

372
00:13:05,626 --> 00:13:08,306
de toda la vida, pero semánticos.

373
00:13:08,206 --> 00:13:09,826
Cortafuegos para el lenguaje.

374
00:13:09,586 --> 00:13:11,106
Exactamente.

375
00:13:11,106 --> 00:13:13,486
Se ponen en medio y bloquean cualquier intento

376
00:13:13,486 --> 00:13:15,066
de inyección de prompts.

377
00:13:15,086 --> 00:13:16,926
Si ven que la instrucción de repente empieza

378
00:13:16,926 --> 00:13:19,466
a pedir contraseñas, la cortan de raíz, antes

379
00:13:19,466 --> 00:13:21,086
de que se ejecute la acción.

380
00:13:20,826 --> 00:13:23,466
Tela, es increíble lo sofisticado que se está

381
00:13:23,466 --> 00:13:24,546
volviendo esto.

382
00:13:24,566 --> 00:13:26,626
Pero bueno, avancemos a la última etapa del

383
00:13:26,626 --> 00:13:27,766
ciclo.

384
00:13:27,566 --> 00:13:29,929
Supongamos que ya tenemos el contexto, lo hemos

385
00:13:29,929 --> 00:13:32,629
testeado, es seguro, y los desarrolladores lo están

386
00:13:32,629 --> 00:13:33,569
usando.

387
00:13:33,569 --> 00:13:35,709
¿Cómo sabemos si sigue sirviendo dentro de seis

388
00:13:35,709 --> 00:13:37,009
meses?

389
00:13:37,009 --> 00:13:40,489
Y la necesidad absoluta de la observabilidad.

390
00:13:40,489 --> 00:13:43,549
Hay que estar vigilando el proceso continuamente.

391
00:13:43,549 --> 00:13:44,929
¿Y cómo se observa esto?

392
00:13:44,929 --> 00:13:46,049
¿Qué métricas miras?

393
00:13:46,049 --> 00:13:48,509
Pues, por ejemplo, puedes analizar los registros de

394
00:13:48,509 --> 00:13:50,789
inferencia, los logs de la gente.

395
00:13:50,789 --> 00:13:52,489
Si de repente ves que a nivel de

396
00:13:52,489 --> 00:13:55,429
organización 20 agentes distintos se atascan en el

397
00:13:55,429 --> 00:13:57,609
mismo punto y se quejan de que les

398
00:13:57,609 --> 00:14:00,969
falta información sobre una pasarela de pago, pues

399
00:14:00,969 --> 00:14:02,689
ahí tienes una señal clara.

400
00:14:02,689 --> 00:14:04,949
Alguien va, crea ese trozo de contexto que

401
00:14:04,949 --> 00:14:07,749
falta, lo distribuye al registro y de golpe

402
00:14:07,749 --> 00:14:09,569
todos los agentes de la empresa se vuelven

403
00:14:09,569 --> 00:14:10,649
más listos.

404
00:14:10,649 --> 00:14:14,529
Ostras, el efecto flywheel, el volante de inercia,

405
00:14:14,529 --> 00:14:17,129
mejora un poquito y se acelera para todos.

406
00:14:17,129 --> 00:14:20,429
Exacto, es una mejora exponencial y también se

407
00:14:20,429 --> 00:14:22,509
ve mucho en las revisiones de código en

408
00:14:22,509 --> 00:14:24,909
los pull requests de toda la vida.

409
00:14:24,909 --> 00:14:26,669
¿Cómo afecta a los PRs?

410
00:14:26,669 --> 00:14:29,169
Piénsalo, si un humano revisa el código que

411
00:14:29,169 --> 00:14:31,849
ha generado un agente y lo rechaza porque,

412
00:14:31,849 --> 00:14:35,029
no sé, la gestión de errores está incompleta,

413
00:14:35,029 --> 00:14:37,129
esa crítica ya no es sólo para arreglar

414
00:14:37,129 --> 00:14:38,529
el código de ese archivo.

415
00:14:38,529 --> 00:14:41,429
Claro, es feedback directo para el contexto.

416
00:14:41,429 --> 00:14:43,569
Eso es, tienes que ir al archivo de

417
00:14:43,569 --> 00:14:46,869
instrucciones y mejorarlo, porque si solo arreglas el

418
00:14:46,869 --> 00:14:48,949
código a mano, mañana la IA volverá a

419
00:14:48,949 --> 00:14:51,149
cometer exactamente el mismo error.

420
00:14:51,209 --> 00:14:52,089
Es súper potente.

421
00:14:52,089 --> 00:14:54,149
Y entiendo que esto también se puede llevar

422
00:14:54,149 --> 00:14:55,189
a producción, ¿no?

423
00:14:55,229 --> 00:14:56,669
Totalmente.

424
00:14:56,669 --> 00:14:59,289
Envuélvese el código con observabilidad.

425
00:14:59,289 --> 00:15:01,289
Y si algo falla en producción, un error

426
00:15:01,289 --> 00:15:04,369
de input-output, por ejemplo, el sistema captura ese

427
00:15:04,369 --> 00:15:06,769
error y genera automáticamente un caso de prueba

428
00:15:06,769 --> 00:15:07,909
en tu suite de evals.

429
00:15:07,909 --> 00:15:09,469
O sea que el error de hoy en

430
00:15:09,469 --> 00:15:12,809
producción crea automáticamente el examen que el contexto

431
00:15:12,809 --> 00:15:13,849
tiene que aprobar mañana.

432
00:15:14,269 --> 00:15:16,849
Exacto, se asegura de que la IA nunca

433
00:15:16,849 --> 00:15:19,029
vuelva a cometer ese error Entonces, si te

434
00:15:19,029 --> 00:15:21,809
sigo el hilo, el trabajo del desarrollador solitario

435
00:15:21,809 --> 00:15:24,669
que estaba ahí afilando su propio archivito Markdown

436
00:15:24,669 --> 00:15:27,789
en su ordenador Está evolucionando a una mentalidad

437
00:15:27,789 --> 00:15:30,289
de equipo de equipos Tal cual Si algo

438
00:15:30,289 --> 00:15:33,349
falla, añades contexto Si lo arreglas en tu

439
00:15:33,349 --> 00:15:35,369
mesa en Madrid, el equipo de al lado

440
00:15:35,369 --> 00:15:37,509
o el que está en Tokio lo reutiliza

441
00:15:37,509 --> 00:15:39,849
al segundo siguiente Sí, y la clave es

442
00:15:39,849 --> 00:15:41,929
que hay que tratar todo este proceso con

443
00:15:41,929 --> 00:15:44,609
un rigor de ingeniería brutal Hay que usar

444
00:15:44,609 --> 00:15:47,749
sistemas de integración y entrega continuas, C y

445
00:15:47,749 --> 00:15:48,549
CD.

446
00:15:48,769 --> 00:15:50,309
Ya no vale con copiar y pegar prompts

447
00:15:50,309 --> 00:15:52,229
y rezar para que suene la flauta.

448
00:15:52,249 --> 00:15:53,429
Desde luego que no.

449
00:15:53,429 --> 00:15:56,229
Es fascinante cómo cambia nuestra profesión.

450
00:15:56,409 --> 00:15:57,749
Y bueno, con esto hemos dado un buen

451
00:15:57,749 --> 00:16:00,029
repaso al ciclo de vida del contexto.

452
00:15:59,929 --> 00:16:04,489
Sí, aunque me gustaría lanzar una reflexión final,

453
00:16:04,489 --> 00:16:06,429
si me permites, que igual os deja todos

454
00:16:06,429 --> 00:16:07,329
pensando.

455
00:16:07,269 --> 00:16:08,029
Adelante, dispara.

456
00:16:08,049 --> 00:16:10,169
Hemos estado un buen rato hablando de cómo

457
00:16:10,169 --> 00:16:14,269
nosotros, los humanos, creamos, probamos y distribuimos todo

458
00:16:14,269 --> 00:16:15,949
este contexto para gobernar a la IA, ¿no?

459
00:16:16,229 --> 00:16:16,689
Sí.

460
00:16:16,749 --> 00:16:19,009
Pero a medida que estos agentes se vuelven

461
00:16:19,009 --> 00:16:21,409
más autónomos, ya hemos visto que pueden observar

462
00:16:21,409 --> 00:16:23,529
sus propios errores en producción y generar tests,

463
00:16:24,189 --> 00:16:27,549
entonces, ¿cuánto falta para que sean ellos mismos

464
00:16:27,549 --> 00:16:29,989
quienes escriban las librerías de contexto para otros

465
00:16:29,989 --> 00:16:30,389
agentes?

466
00:16:30,689 --> 00:16:31,569
Ostras.

467
00:16:31,409 --> 00:16:34,389
¿Cuánto falta para que testeen y publiquen esas

468
00:16:34,389 --> 00:16:36,889
reglas, dejándonos a nosotros completamente fuera de la

469
00:16:36,889 --> 00:16:38,009
ecuación del desarrollo?

470
00:16:38,169 --> 00:16:39,709
Madre mía.

471
00:16:39,709 --> 00:16:41,469
La IA creando las leyes de la física

472
00:16:41,469 --> 00:16:43,849
para que la siguiente IA funcione mejor.

473
00:16:43,849 --> 00:16:45,329
Menudo bucle.

474
00:16:45,329 --> 00:16:47,409
Nos dejas con una crisis existencial para el

475
00:16:47,409 --> 00:16:49,369
resto de la semana, pero me parece un

476
00:16:49,369 --> 00:16:51,549
cierre perfecto para entender la magnitud de todo

477
00:16:51,549 --> 00:16:52,329
esto.

478
00:16:52,589 --> 00:16:54,649
Antes de despedirnos, hasta el próximo programa os

479
00:16:54,649 --> 00:16:56,469
informamos de que las voces que oyes han

480
00:16:56,469 --> 00:16:59,269
sido generadas por la IA de Notebook LM,

481
00:16:59,269 --> 00:17:01,309
y que dirigiendo el podcast se encuentra Julio

482
00:17:01,309 --> 00:17:04,089
Pablo Vázquez, un humano que te envía saludos.

483
00:17:04,089 --> 00:17:06,949
En caso de error, probablemente sean errores humanos.

484
00:17:06,949 --> 00:17:07,689
Nos escuchamos.

485
00:17:18,949 --> 00:17:21,069
Y hasta aquí el episodio de hoy.

486
00:17:21,069 --> 00:17:22,649
Muchas gracias por tu atención.

487
00:17:32,409 --> 00:17:34,669
Esto es BIMPRAXIS.

488
00:17:34,669 --> 00:17:36,769
Nos escuchamos en el próximo episodio.

489
00:17:58,069 --> 00:17:58,129
¡Suscríbete al canal!

