Hallo.

Fragen? Ein erstes Kennenlernen? Vielleicht hast Du schon konkrete Pläne? Du kannst Dich jederzeit unverbindlich an uns wenden!

Telefon: 0761 - 76 99 34 20
Email: info@maexware-solutions.de

über Kontaktformular:

Mit Absenden des Kontaktformulars erklärst Du Dich damit einverstanden, dass Deine Daten zur Bearbeitung Deines Anliegens verwendet werden. Weitere Informationen kannst Du der Datenschutzerklärung entnehmen.

Erste Versuche mit ChatGPT - Teil 2

Erste Versuche mit ChatGPT - Teil 2

- Monib Asad Masud

Ok. Wer den ersten Part verpasst hat, hier entlang. Alle, die den ersten Teil gelesen haben, erwarten wohl auch eine Auflösung eines Cliffhangers. Ansonsten geht es genau so schnell los wie beim letzten Mal. Wir haben eine Aufgabe und wir wollen die Lösung erarbeiten, mit Hilfe von ChatGPT.

Aufgabe:

“Ein Boilerplate-Markup erzeugen, welches in Editoren verwendet werden kann, welche Markup verstehen. Da wir viel mit verschiedenen Editoren arbeiten, z.B. Jira, Confluence, etc..”

Wir hatten ein paar simple und für viele vielleicht instinktiv logische Learnings aus dem ersten Teil gezogen. Wenn wir also unsere Aufgabenstellung betrachten und nun ChatGPT in unseren Prozess, eine Lösung zu finden, einbeziehen möchten, dann geben wir doch ChatGPT die Chance …

  • … unsere Wünsche besser zu verstehen.
  • … und lassen wir ChatGPT selbstständig einen Vorschlag bringen
  • … und geben wir ChatGPT einfach direkt unsere Aufgabenstellung, die wir bekommen haben, ohne selber “weiter und mitzudenken”. Wir stellen entsprechend drei Fragen und schauen jeweils, wie ChatGPT darauf reagiert.

Für die erste Hälfte dieses Artikel-Teils nehmen wir den dritten Punkt, wo wir einfach unsere Aufgabenstellung weitergeben ohne groß selber etwas daran zu verändern oder “mitzudenken”:

“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, wie immer sehr zackig:

“Here is a boilerplate markup that you can use in editors that support markup language:

# 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 |

Note that the exact syntax may vary depending on the specific markup language that your editor supports.” Und wieder überrascht ChatGPT mit der Fähigkeit seinen Antworten Struktur und Übersichtlichkeit zu geben. Wieder ein umsorgender Hinweis, dass je nach Anwendung das Markup anders in Syntax sein kann oder anders interpretiert wird.

Wir stellen auch fest, dass dieses Markup viel ähnlicher aussieht, wie dass, was wir selber gewohnt sind - das aus dem ersten Artikel-Teil wirkte “anders”.

In welchen Anwendungen können wir das jetzt, so, out-off-the-box verwenden? Probieren wir es schnell einmal aus. Das Ergebnis auf die Schnelle:

  • IDEs, z.B. IntellJ/PHPStorm
  • Diverse Notepad Programme
  • GitLab/GutHub Readme.md Dateien
  • Atlassian Confluence, Jira
  • etc.

… Moment, was?

So reagieren vermutlich alle oder viele, die den ersten Artikel-Teil gelesen haben. Denn unser Markup, was wir bei unserer Frage dieses Mal erhalten haben funktioniert wunderbar auch in Confluence und Jira von Atlassian, war doch der ganze erste Artikel-Teil davon geprägt, dass unser Ergebnis unserer einleitenden Fragestellung des ersten Artikel-Teils so überhaupt nicht funktioniert hat und wir nicht in der Lage waren unser ChatGPT Antwort-Boilerplate einzufügen/wiederzuverwenden.

Erinnern wir uns an die Learnings aus dem ersten Teil und darauf, dass die Kohärenz zwischen unserer Fragestellung und unserer Aufgabe sehr wichtig ist, können wir bei unserer Frage an ChatGPT in diesem zweiten Artikel-Teil feststellen:

