Mit Anthropic Claude 3.5 aus einem Bild eine iCalendar-Datei erstellen
(gregsramblings.com)- In einer Situation, in der der Terminplan für Jazzklavierunterricht nur als JPG-Bild vorlag, reduzierte Claude 3.5 Sonnet die wiederkehrende Arbeit, die markierten Daten zu lesen und in den Kalender zu übertragen
- Die 13 grün markierten Daten wurden als zweiwöchentliche Freitagsstunden vom 13. September 2024 bis zum 23. Mai 2025 extrahiert
- Anschließend wurde im selben Gespräch sogar der Text einer ICS-Datei erzeugt, die für jedes Datum einen Termin
Jazz Piano Lessonum 14 Uhr Pacific Time enthält - Die erzeugte
.ics-Datei konnte nach dem Speichern als Textdatei über Import/export in Google Calendar importiert und korrekt hinzugefügt werden - ChatGPT erkannte die Daten ebenfalls, schlug zunächst aber Python-Code statt einer
.ics-Datei vor und erzeugte den iCalendar-Text erst nach einer direkten Nachfrage nach dem Dateiinhalt
Von einem Bildterminplan zur Kalenderdatei
- Ein Jazzklavierlehrer schickte den Herbst-/Winterplan für Einzelstunden als JPG-Bild, wobei 13 Unterrichtstermine mit einem grünen Marker markiert waren
- Statt 13 Termine manuell in Google Calendar anzulegen, wurde das Bild in Claude 3.5 Sonnet hochgeladen
- Die erste Anfrage lautete wie folgt
List the dates that are outlined in green
- Die von Claude extrahierten 13 Daten waren folgende
- 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
- Diese Daten entsprechen einem Plan mit zweiwöchentlichen Freitagsstunden, beginnend in der Woche, die Dienstag, den 10. September 2024, enthält
Die von Claude erzeugte iCalendar-Datei
- In der nächsten Anfrage wurde darum gebeten, eine ICS-Datei zu erzeugen, die für jedes Datum einen Termin
Jazz Piano Lessonum 14 Uhr Pacific Time anlegt - Der erzeugte iCalendar-Text enthielt
BEGIN:VCALENDAR,VERSION:2.0,PRODID,CALSCALE:GREGORIANsowie 13VEVENT-Blöcke - Jedes Ereignis enthielt die folgenden Felder
SUMMARY:Jazz Piano LessonDTSTART,DTEND: 1-stündiger TerminDTSTAMP:20240824T000000Z- eine datumsspezifische
UID
- Die Uhrzeiten wurden in die Z-Notation von UTC umgewandelt, und die Zeitumstellung in der Pacific Time wurde in der Datei berücksichtigt
- Die Vorgehensweise bestand darin, den erzeugten Inhalt zu kopieren, in eine neue Textdatei einzufügen, mit der Endung
.icszu speichern und dann in die gewünschte Kalender-App zu importieren - In Google Calendar wurde die
.ics-Datei über das Menü Import/export in den Einstellungen importiert, und die Termine wurden korrekt hinzugefügt - Beim Versuch mit derselben Eingabe in ChatGPT wurden die Daten zwar erkannt, zunächst aber geantwortet, dass eine
.ics-Datei nicht erzeugt werden könne, und stattdessen Python-Code geliefert; erst nach der Aufforderung „Bitte zeige nur den Inhalt der .ics-Datei“ wurde der entsprechende Inhalt erzeugt
1 Kommentare
Hacker-News-Meinungen
Wenn man Claude Listen oder Daten extrahieren lässt, sollte man das Ergebnis unbedingt noch einmal prüfen.
Zu 99,9 % stimmt es, aber gelegentlich sind 1–2 Datensätze falsch, und weil das Ergebnis plausibel aussieht, übersieht man es leichter. Bei langen Listen oder Tabellen können große Sprachmodelle ganz subtil danebenliegen; das habe ich selbst erlebt. Vertrauen ist gut, Kontrolle ist besser.
Wenn die Antwort maschinell überprüfbar ist, kann man das große Sprachmodell auch einen Python-Validator schreiben lassen, der intern ausgeführt werden kann. ChatGPT kann Code ausführen, und meines Wissens kann Sonnet 3.5 das ebenfalls, ausprobiert habe ich es aber nicht.
Es ist ein Unterschied, ob ein Modell auf die Frage nach George Washingtons Geburtstag „May 20, 2020“ antwortet oder selbstbewusst „February 20, 1733“ halluziniert. Auf den ersten Blick wirkt das plausibel. Presidents' Day ist im Februar und scheint mit seinem Geburtstag zu tun zu haben, und das Jahr wirkt auch passend, also ist man schnell geneigt, es für ausreichend zu halten.
Aber es ist falsch, und es ist beängstigend, dass große Sprachmodelle solche „Fakten“ mit selbstsicherem Ton äußern. Das liegt daran, dass man ein probabilistisches Modell dazu gebracht hat, so zu sprechen, ohne ausreichende Mechanismen zum Nachschlagen oder Verifizieren von Informationen.
„Vertraue, aber prüfe“ ist paradox und zirkulär. Wenn ich jede Tatsache von ChatGPT mit Wikipedia abgleichen muss, weil ich sie für eine höhere Quelle der Wahrheit halte, warum fange ich dann nicht gleich dort an? Wenn ich einen Python-Validator bauen muss, um die Ausgabe zu prüfen, warum mache ich das nicht von Anfang an?
Solche subtilen Fehler werden große Probleme verursachen. Off-by-one-Fehler sind sehr schwer zu entdecken; Daten werden langsam verunreinigt und driften immer weiter in die falsche Richtung, bis man es erst bemerkt, wenn es zu spät ist. Wenn der ganze Müll-Output großer Sprachmodelle so offensichtlich wäre wie die Empfehlung, Kleber auf Pizza zu geben, wäre das fast noch ein Glücksfall. In der Realität wird es eher so sein, dass sich Gift langsam in den Brunnen schleicht, und wenn ungenaue Ausgaben in wichtige Lebensbereiche eindringen, kann das wirklich problematisch werden.
Wenn ich es selbst mache, komme ich vermutlich nicht einmal auf 99 % Genauigkeit. Wenn es bei solchen Aufgaben wirklich 99,9 % Genauigkeit sind, würde ich das gern akzeptieren.
Ich wollte zum Beispiel beim Testen zweier Podcast-Apps die Unterschiede zwischen den abonnierten Feeds sehen. Zuerst bat ich es, zwei OPML-Dateien zu vergleichen, aber das Ergebnis war falsch. Ich hätte 30 Minuten lang den Prompt verfeinern und manuell prüfen können; stattdessen bat ich es, ein Skript zum Vergleichen der beiden Dateien zu schreiben, und das funktionierte gut. Im Vergleich zu dem mühsamen Prozess, komplexe Ausgaben einzeln zu überprüfen, lässt sich ein Skript relativ leicht durchsehen und mit einiger Sicherheit für korrekt halten.
Ich habe eine ähnliche Aufgabe wie im Originalbeitrag mit nicht-englischen Daten ausprobiert und konnte Claude nicht davon abhalten, Teile der Daten „freundlicherweise“ ins Englische zu übersetzen. Wenn ich sagte: „Füge die Beschreibung aus dem Bild ein“, übersetzte es sie; wenn ich sagte: „Füge die Beschreibung aus dem Bild ein, aber übersetze oder fasse sie nicht zusammen“, ließ es sie einfach weg.
Vor zwei Wochen hatte ich genau denselben Anwendungsfall: Ich bekam von der Schule eine PDF-Datei und hatte im Café nur mein Handy dabei.
Ich habe ChatGPT verwendet, und die Aussage im Artikel, dass der Code Interpreter keine .ics-Datei direkt erzeugen könne, stimmt zwar, aber dieses konkrete Problem ließ sich vollständig lösen. Auf einem Android-Handy bin ich so vorgegangen: Ich ließ alle nützlichen Daten, Uhrzeiten und Notizen aus der PDF extrahieren, ließ den Inhalt im .ics-Dateiformat als Code-Ausgabe erzeugen und verwendete dann den Code Interpreter, um diesen Inhalt in eine Datei zu schreiben und mit der Erweiterung .ics zu speichern.
Das hat bis zum Ende gut funktioniert; ich konnte die Datei auf dem Handy mit der gcal-App herunterladen, öffnen und alle Termine importieren.
Die Behauptung, der Code Interpreter könne keine ICS-Dateien „erzeugen“, liegt daran, dass in der ausgeführten Python-Umgebung keine spezielle Bibliothek für diese Aufgabe vorhanden ist. ICS-Dateien sind lediglich Textdateien in einem bestimmten Format, daher kann man sie problemlos erstellen.
Ich habe etwas Ähnliches mit ChatGPT-4o gemacht, dem ich eine txt-Datei mit einer Liste von Filmtiteln gegeben habe. Ich ließ es das Veröffentlichungsdatum jedes Films zurückgeben und bekam dann eine iCal-Datei, in der alle Filmstarts als jährlich wiederkehrende Jahrestag-Events eingetragen waren, damit ich meine Lieblingsfilme jeweils zum Jubiläum ansehen kann.
Ich habe das auch für ein paar Freunde gemacht, und bisher lag die Erfolgsquote bei insgesamt über 100 Filmtiteln bei 100 %.
Deshalb erinnere ich mich daran, dass der 11. September 2001 ein Dienstag war. Es war Veröffentlichungstag für Alben, und an diesem Tag gab es auch ein gutes Album.
Einrichtungen wie Schulen oder Arbeitgeber verteilen immer noch häufig Kalender im PDF-Format.
Sie investieren mehr Zeit in Branding und visuelle Formatierung, als daraus ein Format zu machen, das man tatsächlich in eine Kalender-App importieren und praktisch nutzen kann.
Vielleicht wäre ein zweistufiger Prozess möglich, der robuster verallgemeinert: Erstens jedes beliebige Dokument lesen und Datum, Uhrzeit und Zeitzone, Ort, URL, Notizen sowie Wiederholungen in eine Tabelle bringen; zweitens eine Tabelle mit ungefähr dieser Struktur lesen und daraus Google-Calendar-, iCal-, ICS-Dateien oder Links erzeugen.
Man könnte wohl auch separate Modelle oder Agenten feinabstimmen, damit sie jeden Schritt besonders gut erledigen.
Hier hat Siri meiner Ansicht nach versagt. Selbst etwas wie „Erstelle ein Ereignis, das am Montag beginnt und 90 Tage dauert“ war immer fast schon ein Glücksspiel.
Dinge, die ich nicht manuell erledigen wollte, konnte Siri auch nicht. Dann ist es schwer, sie wirklich als Assistentin zu bezeichnen.
Ich habe GPT4-o einen Screenshot einer Onlinebanking-Transaktionsliste gegeben und daraus eine Transaktionsliste für die Steuererklärung der Firma erhalten. Ich habe sie visuell geprüft, und das Ergebnis stimmte.
Davor hatte ein Product Manager eine Liste von Firmen-IDs, für die ein Feature-Flag aktiviert werden sollte, als Screenshot geschickt. Statt alles manuell einzugeben, ließ ich GPT4-o aus dem Screenshot eine kommaseparierte Liste erstellen, und auch das funktionierte perfekt.
Das ist beeindruckend. Gleichzeitig zeigt es auch gut ein Designmuster, das sich dank AI hoffentlich weiter verbreitet: interoperable, menschenlesbare Dateiformate. Dinge wie .ICS-Dateien.
Ich würde mir wünschen, dass mehr Websites und Apps die Unterstützung solcher Formate priorisieren. Dadurch wird nicht nur die Nutzung mit zwischengeschalteter AI einfacher, sondern auch mehr Menschen können kreativ Erweiterungen bauen.
In den letzten etwa zehn Jahren gab es unter dem Schlagwort „Einfachheit“ eine Entwicklung hin zu stärker siloisierten Daten und einer geringeren Bedeutung von Dateien selbst; ich hoffe, das dreht sich ein Stück weit wieder um.
Ich erstelle häufig Kalendereinträge mit ChatGPT. Google-Calendar-Links, ICS-Dateien und QR-Codes waren alle möglich.
Ich weiß nicht, was im Original schiefgelaufen ist.
Heutzutage kann man für diesen Zweck auch darum bitten, „Python zu verwenden“. Dann wird zwar eine Datei erzeugt, aber das Ergebnis muss als Python-String oder -Array encodiert werden, was die Fehlerwahrscheinlichkeit erhöhen kann.
AI für Kalendereinladungen zu verwenden, passt definitiv gut. Ich habe hier eine ähnliche Aufgabe umgesetzt, und ical ist noch einfacher.
https://hareeshganesan.com/2024/07/14/baby-calendar
Ich vereinfache auf ähnliche Weise mit gpt 4o die Dateneingabe. Schon jetzt ist das ziemlich nützlich, aber noch erledigen nicht viele Leute strukturierte Aufgaben mit Large Language Models.
Ich denke aber, dass sich das ändern wird, weil der Nutzen so offensichtlich ist. Jede Art, Daten in ein Formular einzugeben, kann jetzt automatisiert werden und wird es tatsächlich auch werden. Besonders wenn die Informationen gedruckt oder in druckbarer Form vorliegen, hält man einfach die Kamera darauf und prüft kurz nach.
Informationen von Schildern, Postern und ähnlichen Quellen abzusaugen, kann erstaunlich nützlich sein. Menschen investieren viel Mühe und Geld, um viele Informationen visuell zu vermitteln, die nicht in leicht zugänglichen digitalen Formaten existieren.