#32 - Todo está en la mente

Cambiando de aires, Github Copilot Chat y mucha IA, porque me apecÍA.

Os doy la bienvenida otro miércoles más a la newsletter. Hoy vamos a hablar de enfrentarse a problemas, usar la IA para hacer cosas, Github Copilot Chat y sobre el futuro de los miles de SaaS basados en IA que están saliendo como setas.

Como es una newsletter larga y densa, y con mucha IA, he decidido hacer un experimento. Así que aquí tenéis un resumen de lo que vais a leer, lo más clickbaity posible, cortesía de nuestro amigo GPT-4:

¡Hola, hola! ¿Preparados para un viaje lleno de misterio? Aquí os dejo unas migajas para despertar vuestra curiosidad:

1. Productividad perdida y recuperada: ¿Podrá nuestro protagonista encontrar un oasis de productividad en medio del desierto? La respuesta te sorprenderá.

2. Inteligencia Artificial al rescate: ¿Cómo enfrentarse a un montón de herramientas digitales sin perder la cordura? Un aliado inesperado tiene la clave.

3. Enfrentando gigantes de código: Un enfrentamiento cara a cara entre Github Copilot Chat y ChatGPT. ¿Quién será el vencedor?

4. El futuro de la IA: Un vistazo a las técnicas que podrían redefinir el uso de la Inteligencia Artificial en un futuro cercano.

¿Intrigados? ¡Adelante, a devorar el contenido completo!

GPT-4, también conocido como our future AI overlord.

Pa’ cagarse con el LLM.

Y ahora sí, como suelen decir los gurús del copy, los de carne y hueso que beben cerveza: empezamos.

Cambiado de aires

La semana pasada trabajé las mismas horas que el mes pasado.

Te dejo que lo leas otra vez, porque sé que pese a que a nivel sintáctico la cosa no tiene mucho misterio, es una de esas frases que te hace pensar que has leído algo mal, porque el significado obvio no es posible.

Pero lo es. Es real. Entre los días 1 y 30 de abril registré el mismo número de horas trabajadas que entre los días 8 y 12 de marzo.

¿Hay motivos que lo justifiquen? Bueno, algunos sí. Vacaciones del colegio, una escapada de cuatro días a Mallorca. En definitiva, varios días de inevitable baja productividad. ¿Pero el resto?

El resto estaba todo en mi mente.

Trabajar en casa es un reto imposible. La nevera, el sofá y el YouTube con las piernas encima de la mesa son reclamos a los que sucumbo con frustrante facilidad.

Y en la oficina, la de la empresa, tres cuartos de lo mismo. Demasiado familiar. Demasiadas oportunidades de marear a los demás (¿una empanadilla?) o de que me mareen (¿hay fuego en producción?). Demasiado ruido, y no necesariamente del tipo auditivo. Y por desgracia demasiada carga emocional negativa entre esas cuatro paredes.

Estas realizaciones se fueron interiorizando progresivamente durante las pasadas semanas hasta cristalizar en un completo bloqueo al que no era capaz de sobreponerme. Sabía que me sería imposible ser productivo tanto en casa como en la oficina, y consumía las horas obsesionándome sobre el hecho en sí, elucubrando hipótesis e imaginando ajustes horarios o planificaciones milagrosas.

Así que en un acto de desesperación me cogí la mochila y me eché a andar por Valencia buscando un coworking que me alejara forzosamente de todos estos vicios.

Y ¡tachán!, bloqueo eliminado. Productividad triplicada.

Un burrito

Y triplicado también el consumo de shawarmas y burritos.

Sigo sin poder trabajar en casa. Sigo sin tener demasiadas ganas de ir a la oficina (¡sorry compis!). Pero ese no era el objetivo. El objetivo era ser productivo.

Así que mi consejo de hoy: cuando estés atascado, fuerza un cambio. Si el problema se hace insuperable, tal vez puedas cambiar el problema.

Rompe con las dinámicas que no están funcionado y prueba algo distinto. No tiene por qué funcionar, pero si lo que estás haciendo ahora mismo tampoco, ¿por qué sigues insistiendo?

#BuildInPublic — Usando la IA para algo real

No sé dónde lo comenté pero resulta que tengo Diógenes digital y me dedico a acumular artículos, newsletter, tweets y, en particular, herramientas. Y acumular significa que las voy añadiendo a una lista en Notion en las que hay ya unas 600.

Obviamente el objetivo era ir clasificándolas. La primera aproximación era hacerlo a mano. ¿Tampoco será para tanto, no? Pues sí.

Se me fue de las manos rápidamente así que busqué una alternativa para agilizar el tema, planteando Tauleta, una app que permitiese editar bases de datos de Notion más ágilmente. Por suerte o por desgracia esta app nunca pasó de la etapa de pseudo-beta-cerrada (vamos que no la programé nunca). Así que la cosa continuó yéndose de las manos.

Así que finalmente ha tenido que ser la IA la que salve los muebles y he creado un pequeño script que scrapea la web de la herramienta, la pasa a Markdown, se la da de comer a GPT y me genera una descripción, tags y pricing para cada una.

Todo por un puñado de eurillos y un rato de jugar a truncar textos.