Unsere Kohärenz war dieses Mal nahezu optimal. Fast schon zu simpel scheint es, einfach die Aufgabenstellung zu nehmen und 1:1 weiterzugeben, doch in diesem Fall hat das wunderbar funktioniert und wäre wohl auch in vielen anderen Szenarien - einer kurzen Frage zu einem kurzen Ergebnis - schlicht das “Geschickteste”.

Außerdem kommt jetzt die Auflösung des Cliffhangers aus dem ersten Artikel-Teil:

Confluence hatte früher einen Legacy Editor, welcher Markups per Makro einfügen konnte. Dieser hatte mitunter auch seine eigene Syntax für bestimmte Markup-Angaben, die nicht der üblichen Konvention entsprachen.

Aufgrund unserer unüberlegten Fragestellung im ersten Artikel-Teil - zur Erinnerung, diese lautete “Can you provide a simple Confluence Atlassian page layout, which i can use as markup to import into Jira?” hatte ChatGPT alles getan unsere “Chaos-Frage” richtig zu beantworten und erzeugte ein Markup-Boilerplate, das stark durchzogen war mit Referenzen/Wiederverwendung dieser Legacy-Syntax vom Confluence Legacy Editor. Dieses Erzeugnis dann mit Copy/Paste irgendwo als generelles Markup-Boilerplate wiederzuverwenden war und wäre weiterhin zum Scheitern verurteilt.

Zudem ist der Grund, warum Confluence in seinem neuen Editor kein Markup mehr über Makros einfügen kann der, dass Atlassian für seine Produkte die im Internet herrschende Konvention von Markup besser umgesetzt hat, und wenn ein Text in der Zwischenablage dieser Konvention folgt, wird direkt beim “Paste”-Vorgang das Markup interpretiert. Es benötigt kein Makro mehr. Atlassian sieht zwar eine Wiedereinführung eines gesonderten Markos vor, dies aber aus anderen Gründen bzw. für andere Features.

So und nun? Sind wir doch da, wo wir sein wollten, oder? Aufgabe erledigt, unser Markup-Boilerplate funktioniert und können wir nun überall wiederverwenden. Wir müssen nie wieder nachschauen, wie Markup funktioniert, und wenn was nicht in unserem Boilerplate drin ist, fragen wir einfach ChatGPT möglichst kohärent. (Achtung, ein wenig Sarkasmus).

Nun ja, nicht wirklich. Unser Boilerplate ist das, was man in jedem Convention-Paper, Webseite, Wiki oder Editor-Hilfe-Seiten findet, was sich modern schimpfen darf im Jahre 2023.

Nicht falsch verstehen. ChatGPT leistet als trainiertes Sprachmodell erstaunliches. Unqualifiziert könnte man sogar direkt behaupten, dass alle für das Training sprichwörtlich aufgewendete Energie (kW/h oder wohl besser mW/h) sich gelohnt haben.

Versuchen wir nun in der zweiten Hälfte dieses Artikel-Teils, den Kosten-Nutzen-Faktor für uns und unser Unternehmen zu erhöhen, in dem wir ein Markup-Boilerplate mit Hilfe von ChatGPT erzeugen, was sich für unsere konkreten Zwecke etwas direkter wiederverwenden lässt - und sich vielleicht nach so etwas wie ein Mini-ROI (return of invest) anfühlt. Dieses Mal lassen wir Chat-GPT die Chance uns vorher besser zu verstehen.

Was immer wieder kehrt sind Reports und Zusammenfassung. Seien es für Meetings, Code-Erzeugnisse (Module, Plugins, etc.), Readme-Dateien für gesamte Projekte oder gar Zusammenfassungen von Aufgabenstellungen an Entwickler, Marketing, Product-Owner, Stakeholder usw. usf..

Um dies zu erreichen, versuchen wir ChatGPT erst ein paar Informationen über unser Unternehmen und unsere Anforderungen zu geben, damit es dies im Kontext unserer Konversation vielleicht berücksichtigen kann.

