Crear un archivo iCalendar desde una imagen con Anthropic Claude 3.5
(gregsramblings.com)- En una situación en la que el calendario de clases de piano jazz se entregó solo como imagen JPG, Claude 3.5 Sonnet redujo el trabajo repetitivo de leer las fechas marcadas y pasarlas al calendario
- Las 13 fechas marcadas en verde se extrajeron como clases quincenales los viernes, del 13 de septiembre de 2024 al 23 de mayo de 2025
- Luego, en la misma conversación, generó incluso el texto de un archivo ICS con eventos
Jazz Piano Lessonpara cada fecha a las 2 p. m., Pacific Time - El archivo
.icsgenerado se pudo guardar como texto e importar desde Import/export en Google Calendar, donde se agregó correctamente - ChatGPT también identificó las fechas, pero al principio propuso código en Python en lugar de un
.ics, y solo generó el texto iCalendar después de pedirle directamente el contenido del archivo
De una imagen con horarios a un archivo de calendario
- Un profesor de piano jazz envió el calendario de clases particulares de otoño/invierno como imagen JPG, con 13 fechas de clase marcadas con resaltador verde
- En lugar de crear manualmente 13 citas en Google Calendar, se subió la imagen a Claude 3.5 Sonnet
- La primera solicitud fue la siguiente
List the dates that are outlined in green
- Las 13 fechas extraídas por Claude fueron las siguientes
- Friday, 13-Sep-24
- Friday, 27-Sep-24
- Friday, 11-Oct-24
- Friday, 8-Nov-24
- Friday, 6-Dec-24
- Friday, 20-Dec-24
- Friday, 17-Jan-25
- Friday, 31-Jan-25
- Friday, 28-Feb-25
- Friday, 14-Mar-25
- Friday, 11-Apr-25
- Friday, 25-Apr-25
- Friday, 23-May-25
- Estas fechas corresponden a un calendario de clases quincenales los viernes que comienza en la semana que incluye el martes 10 de septiembre de 2024
El archivo iCalendar creado por Claude
- En la siguiente solicitud se pidió generar un archivo ICS con eventos
Jazz Piano Lessona las 2 p. m. Pacific Time en cada fecha - El texto iCalendar generado incluía
BEGIN:VCALENDAR,VERSION:2.0,PRODID,CALSCALE:GREGORIANy 13 bloquesVEVENT - Cada evento incluía los siguientes campos
SUMMARY:Jazz Piano LessonDTSTART,DTEND: evento de 1 horaDTSTAMP:20240824T000000ZUIDúnico por fecha
- La hora se convirtió a notación Z de UTC, y los cambios de horario de Pacific Time se reflejaron en el archivo
- El procedimiento de uso consistió en copiar el contenido generado, pegarlo en un nuevo archivo de texto, guardarlo con extensión
.icse importarlo en la app de calendario deseada - En Google Calendar, el archivo
.icsse importó mediante el menú Import/export de la configuración, y las citas se agregaron correctamente - Al probar la misma entrada en ChatGPT, este identificó las fechas, pero al principio respondió que no podía generar un archivo
.icsy proporcionó código en Python; luego, al pedirle “muéstrame solo el contenido del archivo.ics”, generó ese contenido
1 comentarios
Opiniones de Hacker News
Cuando le pidas a Claude extraer listas o datos, siempre hay que volver a revisar el resultado.
El 99.9% está bien, pero a veces 1 o 2 registros están mal, y como el resultado se ve convincente, es más fácil que se te pasen. En listas o tablas largas, los modelos de lenguaje grandes pueden equivocarse de formas muy sutiles; me ha pasado en carne propia. Confía, pero verifica.
Si la respuesta se puede verificar mecánicamente, otra opción es pedirle al modelo de lenguaje grande que escriba un validador en Python que pueda ejecutar internamente. ChatGPT puede ejecutar código, y tengo entendido que Sonnet 3.5 también, aunque no lo he probado personalmente.
No es lo mismo que, al preguntar por el cumpleaños de George Washington, responda “May 20, 2020”, a que alucine con confianza “February 20, 1733”. A primera vista suena plausible. Presidents' Day es en febrero y parece estar relacionado con su cumpleaños, y el año también parece correcto, así que es fácil sentir que es suficiente.
Pero está mal, y da miedo que los modelos de lenguaje grandes digan ese tipo de “hechos” con una actitud de plena seguridad. Se los hizo hablar así como modelos probabilísticos, y no había suficientes mecanismos para comprobar o verificar la información.
“Confía, pero verifica” es paradójico y circular. Si tengo que comprobar en Wikipedia —a la que considero una fuente de verdad más alta— todos los datos que me dio ChatGPT, ¿por qué no empezar ahí desde el principio? Si tengo que crear un validador en Python para verificar la salida, ¿por qué no hacerlo desde el principio?
Estos errores sutiles van a causar grandes problemas. Los errores por diferencia de 1 son muy difíciles de detectar, los datos se van contaminando lentamente y se desvían cada vez más hacia direcciones absurdas hasta que nos damos cuenta demasiado tarde. Si toda la basura que producen los modelos de lenguaje grandes fuera tan evidente como recomendar poner pegamento en la pizza, sería casi mejor; pero la realidad probablemente será más como veneno filtrándose poco a poco en un pozo, y cuando las salidas inexactas empiecen a entrar en partes importantes de la vida, puede volverse realmente problemático.
Si lo hiciera yo mismo, creo que ni siquiera llegaría al 99% de precisión. Si en este tipo de tarea de verdad hay 99.9% de precisión, lo aceptaría con gusto.
Por ejemplo, mientras probaba dos apps de podcasts, quería ver las diferencias entre los feeds a los que estaba suscrito. Al principio le pedí que comparara dos archivos OPML, pero el resultado fue incorrecto. Podría haber pasado 30 minutos afinando el prompt y verificando manualmente, pero en vez de eso le pedí que escribiera un script para comparar los dos archivos, y funcionó bien. En comparación con el proceso tedioso de revisar una salida compleja elemento por elemento, es relativamente fácil revisar un script y convencerse de que probablemente está bien.
Probé una tarea similar a la del artículo original con datos que no estaban en inglés, y no pude evitar que Claude tradujera “amablemente” parte de los datos al inglés. Si le decía “incluye la descripción de la imagen”, la traducía; si le decía “incluye la descripción de la imagen, pero no la traduzcas ni la resumas”, simplemente la omitía.
Hace 2 semanas tuve exactamente el mismo caso de uso: recibí un PDF de la escuela y estaba en un café solo con mi teléfono.
Usé ChatGPT, y aunque es cierto lo que el artículo dice sobre que el intérprete de código no puede generar directamente archivos .ics, este problema en particular sí se podía resolver. En un teléfono Android hice lo siguiente: le pedí que extrajera todas las fechas, horas y notas útiles del PDF, que generara el contenido en formato de archivo .ics como salida de código, y luego usé el intérprete de código para poner ese contenido en un archivo y guardarlo con extensión .ics.
Lo manejó bien hasta el final, y pude descargar el archivo en el teléfono, abrirlo con la app de gcal e importar todos los eventos.
La afirmación de que el intérprete de código no puede “generar” archivos ICS se debe a que el entorno Python que se ejecuta no tiene una biblioteca específica para esa tarea. Un archivo ICS no es más que un archivo de texto con un formato específico, así que se puede crear sin problema.
Hice algo parecido con ChatGPT-4o: le di un archivo txt con una lista de títulos de películas. Le pedí que devolviera la fecha de estreno de cada película y luego recibí un archivo iCal con todos los estrenos como eventos de aniversario recurrentes cada año, para poder ver mis películas favoritas en cada aniversario.
También se lo hice a algunos amigos, y hasta ahora, con más de 100 títulos de películas en total, la tasa de éxito fue del 100%.
Por eso recuerdo que el 11 de septiembre de 2001 fue martes. Era día de lanzamiento de álbumes, y ese día también salió un buen álbum.
Lugares como escuelas o empleadores todavía distribuyen muchos calendarios en formato PDF.
Dedican más tiempo al branding y al formato visual que a convertirlos en un formato que realmente pueda importarse a una app de calendario y usarse de forma práctica.
Me pregunto si no sería posible un proceso de dos pasos que pueda generalizarse de forma más robusta. Primero, leer cualquier documento y armar una tabla con fechas, horas y zonas horarias, lugares, URL, notas y recurrencia; segundo, leer una tabla con más o menos esa estructura y generar un archivo o enlace de Google Calendar, iCal o ICS.
También parecería posible afinar por separado modelos o agentes para que ejecuten muy bien cada paso.
Creo que aquí Siri fracasó. Incluso algo como “créame un evento que empiece el lunes y dure 90 días” siempre fue casi una apuesta.
Siri tampoco podía hacer las cosas que yo no quería hacer manualmente. Entonces no es muy correcto llamarlo asistente.
Le pasé a GPT4-o una captura de pantalla con una lista de transacciones de banca en línea y obtuve una lista de transacciones para la declaración de impuestos de la empresa. La verifiqué a ojo y el resultado estaba bien.
Antes de eso, un product manager me había enviado por captura una lista de IDs de empresas para activar un feature flag. En lugar de ingresarlos todos manualmente, hice que GPT4-o generara a partir de la captura una lista separada por comas, y también funcionó perfecto.
Esto es impresionante. Al mismo tiempo, muestra muy bien un patrón de diseño que ojalá se difundiera más gracias a la IA: formatos de archivo interoperables y legibles por humanos. Cosas como los archivos .ICS.
Me gustaría que más sitios web y apps priorizaran el soporte de estos formatos. No solo hace que sea más fácil usarlos con IA de por medio, sino que permite que más gente cree extensiones de forma creativa.
Durante más o menos la última década hubo una tendencia a hacer los datos más cerrados en silos y a reducir la importancia de los propios archivos en nombre de la “simplicidad”; ojalá eso retroceda en cierta medida.
Uso ChatGPT seguido para crear entradas de calendario. Pudo generar enlaces de Google Calendar, archivos ICS y códigos QR.
No sé qué fue lo que salió mal en el artículo original.
Hoy también se le puede pedir que “use Python” para el objetivo. Entonces sí crea el archivo, pero como tiene que codificar el resultado como una cadena o un arreglo de Python, puede aumentar la probabilidad de errores.
Usar IA para invitaciones de calendario definitivamente encaja bien. Hice algo parecido aquí, y ical es más simple.
https://hareeshganesan.com/2024/07/14/baby-calendar
Con gpt 4o estoy simplificando de forma similar la entrada de datos. Incluso ahora es bastante útil, aunque la gente todavía no está usando mucho los modelos grandes de lenguaje para trabajos estructurados.
Pero me parece que va a cambiar porque es demasiado claramente útil. Cualquier tarea de ingresar datos en un formulario ya puede automatizarse, y de hecho se automatizará. Sobre todo si la información está en papel o en una forma imprimible: basta apuntar la cámara y hacer una revisión rápida.
Extraer información de lugares como letreros o pósters puede ser sorprendentemente útil. La gente invierte mucho esfuerzo y dinero en comunicar visualmente mucha información que no existe en un formato digital de fácil acceso.