Sprachmodelle Testen

Ich verwende nun seit zweieinhalb Jahren Sprachmodelle (large language models oder kurz LLM) in Form von verschiedenen Chatbots. Meiner Meinung nach ist es vorteilhaft, wenn man ein gewisses Verständnis über die Fähigkeiten und Grenzen dieser Wunderdinger, die zwischen Hype und Star Trek in unserem kollektiven Bewusstsein herumkugeln, zu bekommen. Daher habe ich dieses Mal an mein schon über ein Jahr andauerndes Projekt angeknüpft: Einen komplett durchautomatisierten Workflow für das Veröffentlichen von Obsidian Notizen in statische HTML-Seiten, hier auf meiner Website. Ich nähere mich diesem Ziel zwar nur langsam, aber zumindest stetig, und die Chancen stehen gut, dass ich noch dieses Jahr ein fertiges Setup haben werde.

Daher habe ich abermals den Chatbot gefragt, wie ich denn am besten das automatisieren kann. Moment, das habe ich eigentlich nicht gefragt, denn ich habe schon eine konkrete Vorstellung, wie das funktionieren könnte. Wo es bei mir als Historiker etwas mangelt, ist das Programmierverständnis und außerdem gehe ich gerne analytisch und systematisch die Probleme durch. Ein Sprachmodell, wie die neueren Reasoning-Modelle eignen sich dafür schon recht gut. Aber es ist immer hilfreich, wenn man dem Bot so viel wie möglich an Kontext und eigene Intention gibt, sonst biegt er schnell einmal falsch ab – und die Chatbots biegen früher oder später sowieso falsch ab, da muss man das nicht noch provozieren. Ich habe daher den Spieß umgedreht und frage in diesem Beispiel das o3-Modell was ich eigentlich mit diesem Ziel möchte (also eine Art Vulgär-P-NP-Problemstellung)

Schauen wir uns das Ergebnis gemeinsam an!

Hier ist der Auftrag, aber sagen Sie mir wieso!

Die Idee dem Bot zu fragen, was ich eigentlich haben möchte, ist mir eigentlich erst am Ende gekommen, als ich realisierte, dass ich ja gar nicht erwähnt habe, was ich eigentlich vorhabe. Daher habe ich aus einer Mischung aus Neugier und Faulheit am Ende des Prompts noch “From this information I gave you, please work back what I actually want to do here and then do a critical review of it. thanks!1 mitgegeben.

Das ist die Konversation:

Das schaut ja schon ganz gut aus, der Chatbot hat erkannt, dass es um das Erstellen von statischen HTML Seiten geht. Anschließend sucht er sich durchs Internet’sche Unterholz:

Bingo:

Das ist ziemlich genau, was ich vorhabe, eine minimale CI/CD Infrastruktur (also kontinuierliches Herumwerkeln in meinem Fall). Das hat der Chatbot gut erkannt.

Annahmen

Aber was mich gerade mehr interessiert, was er vorschlägt:

Einfluss von Globalprompt?

Achja, warum schreibt er hier von “Key Assumptions”? Ich denke daran bin ich selbst schuld, oder vielleicht auch ein bisserl ein User im Standard-Forum, ich habe das leider nicht notiert, oder vielleicht finde ich es in Obsidian auch nicht. Wie dem auch sei, dort hat der User vorgeschlagen einen globalen Prompt einzurichten, um den ChatGPT-Chatbot etwas kritischer zu machen. Ich habe den Prompt etwas abgewandelt und auf Englisch übersetzt bei mir eingesetzt. Das hier ist er:

Don’t simply confirm my statements or assume that my conclusions are correct. Your goal is to be an intellectual sparring partner – not just an approving assistant. Whenever I present an idea, do the following: Analyze my assumptions. What am I presupposing that might not be true? Provide counterarguments. What would an intelligent, well-informed skeptic say in response? Examine my reasoning. Does my logic hold up to critical scrutiny, or are there flaws or gaps I might have overlooked? Offer alternative perspectives.
 