Es basto, es simple, pero funciona. El resumen de GPT-3.5.

Ahora me falta decidir qué hacer con esta lista, a parte de lo obvio que es… usarla. Me estoy planteado si a alguien le podría interesar. En otras palabras, si alguien pagaría por una lista curada de este tipo. Ya veremos.

Herramientas — Github Copilot Chat

Hablando de GPT-3.5, la semana pasada me dieron acceso a su rival natural a la hora de generar código, Github Copilot Chat. Le dediqué unas horas a trastearlo bien y me anoté en detalle todo lo que fui experimentando, así que si alguno está interesado en que hable del tema con más profundidad, no dudéis en decírmelo.

Pero como tip de herramienta de esta semana os voy a hacer un resumen aquí:

Nada sorprendente.

Mi principal motivación era evitar los tres problemas fundamentales de programar usando ChatGPT como generador de código:

  • El constante copy-paste entre tu editor y el navegador

  • La desincronización del modelo interno del código en el LLM y el repositorio real

  • El escaso tamaño de contexto que puede “recordar” GPT-4 y tener en cuenta cuando genera código nuevo.

En teoría todo esto debería resolverse con un modelo que funcionase integrado en la IDE y con acceso a todo el código contextualmente.

En este sentido Github Copilot Chat resuelve perfectamente el primer problema, ya que vive integrado en VS Code y te permite referirte a trozos de código simplemente teniéndolo abierto en el editor o seleccionándolo, para mayor precisión.

Sin embargo los dos siguientes puntos no cambian sustancialmente respecto a lo workflow actual con ChatGPT. Copilot Chat sólo accede, hasta donde yo he sido capaz de observar, al fichero abierto en ese momento, y al código seleccionado. No es capaz de acceder ficheros en disco y no es capaz de analizar elementos más sutiles como errores de linting o Typescript en tiempo real.

Y lo peor de todo es que no es obvio que esto es así. Copilot alucina alegremente que tiene completo acceso al código y que puede ver, por ejemplo, los errores de Typescript en el fichero actual, sólo descubriendo que es una completa ilusión en el momento que le pides un listado de ficheros o un resumen de errores, devolviéndote algo completamente absurdo.

Reflexion — Todo está en el contexto

Tomándome un café en un banco un miércoles a las 9:57.

No sé si te habrás fijado en el gif de antes, del script para describir las herramientas de mi tabla de Notion pasándole la web a GPT-3.5.

Una de las cosas que hace es cortar el texto de la web a las bravas para que quepa en algo menos de ~4000 tokens, que es lo que me queda de espacio máximo para enviarle a la API de OpenAI después de mi prompt inicial.

¿Qué es un token? Pues es aproximadamente una palabra (algo menos, realmente) que GPT-3.5 (o 4, o cualquier otro LLM) puede “tener en cuenta”, además de su propio conocimiento interno, para generar tu respuesta.

Con GPT-3.5 son 4.096 tokens, con GPT-4 8.000 y en su última versión, hasta 32.000, que son al cambio unas 25.000 palabras de texto. Unas 50 páginas.

Entonces, ¿como funcionan estas cosas que estamos viendo de analizar PDFs enteros de 100+ páginas, o knowledge bases de empresas?

Pues hay dos opciones. La cara, y la barata.

La cara y compleja es fine-tuning. Es empezar con el modelo base (e.g. GPT-3) y seguir entrenándolo con nuestros propios datos hasta lograr escorar las respuestas a cualquiera que sea nuestro objetivo.

Por desgracia esta opción no sólo es cara, sino que no está disponible para muchos de los modelos más conocidos y potentes, como GPT-3.5 o GPT-4.

La barata y habitual es usar embeddings. Esto es, en resumen, usar el propio modelo para crear un buscador de texto. De esta forma cuando el usuario escribe una pregunta, el sistema busca bloques de texto que (en teoría) tengan que ver con lo que se pregunta y entonces usa éstos para hacer la petición a la API de OpenAI.

Así es como funcionan el 99%, por no decir el 100% de las herramientas de IA sobre grandes cantidades de texto que están saliendo continuamente en Twitter y similares, desde los web-to-chatbot, los pdf-to-chatbot, o cualquier cosa que ingiera un montón de contenido y cree una interfaz de chat con IA.

Sin embargo esta aproximación no es ideal, pues por definición las respuestas generadas nunca tendrán toda la información en consideración. Es por eso que mucha gente está hablando de que el futuro viene con modelos con contextos mucho más grandes, como por ejemplo el modelo Claude de Anthropic que recientemente han actualizado para aceptar un contexto de hasta 100.000 tokens.

Creo que por aquí van al ir los tiros del futuro inmediato, así que estad atentos.

Y hasta aquí la newsletter de hoy, intensa, densa (¡1.677 palabras!) y cargada de IA. Igual es porque hoy he estado en casa, y como decía antes, allí no trabajo, y me he venido al coworking a mediodía pero he necesitado hora y media para quitarme las malas vibras de encima y echar a rodar. Así que he aprovechado para escribir este tostón que (con suerte) acabas de leer.

Como siempre, si os ha gustado compartidlo con amigos, compañeros, vecinos y allegados y cualquier cosa le dais al reply.

Nos leemos pronto.