Unsere Anfrage an ChatGPT lautet wir folgt:

“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 yourney also before and after the pure development, for example the anylysation, planning und monetarisation over several marketing campaigns. We work with Tools like Jira, Confluence, GitLab, IntellJ Platform IDE (for example PHPStorm), Microsoft Office, LAMP-Stacks (Linux, Apache, MySQL, PHP), E-Mails, etc..”

Und direkt antwortet ChatGPT, sehr eloquent, sofern man dieses Adjektiv bei einem trainierten Sprachmodell verwenden darf 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?”

Ha! Da bekommt man gleich den Eindruck als sei ChatGPT offen für das nächste lukrative Geschäfts-Angebot. Es stellt sogar eine Rückfrage! Schauen wir mal, wie weit wir mit dieser geschaffenen Grundlage nun kommen und antworten.

Unsere Antwort:

“We serve a wide range of businesses.”

Und es kommt zurück:

“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, wow, also antworten wir weiter:

“We are highly trained in OXID eShop, Shopware and Xentral systems.”

ChatGPT:

“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. It's important to stay up-to-date with the latest developments and advancements in the e-commerce industry, as well as the platforms you specialize in, to remain competitive and deliver the best possible solutions to your customers.”

Bei so einem Koversations-Verlauf fragt man sich, ob man jemals noch einen Motivator oder Berater braucht. Man fragt einfach ChatGPT, das weist einen dann ordentlich daraufhin, dass Spezialisierung vor Breite kommt. Interessant. Aber nun zu unserem Ziel.

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, der uns schoneinmal zum Erfolg geführt hat, so weit möglich wiederverwendet haben (… “create a boilerplate markup, which is usable in editors which understand markup language …”).

ChatGPT:

“Sure, here's a sample boilerplate markup that you can use:

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
- IntellJ Platform IDE (e.g. PHPStorm)
- Microsoft Office
- LAMP Stack (Linux, Apache, MySQL, PHP)
- 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].

This boilerplate markup provides a basic outline of your company, your services, and the technologies you work with. You can customize and expand on this information as needed to fit your specific use case. The format is easily readable in editors that support markup language and can be used as a starting point for various documents, such as summaries for meetings, tickets, modules, and README files.”

Hmm. Nun. Irgendwie erinnert uns dies an die Form Markup, die wir nicht haben wollen. Und außerdem hat ChatGPT die Informationen, die wir ihm gaben, ziemlich direkt wiederverwendet. Der Aspekt eines Markup-Templates, was wir verwenden wollen, um solche Doings zu protokollieren scheint nicht “rüber” gekommen zu sein. Wir versuchen auf der bisherigen Konversation trotzdem aufzubauen - schließlich trauen wir ChatGPT eine Menge zu.

Also schreiben wir:

“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.”

Und ChatGPT, sehr flott:

“Certainly, here's a revised boilerplate markup specifically designed for documenting various meetings, topics, tickets, modules, README files, etc.:

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 (if applicable), 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]

This boilerplate markup provides a structured format for documenting various types of information, such as meeting summaries, ticket details, module descriptions, and README information. You can customize and expand on this information as needed to fit your specific use case.”

Na sieh einer an. Das sieht inhaltlich schon eher so aus, wie das, was wir uns vorstellten. Was wir hier jetzt inhaltlich haben sind Aspekte, die in Unternehmen und ihrer Dokumentation eher nach vielen praktischen Iterationen von Projekten ihren Weg in ein stadardtisiertes Protokoll finden. ChatGPT hatte für sein Training Zugriff auf wohl millionen solcher Kontexte und schafft es hier ordentlich zusammenzufassen und einen ebenso ordentlichen Vorschlag zu erzeugen.

Versuchen wir noch ein wenig zu refinen, der Inhalt passt, aber das Markup ist doch nicht so wie wir uns das wünschen.

Hinweis: Wir lassen bewusst außer acht zu analysieren, welche Querverweise zu dieser Syntax führten. Das kann alleine an der Erwähnung von Wiki oder Microsoft Office unsererseits liegen oder schlicht daran, dass wir in dieser Konversation auch Jira, Confluence, etc. erwähnt hatten.

