Das Grok-2-Modell das im August 2024 veröffentlicht wurde, bietet eine Reihe von Verbesserungen und Funktionen, unter anderem ist das Kontextfenster von 131072 Tokens möglich. Also mal in Perplexity das Grok-2-Modell für ein Java Programm-Generierung verwenden. Hier mal das Endergebnis vorweg:
Ich hatte die Idee, mal für jeden Tag, bis zur Rente einen Eintrag in meinen Kalender mit Counter eintragen zu lassen. Also z.B, in der Form „Noch 33 Tage bis zur Rente“. Rausgekommen ist dann ein universelles Programm, das auch für alle anderen Ereignisse verwendet werden kann, also z.B. noch „55 Tage bis zum Urlaub“ usw.
Ganz zum Schluss, gibt es auch das Programm zum kostenlosen Download.
Hier mal alle Schritte bzw. Promps die an die KI gingen.
Vorraussetzung sind ein Gitlab Account, Eclipse IDE, Maven, Java 21 und Perplexity mit Grok-2-Modell
Die Schritte sind jeweils im GitLab Repo als Tags bzw. Commit zu sehen.
Also:
-Ein Projekt in Gitlab anlegen: https://gitlab.com/IT-Berater/twrente
-Eclipse starten
-Projekt clonen und importieren git clone https://gitlab.com/IT-Berater/twrente
-als Maven Projekt setzen
-Java Version 21 setzen
Nun zur 1. KI Anfrage mit Prompt in Perplexity:
1 2 3 4 5 6 7 |
Erstelle ein Java 21 Programm das über eine Swing GUI ein Ziel Datum abfragt. Das Datum soll in der Zukunft liegen. Von diesem Datum aus soll für jeden Tag rückwärts ein Kalender Eintrag pro Tag erstellt werden bis zu aktuellen Tag. Es soll jeweils ein Eintrag im iCalendar Format erstellt werden, und alle Termine bis zum heutigen/aktuellen Tag in einer Datei im *.ics Format gespeichert werden. |
Antwort von der KI ua.:
Funktionsweise
1. Swing-GUI:
• Die GUI enthält ein Textfeld für die Eingabe des Zieldatums und einen Button zum Generieren der Kalenderdatei.
• Das eingegebene Datum wird überprüft, ob es in der Zukunft liegt.
2. ICS-Datei-Erstellung:
• Das Programm erstellt Kalender-Einträge für jeden Tag rückwärts vom Zieldatum bis zum aktuellen Datum.
• Jeder Eintrag wird im iCalendar-Format (VEVENT
) gespeichert.
3. Speichern der Datei:
• Die generierten Termine werden in einer Datei namens calendar.ics
gespeichert.
Dann habe ich das generierte Programm in ein Java Projekt importiert und gestartet. Version 1 nach Gitlab hochladen und Tag v0.0.1 gesetzt (25 Min hat das gedauert).
Kurzer Test, Gui läuft schon mal:
Die nächsten 15 Min habe ich mit Anpassungen verwendet. Der 2. Prompt:
1 2 3 4 |
Ermittle die Gesamtzahl an Tage bis zum Zieldatum und passe jeden Kalendereintrag an mit der Anzahl Tage bis zum Ziel. Der Eintrag soll lauten: „ Noch ? Tage bis zur Rente“ |
Antwort ua.:
Um die Gesamtzahl der Tage bis zum Zieldatum zu berechnen und jeden Kalendereintrag entsprechend anzupassen, können wir das Java-Programm wie folgt erweitern. Die Kalendereinträge enthalten nun den Text “Noch ? Tage bis zur Rente”, wobei ?
durch die verbleibende Anzahl an Tagen ersetzt wird.
Der 3. Prompt:
1 |
Der Conter soll rückwärts laufen |
Antwort Änderungen und Funktionsweise
1. Rückwärtslaufender Countdown:
• Der Countdown startet mit der Gesamtanzahl der Tage (totalDays
) zwischen dem heutigen Datum und dem Zieldatum.
• Für jeden Tag wird daysRemaining
um 1 reduziert.
2. Iterieren vom heutigen Datum:
• Die Schleife beginnt beim aktuellen Datum (today
) und läuft vorwärts bis zum Zieldatum (targetDate
).
3. Anpassung des Kalendereintrags:
• Der SUMMARY
-Text lautet weiterhin: “Noch ? Tage bis zur Rente”.
• Das ?
wird durch den aktuellen Wert von daysRemaining
ersetzt.
Also mit KI in 40 Minuten zum ersten Ergebnis wie gewünscht. Jetzt noch etwas weitere Kosmetik.
4. Prompt:
1 2 3 4 |
Mache noch folgende Anpassung das Eingabeformat soll lauten dd.MM.yyyy und das "Zieldatum auswählen" so ersetzt werden durch "Datum des Renteneintritts" und entferne in der UID die EMail Adresse und ergänze noch einen Button der das Programm beendet. |
Antwort ua.:
1. Eingabeformat: Das Datum wird nun im Format dd.MM.yyyy
eingegeben.
2. Textänderung: Der Titel des Fensters und die Beschriftung des Labels wurden zu “Datum des Renteneintritts” geändert.
3. UID-Anpassung: Die UID enthält keine E-Mail-Adresse mehr, sondern nur das Datum.
4. Beenden-Button: Ein zusätzlicher Button wurde hinzugefügt, um das Programm zu beenden.
Endergebnis:
5. Prompt:Test muss sein:
1 |
Erstelle eine Juni Testklasse für das Programm es ist so okay |
6. Prompt:
1 |
Wie ergänzt man die UID um einen Universally Unique Identifiers und der Domain @wenzlaff.info |
Nach dem Test habe ich festgestellt, das es besser währe, ein ganztägiges Kalenderereignis zu machen. Alo noch ein Fix nach Test:
1 |
Und wie als ganztägiges Ereignis? |
Antwort von der KI ua.:
Um die Termine als ganztägige Ereignisse im Kalender einzutragen, müssen die Felder DTSTART
und DTEND
angepasst werden, sodass sie nur das Datum enthalten, ohne eine Uhrzeit. Im iCalendar-Format wird dies durch das Hinzufügen des Parameters VALUE=DATE
erreicht. Ganztägige Ereignisse beginnen um Mitternacht und enden am Ende des Tages.
So, die Stunde ist nun um, einige Kleinigkeiten wurde auch per Hand noch angepasst, wie rename der Klassen und JUnit Test bzw. Methode auf public gesetzt. Hier das Ergebnis:
Dann noch ein Diagramm generieren lassen:

Nun hatte ich noch die Idee, alles zu generalisiere, so das man das Programm nicht nur für die Rente verwenden kann.
7. Prompt:
1 2 3 |
Passe das Programm so an, dass noch ein weiteres Eingabefeld für das Summary erstellt wird. Default soll "# Tage bis zur Rente" erscheinen. Der Text soll aber frei editierbar sein, so das man jeden String mit # als Counter eingeben kann. |
Dann habe ich noch manuell etwas Refactoring gemacht, GUI von Logik getrennt, pom.xml angepasst und alles nach Maven-Central geladen. So sieht es nun aus:

Hier kann man das Programm laden https://gitlab.com/IT-Berater/twrente/-/tags links auf den Pfeil neben dem Papierkorb dann auf „Artefakt herunterladen“ das Zip auspacken und auf der Konsole starte mit:
java -jar de.wenzlaff.twrente-1.1.1-jar-with-dependencies.jar
und es startet das Programm. Das Ergebnis wird dann in der calendar.ics Datei zu finden sein.
Vorhandene Dateien werden noch überschrieben.
Der Quellcode, kann wie geschrieben hier angeschaut werden.