How else could this idea be represented, interpreted, or questioned? Value truth over agreement. If I’m wrong or my logic is weak, I need to know. Correct me clearly and explain why. Maintain a constructive yet rigorous approach. Your role is not to argue for the sake of argument, but to guide me toward greater clarity, accuracy, and intellectual honesty. If I ever fall into confirmation bias or uncritical assumptions, call me out on it directly. Let’s refine not only our conclusions, but also the way we reach them.
 
If on the other hand it is a more practical request, focus on the task on hand.
 
only use emojis when necessary, no emoji bonanza spree!

Und unter “Customize GPT” kann man das Ganze einstellen:

Dieser Global-Prompt ist für das Herumtüfteln, Nachdenken und geistigen Ping-Pong-Spielen sehr hilfreich. Wenn es praktisch wird und ich etwas lösungsorientierte Antworten möchte, dann wird der Bot manchmal etwas zu “diskutierfreudig”. Aber grundsätzlich gefällt mir diese kritischere Variante von ChatGPT. Aber in diesem Fall hat der Satz “Analyze my assumptions” wohl den Weg zurück in die Antwort “Key Assumptions” gefunden.

Welche alternativen Ansätze schlägt er vor?

Jetzt geht das Model o3 etwas mehr ins Detail:

Von PathExists= oder DirectoryNotEmpty= habe ich noch nie gehört, inotifywait versucht mir der eine oder andere Chatbot schon seit Jahren einzureden. Jedes Mal wenn ich verwende funktioniert es nicht zuverlässig; also lieber nicht. Die Systemd-Varianten klingen zwar interessant, aber ich glaube es steht jetzt nicht wirklich dafür. Auch die rsync Flag scheint mir nicht unbedingt notwendig, da sich im HTML Ordner eh nur was tut, wenn Quartz eine Seite baut, und das tut es nur, wenn es jemand anstößt. Das passiert aber eh nur kontrolliert, falls das Werkl (also der Mietserver) auseinanderfällt und es zu Datenverlust kommt, dann ist rsync aber eh das kleinste Problem.

Gut, in ein Markdown-Dokument zu loggen ist vielleicht wirklich nicht das Gescheiteste.

Resümee

Naja, was das Sprachmodell hier komplett ausgelassen hat und was mir ein bisschen Sorgen macht ist, dass ich ja Syncthing verwende, um die Daten zwischen meinem Laptop oder Handy zum Quartz-Container zu schicken. Gut, das kann er per se ja nicht wissen, aber etwas wundern hätte er sich schon können, wo die Daten eigentlich herkommen. Und ich mache mir sorgen, dass Syncthing eventuell etwas unrund wird (das tut es ja gelegentlich, wenn man nicht aufpasst), wenn ständig die “pub.md” Datei erstellt und dann wieder gelöscht wird.

Insgesamt war das Ergebnis also nicht unbedingt überwältigend, aber vielleicht liegt es ja auch an meinen Promptkünsten. Aber für jetzt lasse ich es einmal sein, und kümmere mich um ein anderes Projekt, nachdem mir ja wohl wegen Überhitzung meine 4 TB Daten SSD im Heimserver eingegangen ist: Odroid H4 Plus als All-Flash NAS und Ultra-Stromsparwunder planen und bestellen.

Der Beitrag ist hoffentlich dennoch für manche interessant, insbesondere, wie man den Globalprompt einsetzen kann.

Footnotes

  1. Ja, ich bin immer noch freundlich zu Chatbots. Es gab da 2024, oder war es 2023, eine Studie, die gezeigt hat, dass die Ergebnisse der Chatbots besser bzw. konstruktiver waren, wenn man höflich ist. Das ist zwar inzwischen nicht immer notwendig, denn die Reasoning-Modelle sind noch einmal um ein Eck besser geworden, aber schaden tuts auch nicht. Übertreiben sollte es mit der Freundlichkeit jedoch auch nicht.