Script-Time: KI für Neujahresgrüße
Es gibt ja immer Leute, mit denen man gerne den Kontakt aufrecht erhalten möchte, aber irgendwie findet man zu selten zusammen.
Vorstufe
Früher habe ich jedes Jahr eine Textkonserve an alle Bekannte verschickt. Diese musste ich aber, bevor das Jahr zuende ging, immer wieder neu verfassen. Schließlich sollte ja nicht immer der gleiche Gruß im Messenger erscheinen.
KI soll helfen
Nachdem ich bereits einiges in Zusammenhang mit Signal und KI gebastelt habe, wird auch dies wieder ein interessantes Projekt.
Ich habe daher eine Liste meiner Bekannten in ein Shellscript auf meinem Server hinterlegt. Zunächst die Telefonnummer, dann der Nickname und für mich in Klammern ein Hinweis, wer bei gleichen Vornamen wirklich gemeint ist.
Mit einem brauchbaren Prompt werden dann für jeden individuelle Chatnachrichten erstellt: Erstelle freundliche, aufheiternde Neujahresgrüße in maximal 100 Zeichen an $name für das Jahr $(date +%Y). Biete keine Alternativformulierungen oder sonstige Zusätze und stelle keine Gemeinsamkeiten oder Verpflichtungen her.
Auf keinen Fall darf die KI Verpflichtungen ankündigen, wie "Lass uns nächste Woche mal einen trinken gehen...". Bei alten Kollegen, die inzwischen in Canada arbeiten, wäre dies schnell endtarnt. Ich käme bestimmt nicht schnell auf ein Bier vorbei 🤣.
Die daraus entstandene Nachricht wird schließlich per Signal an den entsprechenden Kontakt geschickt.
Das Script
Und so sieht es nun aus:
#!/bin/bash
# Definiere das Modell und die Anzahl der Threads für die KI-Anfrage
AI_SMALL=michael:latest # Name des verwendeten KI-Modells
AI_THREADS=16 # Anzahl der Threads für die gleichzeitige Verarbeitung
# Liste der Kontakte mit Telefonnummern und Namen, die später für die Neujahresgrüße verwendet werden
echo "+4915123456789 Max (Max Imilian)
+4915901234567 Anna (Anna Lyse)
+4915201122334 Tom (Tom Ate)
+4915112233445 Paul (Paul Ahner)
+4915239876543 Peter (Peter Silie)
+34612345678 Mia (Mia Miga)
+4915932109876 Max (Max Imilian)
+4916012345678 Hei (Hei Zung)
+4915223344556 Theo (The Odor)
+4916185577442 Doc (Dr. Akula)
+4915123456790 Alex (Alexander Platz)
+4915209988776 Andreas (Andreas Kreuz)
+4915114455667 Harry (Harry Bo)
+4915231122337 Ann (Ann Geber)
+4915938765432 Heide (Heide Witzka)
+4916012348765 Ann (Ann Zug)
+4916189977553 Anna (Anna Bolika)
+4915236677884 Anna (Anna Nass)
+4915236534382 Anti (Anti Pasti)" |
# Lies jede Zeile der Kontaktliste ein und bearbeite sie einzeln
while read contact
do
# Extrahiere die Telefonnummer (erste Spalte) und den Namen (zweite Spalte)
number=$( echo $contact | cut -f 1 -d " " ) # Extrahiere Telefonnummer
name=$( echo $contact | sed 's/^[^ ]* //;s/ (.*//' ) # Extrahiere Nicknames
# Erstelle den Prompt für die KI mit dem aktuellen Namen und Jahr
FRAGE="Erstelle freundliche, aufheiternde Neujahresgrüße in maximal 100 Zeichen an $name für das Jahr $(date +%Y). Biete keine Alternativformulierungen oder sonstige Zusätze und stelle keine Gemeinsamkeiten oder Verpflichtungen her."
# Sende die Anfrage an die KI und empfange die Antwort
curl http://ai:11434/api/generate -d "{
\"num_thread\": \"${AI_THREADS}\",
\"model\": \"${AI_SMALL}\",
\"prompt\": \"${FRAGE}\",
\"stream\": false
}" 2>/dev/null |
# Extrahiere die Antwort aus der JSON-Antwort und entferne leere Zeilen
jq -r .response |
sed '/^$/d' |
# Sende die generierten Neujahresgrüße per Signal an die angegebene Telefonnummer
signal-cli -u +491597654321 send --message-from-stdin $number
done
Ein Testlauf, ohne die Nachricht zu verschicken, liefert folgende Zeilen:
Frohes neues Jahr, Max! 🎉 🥂 Lass es ein super Jahr werden! 😉
Liebe Anna, frohes neues Jahr! Ich wünsche dir viel Freude & Glück im neuen Jahr! 😊
Frohes neues Jahr, Tom! Ich wünsche dir viel Glück & Erfolg im neuen Jahr. 🥂
Lieber Paul, frohes neues Jahr 2024! 🎉 Möge es ein wundervolles Jahr werden!
Frohes neues Jahr, Peter! 🎉 🥂 Hoffentlich bringt auch Dir der Start in 2024 viel Freude und Glück mit sich.
Happy New Year, Mia! 🎉 Möge 2024 voller Glück und Erfolg sein! 🍾
...
Wenn vielleicht eine Gruppe alter Freunde irgendwo zusammen feiert, und sie bekommen alle eine Nachricht von mir, halten diese einem möglichen Vergleich stand und wirken individuell verfasst.
Und wenn man es noch liebevoller und herzlicher haben möchte, kann man den Prompt entsprechend anpassen. Hier geht es mir aber vorrangig um alte Geschäftsbeziehungen mit tollen Leuten, die ich dabei kennenlernen durfte.
Autostart
Um 0:00 am 1.1. jedes Jahres soll das Script automatisch gestartet werden. Das geht am einfachsten per Cronjob:
0 0 1 1 * root nice -n 19 /opt/check_newyeargreetings > /dev/null 2>&1
Fazit
Persönlich ist anders. Das sehe ich auch so.
Natürlich wäre es schöner, wenn ich die Nachricht wirklich selbst schicken würde. Aber ich bin kein Partytyp. Ich genieße lieber ein Glas Wein in Ruhe. Vielleicht sind ein paar gleichgesinnte zu Besuch. Aber auch dann möchte ich nicht hektisch das Telefon zücken und über 60 Leuten einen Gruß schicken.
So kann ich entspannt auf das neue Jahr anstoßen.
Prost.