Créer un fichier iCalendar à partir d’une image avec Anthropic Claude 3.5
(gregsramblings.com)- Dans une situation où le planning des cours de piano jazz n’avait été transmis que sous forme d’image JPG, Claude 3.5 Sonnet a permis de réduire le travail répétitif consistant à lire les dates affichées puis à les reporter dans un calendrier
- Les 13 dates marquées en vert ont été extraites comme des cours un vendredi sur deux allant du 13 septembre 2024 au 23 mai 2025
- Dans la même conversation, il a ensuite généré jusqu’au texte d’un fichier ICS contenant des événements
Jazz Piano Lessonà 14 h, heure du Pacifique, pour chacune des dates - Le fichier
.icsgénéré a pu être enregistré sous forme de texte puis importé correctement via Import/export dans Google Calendar - ChatGPT a lui aussi identifié les dates, mais a d’abord proposé du code Python au lieu d’un fichier
.ics, et n’a produit le texte iCalendar qu’après une demande explicite du contenu du fichier
De l’image de planning au fichier calendrier
- Un professeur de piano jazz a envoyé le planning automne/hiver des cours particuliers sous forme d’image JPG, avec 13 dates de cours surlignées en vert
- Au lieu de créer manuellement 13 rendez-vous dans Google Calendar, l’image a été envoyée à Claude 3.5 Sonnet
- La première demande était la suivante
List the dates that are outlined in green
- Claude a extrait les 13 dates suivantes
- 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
- Ces dates correspondent à un planning de cours un vendredi sur deux, à partir de la semaine incluant le mardi 10 septembre 2024
Le fichier iCalendar créé par Claude
- La demande suivante consistait à générer un fichier ICS créant un événement
Jazz Piano Lessonà 14 h, heure du Pacifique, pour chacune des dates - Le texte iCalendar généré comprenait
BEGIN:VCALENDAR,VERSION:2.0,PRODID,CALSCALE:GREGORIANainsi que 13 blocsVEVENT - Chaque événement contenait les champs suivants
SUMMARY:Jazz Piano LessonDTSTART,DTEND: événement d’une heureDTSTAMP:20240824T000000Z- un
UIDunique par date
- L’heure a été convertie avec la notation Z de l’UTC, et les changements d’heure du Pacifique ont été répercutés dans le fichier
- La procédure d’utilisation consistait à copier le contenu généré dans un nouveau fichier texte, à l’enregistrer avec l’extension
.ics, puis à l’importer dans l’application de calendrier souhaitée - Dans Google Calendar, le fichier
.icsa été importé via le menu Import/export des paramètres, et les rendez-vous ont bien été ajoutés - En essayant la même entrée dans ChatGPT, les dates ont bien été identifiées, mais il a d’abord répondu qu’il ne pouvait pas générer de fichier
.icset a fourni du code Python ; ensuite, à la demande « montre-moi seulement le contenu du fichier.ics», il a généré ce contenu
1 commentaires
Avis sur Hacker News
Quand on demande à Claude d’extraire des listes ou des données, il faut impérativement revérifier le résultat
99,9 % est correct, mais il arrive que 1 ou 2 enregistrements soient faux, et comme le résultat paraît plausible, c’est encore plus facile de les rater. Dans de longues listes ou des tableaux, les grands modèles de langage peuvent se tromper de façon très subtile ; cela m’est déjà arrivé. Faites confiance, mais vérifiez
Si la réponse peut être vérifiée mécaniquement, une méthode consiste aussi à demander au grand modèle de langage d’écrire un validateur Python qu’il peut exécuter en interne. ChatGPT peut exécuter du code, et il me semble que Sonnet 3.5 le peut aussi, même si je n’ai pas essayé moi-même
Quand on demande la date de naissance de George Washington, répondre « May 20, 2020 » n’est pas la même chose qu’halluciner avec assurance « February 20, 1733 ». À première vue, c’est plausible. Presidents' Day est en février et semble lié à son anniversaire, et l’année paraît correcte, donc il est facile de se dire que cela suffit
Mais c’est faux, et ce qui fait peur, c’est que les grands modèles de langage énoncent ce genre de « faits » avec une assurance totale. On a conçu un modèle probabiliste pour parler ainsi, sans dispositif suffisant pour contrôler ou vérifier l’information
« Faites confiance, mais vérifiez » est paradoxal et circulaire. Si je dois vérifier chaque fait fourni par ChatGPT dans Wikipedia, que je considère comme une source de vérité supérieure, pourquoi ne pas commencer directement par là ? Si je dois créer un validateur Python pour vérifier la sortie, pourquoi ne pas faire cela dès le départ ?
Ces erreurs insidieuses vont causer de gros problèmes. Les erreurs de décalage de 1 sont très difficiles à repérer ; les données se contaminent lentement et dérivent de plus en plus dans la mauvaise direction, jusqu’à ce qu’on s’en rende compte trop tard. Si toutes les sorties absurdes des grands modèles de langage étaient aussi visibles que la recommandation de mettre de la colle sur une pizza, ce serait presque préférable ; en réalité, ce sera plutôt comme un poison qui s’infiltre peu à peu dans un puits, et si des sorties inexactes commencent à entrer dans des aspects importants de la vie, cela risque vraiment de devenir problématique
Je ne pense pas pouvoir atteindre moi-même 99 % de précision. Pour ce genre de tâche, si c’est vraiment 99,9 % de précision, je l’accepterais volontiers
Par exemple, je voulais comparer les différences entre les flux auxquels j’étais abonné en testant deux applications de podcast. Au début, je lui ai demandé de comparer deux fichiers OPML, mais le résultat était faux. J’aurais pu passer 30 minutes à affiner le prompt et à vérifier manuellement, mais à la place je lui ai demandé d’écrire un script pour comparer les deux fichiers, et cela a bien fonctionné. Par rapport à la tâche fastidieuse consistant à vérifier une sortie complexe ligne par ligne, un script est relativement facile à relire pour acquérir la conviction qu’il est probablement correct
J’ai essayé une tâche similaire à celle de l’article original avec des données non anglaises, et je n’ai pas réussi à empêcher Claude de traduire « gentiment » une partie des données en anglais. Si je lui demandais « inclure la description de l’image », il la traduisait ; si je lui demandais « inclure la description de l’image, mais ne pas la traduire ni la résumer », il l’ignorait simplement
Il y a deux semaines, j’ai eu exactement le même besoin : l’école m’avait envoyé un fichier PDF et j’étais dans un café avec seulement mon téléphone
J’ai utilisé ChatGPT, et l’article a raison de dire que l’interpréteur de code ne peut pas générer directement un fichier .ics, mais ce problème précis était tout à fait soluble. Sur un téléphone Android, j’ai procédé ainsi : je lui ai fait extraire du PDF toutes les dates, heures et notes utiles, puis produire le contenu au format de fichier .ics sous forme de sortie de code, puis utiliser l’interpréteur de code pour mettre ce contenu dans un fichier et l’enregistrer avec l’extension .ics
Il a tout mené à bien, et j’ai pu télécharger le fichier sur mon téléphone, l’ouvrir avec l’application gcal et importer tous les événements
L’affirmation selon laquelle l’interpréteur de code ne peut pas « générer » de fichiers ICS tient au fait que l’environnement Python exécuté ne dispose pas de la bibliothèque spécifique pour cette tâche. Un fichier ICS n’est qu’un fichier texte dans un format précis, donc il est tout à fait possible d’en créer un
J’ai fait quelque chose de similaire avec ChatGPT-4o en lui donnant un fichier txt contenant une liste de titres de films. Je lui ai demandé de renvoyer la date de sortie de chaque film, puis j’ai obtenu un fichier iCal contenant toutes les dates de sortie des films sous forme d’événements anniversaires récurrents chaque année, pour pouvoir regarder mes films préférés à chaque anniversaire
Je l’ai aussi fait pour quelques amis, et jusqu’ici, sur plus de 100 titres de films au total, le taux de réussite a été de 100 %
C’est pour ça que je me souviens que le 11 septembre 2001 était un mardi. C’était jour de sortie d’albums, et il y avait aussi un bon album ce jour-là
Les écoles, les employeurs et autres distribuent encore beaucoup de calendriers au format PDF
Ils passent plus de temps sur le branding et la mise en forme visuelle que sur la création d’un format réellement importable dans une appli de calendrier et utilisable concrètement
Je me demande s’il ne serait pas possible d’avoir un processus en deux étapes, généralisable de façon plus robuste. D’abord, lire n’importe quel document et en extraire un tableau avec les dates, les heures et fuseaux horaires, les lieux, les URL, les notes et les éventuelles récurrences ; ensuite, lire un tableau ayant à peu près cette structure pour générer un fichier ou un lien Google Calendar, iCal ou ICS
On pourrait aussi sans doute affiner séparément des modèles ou des agents pour qu’ils exécutent très bien chacune de ces étapes
Pour moi, Siri a échoué sur ce point. Même quelque chose comme « crée-moi un événement qui commence lundi et dure 90 jours » a toujours été presque un pari
Siri n’arrivait pas non plus à faire les choses que je ne voulais pas faire manuellement. Dans ce cas, difficile de vraiment parler d’assistant
J’ai donné à GPT4-o une capture d’écran d’une liste de transactions de banque en ligne pour obtenir une liste de transactions destinée à la déclaration fiscale de mon entreprise. J’ai vérifié visuellement, et le résultat était correct
Avant cela, un chef de produit m’avait envoyé une capture d’écran avec une liste d’identifiants d’entreprises pour lesquelles activer un feature flag. Au lieu de tout saisir à la main, j’ai demandé à GPT4-o de produire à partir de la capture une liste séparée par des virgules, et là aussi, ça a parfaitement fonctionné
C’est impressionnant. En même temps, cela illustre bien un modèle de conception que j’aimerais voir se répandre davantage grâce à l’IA : les formats de fichiers interopérables et lisibles par l’humain. Des choses comme les fichiers .ICS
J’aimerais que davantage de sites web et d’apps donnent la priorité à la prise en charge de ce type de formats. Non seulement cela devient plus facile à utiliser en y ajoutant de l’IA, mais cela permet aussi à davantage de personnes de créer des extensions de manière créative
Depuis une dizaine d’années, au nom de la « simplicité », on a vu les données devenir de plus en plus cloisonnées et les fichiers eux-mêmes perdre de leur importance ; j’aimerais que cette tendance s’inverse un peu
J’utilise souvent ChatGPT pour créer des entrées de calendrier. Il a su produire des liens Google Calendar, des fichiers ICS et des QR codes
Je ne sais pas ce qui s’est mal passé dans l’article original
Aujourd’hui, on peut aussi lui demander « d’utiliser Python » pour atteindre l’objectif. Il crée alors bien un fichier, mais comme il faut encoder le résultat sous forme de chaîne ou de tableau Python, il y a davantage de risques d’erreurs
Utiliser l’IA pour les invitations de calendrier est clairement un bon cas d’usage. J’ai fait un travail similaire ici, et ical est plus simple
https://hareeshganesan.com/2024/07/14/baby-calendar
J’utilise gpt 4o de manière similaire pour simplifier la saisie de données. C’est déjà assez utile, mais les gens ne font pas encore beaucoup de tâches structurées avec les grands modèles de langage
Cela dit, l’utilité est tellement évidente que je pense que ça va changer. Toute saisie de données dans un formulaire peut désormais être automatisée, et le sera effectivement. Surtout si l’information existe sur papier ou sous une forme imprimable : il suffit de pointer une caméra dessus puis de vérifier rapidement
Aspirer les informations présentes sur des panneaux, des affiches, etc. peut s’avérer étonnamment utile. Les gens consacrent beaucoup d’efforts et d’argent à transmettre visuellement quantité d’informations qui n’existent pas sous un format numérique facilement accessible