Wer den ersten Teil verpasst hat, findet ihn hier: Erste Versuche mit ChatGPT – Teil 1. Dort ging es darum, warum eine unklare Aufgabenstellung zu einem scheinbar guten, aber praktisch unbrauchbaren Ergebnis führen kann.
Alle, die den ersten Teil gelesen haben, erwarten wahrscheinlich die Auflösung des Cliffhangers. Gleichzeitig geht es in diesem zweiten Teil genau so schnell los wie beim letzten Mal: Wir haben eine Aufgabe und wollen mit Hilfe von ChatGPT eine Lösung erarbeiten.
Die Ausgangsaufgabe aus Teil 1
Unsere Aufgabe lautete:
„Ein Boilerplate-Markup erzeugen, welches in Editoren verwendet werden kann, welche Markup verstehen. Da wir viel mit verschiedenen Editoren arbeiten, zum Beispiel Jira, Confluence und weitere Tools.“
Im ersten Teil hatten wir bereits einige einfache, aber wichtige Learnings gezogen. Vor allem wurde klar: Die Kohärenz zwischen der eigentlichen Aufgabenstellung und der Frage an ChatGPT ist entscheidend.
Wenn wir also ChatGPT in unseren Prozess zur Lösungsfindung einbeziehen möchten, können wir ihm die Chance geben, unsere Wünsche besser zu verstehen. Oder wir lassen ChatGPT selbstständig einen Vorschlag machen. Oder wir geben ChatGPT einfach direkt die Aufgabenstellung, ohne selbst weiterzudenken. Genau diese Varianten wollen wir uns ansehen.
Der direkte Versuch mit einer klareren Aufgabe
Für die erste Hälfte dieses Artikel-Teils nehmen wir den dritten Ansatz: Wir geben ChatGPT unsere Aufgabenstellung möglichst direkt weiter, ohne groß daran herumzuformulieren oder zusätzliche Annahmen einzubauen.
Unsere Frage lautet:
“I have a task: Create a boilerplate markup, which is usable in editors which understand markup language. For example Jira, Confluence, etc.”
Die Antwort von ChatGPT kommt wie gewohnt sehr schnell:
# Heading 1 ## Heading 2 ### Heading 3 - List item 1 - List item 2 - List item 3 1. Numbered list item 1 2. Numbered list item 2 3. Numbered list item 3 **Bold text** _Italic text_ ~~Strikethrough text~~ [Link text](https://www.example.com) > Blockquote Code block: Code goes here Inline code: `Code goes here` Table: | Column 1 | Column 2 | |----------|----------| | Row 1, Column 1 | Row 1, Column 2 | | Row 2, Column 1 | Row 2, Column 2 |
ChatGPT ergänzt dazu den Hinweis, dass die genaue Syntax je nach Markup-Sprache und Editor variieren kann. Wieder überrascht die Antwort durch Struktur, Übersichtlichkeit und einen umsorgenden Hinweis auf mögliche Unterschiede zwischen Anwendungen.
Gleichzeitig stellen wir fest, dass dieses Markup deutlich ähnlicher aussieht wie das, was wir selbst gewohnt sind. Das Ergebnis aus dem ersten Artikel-Teil wirkte dagegen anders und war deutlich stärker von Confluence-Legacy-Syntax geprägt.
In welchen Anwendungen funktioniert das Markup?
Probieren wir es schnell aus. Auf den ersten Blick lässt sich dieses Markup in mehreren Umgebungen verwenden:
- IDEs, zum Beispiel IntelliJ oder PHPStorm
- verschiedene Notepad-Programme
- GitLab- oder GitHub-README.md-Dateien
- Atlassian Confluence und Jira
- weitere Editoren, die Markdown oder ähnliche Markup-Konventionen verstehen
Moment – was?
So reagieren wahrscheinlich viele, die den ersten Teil gelesen haben. Denn dort war das Problem genau, dass unser erzeugtes Markup in Confluence und Jira nicht wie gewünscht funktioniert hatte.
Warum der zweite Versuch besser funktionierte
Wenn wir uns an die Learnings aus dem ersten Teil erinnern, wird klar: Dieses Mal war die Kohärenz zwischen Aufgabe und Frage deutlich besser.
Im ersten Teil fragten wir nach einem Confluence-Atlassian-Layout, das als Markup in Jira importiert werden sollte. Diese Frage vermischte mehrere Kontexte: Confluence, Jira, Atlassian, Layout und Markup.
Im zweiten Versuch fragten wir viel allgemeiner und klarer nach einem Boilerplate-Markup für Editoren, die Markup verstehen. Dadurch war das Ergebnis weniger stark auf eine bestimmte Anwendung oder eine alte Syntax eingegrenzt.
Fast schon zu simpel scheint es, die Aufgabenstellung einfach klar weiterzugeben. Aber genau das hat in diesem Fall funktioniert – und wäre vermutlich auch in vielen anderen Szenarien mit kurzer Frage und gewünschtem kurzem Ergebnis der geschicktere Weg.
Die Auflösung des Cliffhangers: Confluence und Legacy Markup
Jetzt kommt die Auflösung des Cliffhangers aus dem ersten Artikel-Teil.
Confluence hatte früher einen Legacy Editor, in dem Markup über ein Makro eingefügt werden konnte. Dieser Editor hatte teilweise eine eigene Syntax für bestimmte Markup-Angaben, die nicht vollständig den üblichen Konventionen entsprach.
Aufgrund unserer unüberlegten Fragestellung im ersten Teil – zur Erinnerung: “Can you provide a simple Confluence Atlassian page layout, which I can use as markup to import into Jira?” – hatte ChatGPT versucht, diese Chaos-Frage möglichst passend zu beantworten.
Das Ergebnis war ein Markup-Boilerplate, das stark von dieser Confluence-Legacy-Syntax beeinflusst war. Dieses Ergebnis dann per Copy & Paste irgendwo als allgemeines Markup-Boilerplate wiederzuverwenden, war zum Scheitern verurteilt.
Der Grund, warum Confluence in seinem neuen Editor kein Markup mehr über ein Makro einfügen muss, liegt unter anderem darin, dass Atlassian stärker auf gängige Markup-Konventionen setzt. Wenn ein Text in der Zwischenablage diesen Konventionen folgt, wird er beim Einfügen direkt interpretiert. Ein gesondertes Makro ist dafür nicht mehr zwingend erforderlich.
Warum ein generisches Boilerplate noch nicht genug ist
So, und nun? Sind wir jetzt da, wo wir hinwollten? Aufgabe erledigt, Markup-Boilerplate funktioniert, und wir können es überall wiederverwenden?
Nicht wirklich.
Unser Boilerplate ist zwar korrekt, aber sehr allgemein. Es entspricht im Grunde dem, was man in vielen Markdown-Anleitungen, Editor-Hilfen oder README-Beispielen findet. Das ist nicht falsch. ChatGPT leistet als trainiertes Sprachmodell Erstaunliches. Aber für unseren Unternehmensalltag ist ein rein generisches Beispiel noch nicht der maximale Nutzen.
Wir wollen den Kosten-Nutzen-Faktor erhöhen. Deshalb versuchen wir in der zweiten Hälfte dieses Artikel-Teils, ein Boilerplate mit ChatGPT zu erzeugen, das sich für unsere konkreten Zwecke direkter wiederverwenden lässt.
Mehr Kontext für einen besseren Unternehmensnutzen
Was bei uns immer wieder vorkommt, sind Reports und Zusammenfassungen. Das können Meeting-Protokolle sein, Zusammenfassungen von Code-Erzeugnissen wie Modulen oder Plugins, README-Dateien für Projekte oder strukturierte Aufgabenstellungen für Entwicklung, Marketing, Product Owner oder Stakeholder.
Um dies zu erreichen, geben wir ChatGPT zuerst einige Informationen über unser Unternehmen und unsere Anforderungen. So kann das Modell diesen Kontext innerhalb der Konversation berücksichtigen.
Unsere Anfrage lautet:
“Hi ChatGPT. Our company is a software development company which is specialized in e-commerce topics. We develop websites, onlineshops, connectors to third-party-systems, modules, plugins, extensions and can accompany our customers in the complete journey also before and after the pure development, for example the analysis, planning and monetarisation over several marketing campaigns. We work with Tools like Jira, Confluence, GitLab, IntelliJ Platform IDE, Microsoft Office, LAMP-Stacks, E-Mails, etc.”
ChatGPT antwortet sehr eloquent und stellt sogar eine Rückfrage:
“Hello! It sounds like your company offers comprehensive software development services for e-commerce businesses. Your expertise in tools such as Jira, Confluence, GitLab, and the LAMP stack, as well as your ability to provide support before and after development, is a valuable asset for your customers. Do you have a particular niche in the e-commerce industry or do you serve a wide range of businesses?”
Das ist interessant. ChatGPT reagiert nicht nur auf die Informationen, sondern versucht, den Kontext weiter zu schärfen. Genau hier beginnt eine Konversation, die spätere Ergebnisse beeinflusst.
ChatGPT fragt nach Spezialisierung
Wir antworten:
“We serve a wide range of businesses.”
Darauf reagiert ChatGPT erneut mit einer Rückfrage beziehungsweise Einordnung:
“That's great! Having a broad focus allows you to work with a variety of customers and projects, which can lead to a diverse portfolio and new opportunities. To stand out in a competitive market, it's important to differentiate yourself and highlight the unique value that your company brings to the table. Have you considered specializing in a particular technology or e-commerce platform to further distinguish your company and establish yourselves as experts in a specific area?”
Noch eine Rückfrage. Also antworten wir weiter:
“We are highly trained in OXID eShop, Shopware and Xentral systems.”
ChatGPT antwortet:
“That's great to hear! Specializing in specific e-commerce platforms such as OXID eShop, Shopware, and Xentral can be a valuable differentiator for your company, as it demonstrates your expertise and knowledge in those platforms. It can also make it easier for you to attract clients who are looking for a development partner who is familiar with their platform of choice.”
Bei so einem Konversationsverlauf fragt man sich fast, ob man jemals noch einen Motivator oder Berater braucht. ChatGPT weist ordentlich darauf hin, dass Spezialisierung vor Breite kommen kann. Interessant. Aber nun zurück zu unserem eigentlichen Ziel.
Der erste kontextbasierte Boilerplate-Vorschlag
Wir fragen:
“If you take into account, what you know about our business, please create a boilerplate markup, which is usable in editors which understand markup language (for example Jira, Confluence, etc.), which makes it easier for us to create summaries for various meetings, topics, tickets, modules, README-files, occasions, etc. which might come up in our daily work.”
Man beachte, dass wir bewusst den Passus wiederverwenden, der uns bereits zum Erfolg geführt hat: “create a boilerplate markup, which is usable in editors which understand markup language”.
ChatGPT antwortet:
h2. Company Name Our company is a software development company specializing in e-commerce solutions. We offer comprehensive services including website development, online shop development, connectors to third-party systems, modules, plugins, extensions, and support before and during development. Our expertise in tools such as Jira, Confluence, GitLab, and the LAMP stack, as well as our specialized knowledge in OXID eShop, Shopware, and Xentral systems, allows us to deliver top-quality solutions to our clients. h3. Our Services - Website Development - Online Shop Development - Connectors to Third-Party Systems - Modules, Plugins, and Extensions - Pre- and Post-Development Support h3. Technologies - Jira - Confluence - GitLab - IntelliJ Platform IDE - Microsoft Office - LAMP Stack - E-Mails - OXID eShop - Shopware - Xentral h3. Contact Us For more information on our services and how we can help you with your e-commerce needs, please contact us at [contact information].
Hmm. Irgendwie erinnert uns dies an die Form Markup, die wir nicht haben wollen. Außerdem hat ChatGPT die Informationen, die wir ihm gegeben haben, ziemlich direkt wiederverwendet.
Der Aspekt eines Markup-Templates, das wir für Protokolle, Zusammenfassungen oder Dokumentationsaufgaben verwenden wollen, scheint noch nicht richtig angekommen zu sein. Trotzdem bauen wir auf der bisherigen Konversation auf.
Iteration: Das Ziel genauer nachschärfen
Wir schreiben:
“Please forget your last response and try to answer the last request with more focus of a boilerplate markup which we can use to protocol said occasions.”
ChatGPT antwortet:
h3. Meeting Summary Date: [insert date] Attendees: [insert names and roles of attendees] Agenda: - [insert agenda items] Discussion Points: - [insert discussion points, including any decisions made and action items assigned] Action Items: - [insert action items and assignees] h3. Ticket Summary Ticket Number: [insert ticket number] Type: [insert ticket type, such as bug report, feature request, etc.] Status: [insert ticket status, such as open, in progress, resolved, etc.] Assignee: [insert name of assignee] Description: [insert ticket description, including steps to reproduce the issue, expected behavior, and actual behavior] Resolution: [insert resolution and any relevant details, including steps taken to resolve the issue and any follow-up actions] h3. Module Summary Module Name: [insert module name] Description: [insert module description, including its purpose, features, and any relevant details] Dependencies: [insert any dependencies, such as required libraries or other modules] Installation Instructions: [insert step-by-step instructions for installing the module] Usage Instructions: [insert instructions for using the module, including any relevant details and examples] h3. README Summary Project Name: [insert project name] Description: [insert project description, including its purpose, features, and any relevant details] Installation Instructions: [insert step-by-step instructions for installing the project] Usage Instructions: [insert instructions for using the project, including any relevant details and examples] Dependencies: [insert any dependencies, such as required libraries or other modules] Contacts: [insert contact information for project maintainers, such as email addresses or GitHub profiles]
Na sieh einer an. Das sieht inhaltlich schon eher so aus, wie das, was wir uns vorgestellt haben.
Was wir jetzt haben, sind typische Aspekte, die in Unternehmen und ihrer Dokumentation nach vielen praktischen Iterationen ihren Weg in ein standardisiertes Protokoll finden. ChatGPT hatte für sein Training Zugriff auf viele solcher Kontexte und schafft es hier, ordentlich zusammenzufassen und einen brauchbaren Vorschlag zu erzeugen.
Inhaltlich passt es besser. Aber die Markup-Syntax entspricht noch nicht dem Format, das wir eigentlich verwenden möchten.
Syntax und Inhalt getrennt betrachten
Unser nächster Refining-Versuch lautet:
“That is a great proposal. Thanks! The content seems to fit what we need exactly. But we need it in another markup syntax. Can I provide you an example, in what kind of syntax we need it and you refine your proposal with this kind of syntax? Try to keep the content the same or at least similar.”
ChatGPT antwortet:
“Of course! Please provide the example of the markup syntax you need and I will revise my proposal accordingly.”
Was wäre besser als Beispiel als das von ChatGPT zuvor erzeugte Boilerplate vom Anfang dieses zweiten Artikel-Teils? Wir geben also die gewünschte Syntax mit:
# Heading 1 ## Heading 2 ### Heading 3 - List item 1 - List item 2 - List item 3 1. Numbered list item 1 2. Numbered list item 2 3. Numbered list item 3 **Bold text** _Italic text_ ~~Strikethrough text~~ [Link text](https://www.example.com) > Blockquote Code block: ``` Code goes here ``` Inline code: `Code goes here` Table: | Column 1 | Column 2 | |----------|----------| | Row 1, Column 1 | Row 1, Column 2 | | Row 2, Column 1 | Row 2, Column 2 |
Das brauchbare Ergebnis nach mehreren Iterationen
Dieses Mal kommt von ChatGPT eine überarbeitete Version, die sowohl inhaltlich als auch formal deutlich besser passt:
## Meeting Summary Date: [insert date] Attendees: [insert names and roles of attendees] ### Agenda - [insert agenda items] ### Discussion Points - [insert discussion points, including any decisions made and action items assigned] ### Action Items - [insert action items and assignees] ## Ticket Summary Ticket Number: [insert ticket number] Type: [insert ticket type, such as bug report, feature request, etc.] Status: [insert ticket status, such as open, in progress, resolved, etc.] Assignee: [insert name of assignee] ### Description [insert ticket description, including steps to reproduce the issue, expected behavior, and actual behavior] ### Resolution [insert resolution and any relevant details, including steps taken to resolve the issue and any follow-up actions] ## Module Summary Module Name: [insert module name] ### Description [insert module description, including its purpose, features, and any relevant details] ### Dependencies [insert any dependencies, such as required libraries or other modules] ### Installation Instructions [insert step-by-step instructions for installing the module] ### Usage Instructions [insert instructions for using the module, including any relevant details and examples] ## README Summary Project Name: [insert project name] ### Description [insert project description, including its purpose, features, and any relevant details] ### Installation Instructions [insert step-by-step instructions for installing the project] ### Usage Instructions [insert instructions for using the project, including any relevant details and examples] ### Dependencies [insert any dependencies, such as required libraries or other modules] ### Contacts [insert contact information for project maintainers, such as email addresses or GitHub profiles]
An dieser Stelle könnte man sagen: Mission accomplished. Wir sind im Grunde bei unserem Ziel angekommen.
Natürlich könnten wir nun weitere Runden drehen und versuchen, das Ergebnis immer weiter zu schärfen. Aber wir merken auch: Jede Iteration, jede Ergänzung und jede Korrektur innerhalb der Konversation beeinflusst das Ergebnis – sowohl gewollt als auch ungewollt.
Learning: Kontext formt jedes Ergebnis
Unser Learning an dieser Stelle lautet:
Der gemeinsam aufgebaute Kontext einer Konversation mit ChatGPT formt und bestimmt den Ausgang aller Ergebnisse, die ChatGPT innerhalb dieser Konversation liefert.
Diesen Konversations-Kontext bewusst mitzusteuern, kann deshalb ein gutes Werkzeug sein. Dazu gehört, klare Anweisungen zu geben, bestimmte Teile der Konversation nicht weiter zu berücksichtigen, oder eine Aufgabe bewusst in kleinere Einheiten aufzuteilen.
Salopp gesagt: Je menschlicher und unüberlegter wir eine Konversation vertiefen, desto schwieriger kann es werden, das Ziel zu erreichen. Genau hier drohen im Unternehmenskontext Stolperfallen. Man beginnt mit einer Aufgabe, ergänzt immer neue Details, korrigiert zwischendurch, verlagert das Ziel – und wundert sich am Ende, warum ChatGPT nicht mehr genau das liefert, was man eigentlich wollte.
Gleichzeitig gibt es in vielen Unternehmen bereits gewachsene Vorlagen, Abläufe und Erfahrungswissen. Mitarbeitende schreiben Protokolle, Tickets, README-Dateien oder Zusammenfassungen oft aus dem Effeff. Aber was passiert, wenn diese Personen nicht verfügbar sind, das Wiki nicht gepflegt ist oder eine Vorlage schnell vereinheitlicht werden soll?
In solchen Fällen kann ChatGPT helfen, vorhandene Beispiele zu analysieren, zu vereinheitlichen und daraus nutzbare Vorlagen zu erzeugen – vorausgesetzt, Kontext, Ziel und Format werden sauber geführt.
Fazit: Bessere KI-Ergebnisse durch Kontext und Iteration
Im zweiten Teil unserer ChatGPT-Versuche wurde deutlich: Eine präzisere Aufgabenstellung führt zu besseren Ergebnissen. Noch stärker wird der Effekt, wenn ChatGPT Schritt für Schritt relevanten Kontext erhält und die Ergebnisse gezielt nachgeschärft werden.
Gleichzeitig zeigt dieser Versuch aber auch die Gefahr: Je länger eine Konversation wird, desto wichtiger ist es, den Kontext bewusst zu steuern. Frühere Antworten, unklare Informationen oder unnötige Details können spätere Ergebnisse beeinflussen.
Für Unternehmen bedeutet das: ChatGPT ist nicht nur ein Werkzeug für einzelne Antworten. Es ist ein Werkzeug für iterative Arbeitsprozesse. Wer es sinnvoll nutzen möchte, sollte Aufgabenstellung, Kontext, Format und Ziel bewusst steuern.
Mehr zum Zusammenspiel von KI, digitalen Prozessen und Arbeitsabläufen findest Du im Bereich Business & Prozesse.