Unser Refining-Versuch:

“That is a greate 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, will also wissen:

“Of course! Please provide the example of the markup syntax you need and I will revise my proposal accordingly.”

Und was wäre besser als geliefertes Beispiel, als das von ChatGPT zuvor erzeugte Boilerplate aus dem Anfang dieses zweiten Artikel-Teils. Wir schreiben also:

“The example of the markup syntax:

# 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 |

Und es kommt zurück von ChatGPT, dieses mal, so bilden wir uns ein, mit einer Bedenk- und Bearbeitungszeit von mehreren Sekunden (wir haben das Gefühl wir können zugucken, während ChatGPT “denkt”):

“Certainly, here's a revised boilerplate markup using the syntax you provided:

## 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 (if applicable), 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]

This revised boilerplate markup uses the syntax you provided, including headings, lists, emphasis styles, links, blockquotes, code blocks, tables, etc. You can customize and expand on this information as needed to fit your specific use case.”

An dieser Stelle könnte man ersteinmal sagen, “Mission accomplished”. Wir sind im Grunde bei unserem Ziel angekommen. Natürlich können wir in diesem Prinzip nun extra Runden drehen und versuchen das Ergebnis immer weiter zu schärfen. Aber wir merken auch, dass jede Iteration/Rotation/Hinzufügung in der Konversation das gesamte Ergebnis einer jeden Rückmeldung beeinflusst - sowohl gewollt, als auch ungewollt.

Unser Learning an dieser Stelle unserer Artikel:

Der gemeinsam aufgebaute Kontext einer Konversation mit ChatGPT formt und bestimmt den Ausgang aller Ergebnisse die ChatGPT liefert, innerhalb ebendieser Konversation.

Diesen Konversations-Kontext bewusst mitzusteuern, in dem man möglichst klare Anweisungen an ChatGPT liefert, bestimmte Teile der Konversation nicht weiter zu berücksichtigen, können dabei ein gutes Werkzeug sein.

Man sollte sehr bewusst darüber nachdenken, welche Aufgabenstellung als Ganzes zusammen mit ChatGPT erarbeitet werden sollen oder ob es vielleicht besser wäre, dass man die Aufgabenstellung aufteilt in kleinere Einheiten. Salopp ausgedrückt, je menschlicher und unüberlegter wir eine Konversation vertiefen, desto schwieriger wird es für uns das Ziel zu erreichen. Hier drohen möglicherweise in der Zukunft auch die Stolperfallen effizient mit ChatGPT zu sein, bzw. zu bleiben in unternehmerischen Gesichtspunkten. Man hat oft den Drang eine Konversation erneut zu beginnen, weil die letzte in unsinnige Richtungen lief oder man ChatGPT einfach nicht dazu kriegt, das zu tun, was man von ihm will.

Auch erwähnt soll nochmal sein, dass bestimmte “Dinge” in bestimmten “Unternehmen” schon lange erarbeitet und schon lange etabliert sind, sogar Mitarbeiter da sind, welche solche Protokolle im Schlaf und aus dem “EffEff” runterschreiben, selbst wenn sie kein Template zur Hand haben. Aber wie häufig kommt es auch vor, dass diejenigen die so etwas alle Nase lang machen mal nicht da sind, nicht zur Hand sind, oder das eigene Unternehmens-Wiki doch nicht so gut gepflegt ist wie man es gerne hätte. In diesem Fall könnte ChatGPT auch die letzten drei manuell erzeugten Protokolle in mehr oder weniger gleichem Format vorgesetzt bekommen, die Mitarbeiter X geführt hat, und dann auffordern daraus eine Vereinheitlichung zu erzeugen - in Markup versteht sich (kleiner Witz).

Da bleibt jetzt eigentlich nur noch übrig, was ChatGPT ohne jeglichen Kontext und Vorgaben erzeugen würde, oder? Na dann schauen wir mal im nächsten Artikel.

Hier kommen wir zum dritten Artikel.

maexware solutions