Kontakt zu maexware solutions

Hast Du Fragen, möchtest ein erstes Kennenlernen vereinbaren oder hast bereits konkrete Pläne? Du kannst Dich jederzeit unverbindlich an uns wenden.

Telefon: 0 76 41 - 948 77 68
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 3: Saubere Iteration als Framework

Erste Versuche mit ChatGPT – Teil 3: Saubere Iteration als Framework

- Monib Asad Masud

Im ersten Teil und zweiten Teil unserer ChatGPT-Serie haben wir bereits einige Learnings bei der Zusammenarbeit mit ChatGPT gesammelt.

Im dritten Artikel-Teil beschäftigen wir uns damit, was ChatGPT erzeugt, wenn ihm kein vorheriger Kontext vorliegt, auf dem es aufbauen kann. Jede Aufgabenstellung erzeugt zwar ihren eigenen Kontext, aber wir wollen das trainierte Sprachmodell bewusst auffordern, möglichst frei zu zeigen, was es kann. Mal schauen, ob wir dafür die richtigen, möglichst kurzen Fragestellungen finden.

Der Ausgangspunkt: ChatGPT ohne bestehenden Kontext

Wir schreiben ChatGPT in einer frischen Konversation:

“We need a template to protocol.”

Und ChatGPT antwortet blitzschnell:

[Title of the Protocol]

[Objective]
Clearly state the objective of the protocol, which should be a concise and specific description of what the protocol aims to accomplish.

[Background]
Provide a brief overview of the background or context of the protocol, including any relevant literature or existing methods that influenced the development of the protocol.

[Materials]
List all the materials required to perform the protocol, including any specialized equipment, reagents, or software.

[Methods]
Describe the detailed steps necessary to perform the protocol, including any safety precautions, data collection procedures, or data analysis methods. It should be written in a clear and concise manner to ensure reproducibility.

[Results]
Specify what results are expected to be obtained by the protocol. Include any expected outcome, data interpretation or statistical analysis.

[Discussion]
Discuss any limitations, alternative methods or any observations made during the performance of the protocol. Also, mention any future directions for improvement or modification of the protocol.

[Conclusion]
Summarize the overall purpose and significance of the protocol, including any implications for future research or practice.

[References]
List all the references cited in the protocol.

[Appendix]
Include any supplementary materials that may be relevant to the protocol, such as diagrams, flowcharts, tables, or additional data.

I hope this template is helpful!

Das fühlte sich jetzt sehr sauber an. Frage. Antwort. Fertig. ChatGPT weiß nichts über unsere Absichten, unsere Vorstellungen oder darüber, wohin das Ganze führen soll. Es sieht in dieser frischen Konversation nur diesen einen Satz, unsere letzte Frage, und das Sprachmodell erzeugt etwas, was es durch sein Training für geeignet hält, um auf diesen Satz zu reagieren.

Was wir unter einer Iteration verstehen

Diesen Abgleich von Frage und Antwort können wir als Iteration bezeichnen. Eine Anfrage führt zu einer Antwort. Damit ist eine Iteration abgeschlossen.

Das ist das, was ChatGPT tut – egal wie lange eine Konversation andauert oder wie viele Iterationen zuvor stattgefunden haben. Selbst wenn wir uns dazu entscheiden, eine Konversation als Ganzes zu betrachten, tut ChatGPT dies nicht im menschlichen Sinne. ChatGPT geht immer von der aktuellen Iteration aus.

Dass ChatGPT Zugriff auf vorherige Iterationen innerhalb derselben Konversation hat, wird genutzt, um die aktuelle Iteration besser zu beantworten. Dieses „besser“ ist allerdings mit Vorsicht zu genießen. Je mehr wir als Mensch in die Konversation einbringen, desto höher ist auch die Wahrscheinlichkeit, dass ChatGPT Aspekte in seine Antworten einbezieht, die nichts mit unserem gewünschten Ergebnis zu tun haben.

Wir Menschen wissen, welche Teile einer Konversation wir berücksichtigen wollen und welche nicht. ChatGPT weiß das nicht automatisch.

Die erste Erweiterung der Aufgabe

Haben wir durch diese eine Iteration nun eigentlich das, was wir wollen – gemessen an unseren anderen Artikel-Teilen? Nein. Aber was wir beibehalten wollen, ist diese Sauberkeit, mit der die erste Iteration gekennzeichnet war.

Uns fallen dazu zwei Ideen ein: Entweder wir machen in dieser Konversation genauso sauber weiter, oder wir nehmen das Ergebnis und starten eine neue Konversation. Wir versuchen zunächst, in der bestehenden Konversation so sauber wie möglich weiterzuarbeiten.

Wir schreiben:

“The template to protocol should reflect software development, requirement management, costs, names of participants, timelines.”

Und ChatGPT antwortet wieder ohne lange Wartezeit:

[Title of the Protocol]

[Objective]
Clearly state the objective of the protocol, which should be a concise and specific description of what the protocol aims to accomplish.

[Background]
Provide a brief overview of the background or context of the protocol, including any relevant literature or existing methods that influenced the development of the protocol.

[Materials]
List all the materials required to perform the protocol, including any specialized equipment, reagents, or software.

[Software Development]
Describe the software development methodology that will be used, such as Agile, Waterfall, or Scrum, and provide a timeline for the development process.

[Requirement Management]
Specify the tools and processes that will be used for managing the requirements of the software, such as a requirements traceability matrix or a requirements management tool.

[Costs]
Provide an estimate of the costs associated with the development of the software, including any hardware or software licenses, development costs, and maintenance costs.

[Participant Names]
List the names and roles of all participants involved in the development of the software, such as developers, testers, and project managers.

[Timelines]
Provide a detailed timeline for the development of the software, including milestones, deliverables, and deadlines.

[Methods]
Describe the detailed steps necessary to perform the protocol, including any safety precautions, data collection procedures, or data analysis methods. It should be written in a clear and concise manner to ensure reproducibility.

[Results]
Specify what results are expected to be obtained by the protocol. Include any expected outcome, data interpretation or statistical analysis.

[Discussion]
Discuss any limitations, alternative methods or any observations made during the performance of the protocol. Also, mention any future directions for improvement or modification of the protocol.

[Conclusion]
Summarize the overall purpose and significance of the protocol, including any implications for future research or practice.

[References]
List all the references cited in the protocol.

[Appendix]
Include any supplementary materials that may be relevant to the protocol, such as diagrams, flowcharts, tables, or additional data.

I hope this template is more suitable for your needs!

Wenn wir die erste und zweite Iteration betrachten, haben wir noch keine gewaltigen Veränderungen oder Fortschritte gemacht. Aber alles ist weiterhin sehr sauber – und ChatGPT hat genau das getan, was wir für diese Iteration wollten.

Eine weitere Iteration mit Subpoints

Wir versuchen eine weitere Iteration und bleiben so sauber wie möglich. Wir wissen, wo wir hinwollen, aber wir dürfen nicht gierig werden und die Anfrage nicht unnötig überladen.

Wir schreiben ChatGPT:

“The template to protocol should contain proposed sub-steps or subpoints to every major protocol point.”

Und ChatGPT erwidert:

[Title of the Protocol]

[Objective]
Clearly state the objective of the protocol, which should be a concise and specific description of what the protocol aims to accomplish.

[Background]
Provide a brief overview of the background or context of the protocol, including any relevant literature or existing methods that influenced the development of the protocol.

[Materials]
List all the materials required to perform the protocol, including any specialized equipment, reagents, or software.

[Software Development]
Describe the software development methodology that will be used, such as Agile, Waterfall, or Scrum, and provide a timeline for the development process.

Sub-points:
- Define the scope of the software development project
- Identify the key stakeholders involved in the software development process
- Determine the development team's roles and responsibilities
- Develop a project plan and timeline that includes key milestones and deadlines
- Conduct regular project status meetings to track progress and identify any issues or risks

[Requirement Management]
Specify the tools and processes that will be used for managing the requirements of the software, such as a requirements traceability matrix or a requirements management tool.

Sub-points:
- Develop a requirements gathering plan
- Identify the key stakeholders who will provide input on the software requirements
- Define the software requirements and prioritize them based on importance and feasibility
- Document the software requirements and create a traceability matrix
- Conduct regular reviews of the requirements to ensure they are complete and accurate

[Costs]
Provide an estimate of the costs associated with the development of the software, including any hardware or software licenses, development costs, and maintenance costs.

Sub-points:
- Identify all hardware and software requirements
- Estimate the cost of hardware and software licenses
- Estimate the development costs, including labor and any other resources required
- Identify any ongoing maintenance costs and estimate the total cost of ownership

[Participant Names]
List the names and roles of all participants involved in the development of the software, such as developers, testers, and project managers.

Sub-points:
- Identify all project stakeholders
- Define the roles and responsibilities of each team member
- Create an organizational chart that identifies the reporting structure

[Timelines]
Provide a detailed timeline for the development of the software, including milestones, deliverables, and deadlines.

Sub-points:
- Define the project schedule and identify key milestones
- Develop a detailed timeline that includes all development phases, such as requirements gathering, design, development, testing, and deployment
- Create a Gantt chart to visualize the timeline and track progress

[Methods]
Describe the detailed steps necessary to perform the protocol, including any safety precautions, data collection procedures, or data analysis methods. It should be written in a clear and concise manner to ensure reproducibility.

Sub-points:
- Define the data collection process and data analysis methods
- Identify any safety precautions that need to be taken during the development process
- Create a detailed step-by-step plan for the development process
- Develop a testing plan to ensure the software meets all requirements

[Results]
Specify what results are expected to be obtained by the protocol. Include any expected outcome, data interpretation or statistical analysis.

Sub-points:
- Define the criteria for success
- Identify the expected outcomes of the protocol
- Develop a plan for interpreting and analyzing the data collected during the development process

[Discussion]
Discuss any limitations, alternative methods or any observations made during the performance of the protocol. Also, mention any future directions for improvement or modification of the protocol.

Sub-points:
- Discuss any limitations or challenges encountered during the development process
- Identify any alternative methods that could have been used to achieve the objective
- Discuss potential future directions for improving or modifying the software development process

[Conclusion]
Summarize the overall purpose and significance of the protocol, including any implications for future research or practice.

[References]
List all the references cited in the protocol.

[Appendix]
Include any supplementary materials that may be relevant to the protocol, such as diagrams, flowcharts, tables, or additional data.

I hope this updated template with sub-points for each major protocol point is helpful for your needs!

Sehr interessant ist, wie sauber sich Iterationen auch nach der dritten Runde noch anfühlen können. Vor allem ist interessant, wo wir jetzt stehen. Vergleichen wir das jetzige Ergebnis mit dem, was wir in den anderen Artikel-Teilen bis zu diesem Punkt erreicht hatten, fällt auf, dass wir viel mehr textlichen Inhalt haben, mehr Beschreibung und mehr Substanz, auf der sich weiter aufbauen lässt – ohne dass wir explizit darauf bestehen mussten.

Der Aspekt, dass wir keine weiteren Rahmenbedingungen festgelegt haben und keine Verweise auf Anwendungen oder unser eigentliches Endziel eingebaut haben, scheint dabei eine große Rolle zu spielen. Es macht Sinn, wenn man sich klarmacht, dass man so den Zugriff auf das trainierte Wissen von ChatGPT möglichst wenig limitiert.

Der tatsächliche Inhalt mag möglicherweise immer noch nicht dem perfekten Zustand entsprechen, den man sich vorstellt. Aber auf diese iterative Weise scheint man Schritt für Schritt sehr gut zu seinem Ziel zu gelangen und gleichzeitig maximalen Nutzen aus dem Wissen von ChatGPT ziehen zu können.

Das Template in Markup übertragen

Bevor wir zu unseren nächsten Learnings kommen, müssen wir das Ganze zumindest noch in Markup übertragen – wie könnte es anders sein, sonst wäre die Aufgabe nicht erfüllt.

Wir schreiben:

“Provide the Template in Markup, use the following Markup as reference.”

# 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 ChatGPT erzeugt:

# [Title of the Protocol]

## Objective
Clearly state the objective of the protocol, which should be a concise and specific description of what the protocol aims to accomplish.

## Background
Provide a brief overview of the background or context of the protocol, including any relevant literature or existing methods that influenced the development of the protocol.

## Materials
List all the materials required to perform the protocol, including any specialized equipment, reagents, or software.

## Software Development
Describe the software development methodology that will be used, such as Agile, Waterfall, or Scrum, and provide a timeline for the development process.

### Sub-points:
- Define the scope of the software development project
- Identify the key stakeholders involved in the software development process
- Determine the development team's roles and responsibilities
- Develop a project plan and timeline that includes key milestones and deadlines
- Conduct regular project status meetings to track progress and identify any issues or risks

## Requirement Management
Specify the tools and processes that will be used for managing the requirements of the software, such as a requirements traceability matrix or a requirements management tool.

### Sub-points:
- Develop a requirements gathering plan
- Identify the key stakeholders who will provide input on the software requirements
- Define the software requirements and prioritize them based on importance and feasibility
- Document the software requirements and create a traceability matrix
- Conduct regular reviews of the requirements to ensure they are complete and accurate

## Costs
Provide an estimate of the costs associated with the development of the software, including any hardware or software licenses, development costs, and maintenance costs.

### Sub-points:
- Identify all hardware and software requirements
- Estimate the cost of hardware and software licenses
- Estimate the development costs, including labor and any other resources required
- Identify any ongoing maintenance costs and estimate the total cost of ownership

## Participant Names
List the names and roles of all participants involved in the development of the software, such as developers, testers, and project managers.

### Sub-points:
- Identify all project stakeholders
- Define the roles and responsibilities of each team member
- Create an organizational chart that identifies the reporting structure

## Timelines
Provide a detailed timeline for the development of the software, including milestones, deliverables, and deadlines.

### Sub-points:
- Define the project schedule and identify key milestones
- Develop a detailed timeline that includes all development phases, such as requirements gathering, design, development, testing, and deployment
- Create a Gantt chart to visualize the timeline and track progress

## Methods
Describe the detailed steps necessary to perform the protocol, including any safety precautions, data collection procedures, or data analysis methods. It should be written in a clear and concise manner to ensure reproducibility.

### Sub-points:
- Define the data collection process and data analysis methods
- Identify any safety precautions that need to be taken during the development process
- Create a detailed step-by-step plan for the development process
- Develop a testing plan to ensure the software meets all requirements

## Results
Specify what results are expected to be obtained by the protocol. Include any expected outcome, data interpretation or statistical analysis.

### Sub-points:
- Define the criteria for success
- Identify the expected outcomes of the protocol
- Develop a plan for interpreting and analyzing the data collected during the development process

## Discussion
Discuss any limitations, alternative methods or any observations made during the performance of the protocol. Also, mention any future directions for improvement or modification of the protocol.

### Sub-points:
- Discuss any limitations or challenges encountered during the development process
- Identify any alternative methods that could have been used to achieve the objective
- Discuss potential future directions for improving or modifying the software development process

## Conclusion
Summarize the overall purpose and significance of the protocol, including any implications for future research or practice.

## References
List all the references cited in the protocol.

## Appendix
Include any supplementary materials that may be relevant to the protocol, such as diagrams, flowcharts, tables, or additional data.

Das sieht sehr gut aus: reichhaltiger, substanzieller und sauberer als das, was wir in den anderen Artikel-Teilen erzeugt haben. Nicht nur das Endergebnis ist sauberer, auch der Weg dorthin. Und genau das hängt unmittelbar zusammen.

Wenn wir die Notwendigkeit sauberer Iterationen verstehen und auf diesen Aspekt achten, erreichen wir mit deutlich höherer Wahrscheinlichkeit unser Ziel. Der Preis, den wir eingangs zahlen, ist, dass wir weniger Relevanz zu uns, also zu maexware solutions, im Ergebnis haben. Das stört aber nicht unbedingt. Denn das, was wir jetzt haben, ist umfassend strukturiert, lässt sich fast überall als Markup wiederverwenden und kann im nächsten konkreten Meeting angepasst werden.

Test mit mehreren frischen Konversationen

Wichtiger Hinweis: In unserem letzten Versuch haben wir drei frische, voneinander unabhängige Test-Konversationen gestartet, alle mit denselben Iterations-Requests.

Die Responses waren bei allen drei Konversationen nahezu identisch. Sie unterschieden sich in Satzform, Satzbau und verwendeten Wörtern, aber nicht essenziell im Ergebnis.

Bei einem dieser Versuche hatte ChatGPT statt Markup in einer Code-Box zunächst Prosa verfasst, sodass wir innerhalb der ChatGPT-Oberfläche formatierten Text sahen. In diesem Versuch sagten wir ChatGPT:

“Provide the last proposed Template in markup in a Code-Box, so I can copy it as Markup.”

Auch diese Konversation kam anschließend zu nahezu demselben Ergebnis.

Unsere Learnings aus dem dritten Versuch

Das Grundkonzept jeder Anfrage und Antwort an und von ChatGPT ist die Iteration. Anders geht ChatGPT nicht vor. Es erinnert nicht im menschlichen Sinne, sondern berücksichtigt vorangegangene Iterationen derselben Konversation für die aktuelle Antwort.

Das ist ein wichtiger qualitativer Unterschied. Wir Menschen sind nicht nur in der Lage, Vorangegangenes eines Gesprächs zu erinnern und zu berücksichtigen. Wir können auch instinktiv entscheiden, welche Teilaspekte davon wir für unsere nächste Äußerung ein- oder ausschließen wollen.

ChatGPT konzentriert sich dagegen auf die aktuelle Iteration und den Kontext der Konversation, in der diese Iteration stattfindet.

Wenn wir eine Konversation mit ChatGPT führen, muss uns klar sein, dass jede Referenz, Erwähnung oder Aufgabenstellung das Spektrum möglicher Antworten limitiert. Das ist nicht grundsätzlich schlecht. Es ist sogar notwendig, wenn wir ein spezifisches Ergebnis wollen.

Aber das Spektrum des trainierten Wissens unnötig oder ungewollt zu limitieren, sollte immer Teil unserer Überlegungen sein. Setzt man ChatGPT weniger unnötige Parameter und hält den Kontext so sauber wie möglich, lassen sich oft sehr gute Ergebnisse erarbeiten.

Resümee der Serie „Erste Versuche mit ChatGPT“

Hiermit sind wir am Ende unserer „Ersten Versuche“ mit ChatGPT angelangt. Ziehen wir ein kleines Resümee.

Wir haben versucht, strukturierter zu analysieren, was viele Nutzer beim ersten Kontakt mit ChatGPT instinktiv machen und erfahren würden. Was vielleicht nicht jeder instinktiv macht, ist, die Grundprinzipien dieses neuen Anwendungsfeldes qualitativ zu beschreiben und zu schärfen.

So lassen sich Grundprinzipien und Richtlinien erkennen, die es einfacher machen, dieses Werkzeug zielgerichtet und effizient einzusetzen. Das haben bereits viele versucht und werden noch viele versuchen. Wir geben hier unseren Anteil mit in den Pool.

In den nächsten Jahren werden sich diese Prinzipien und Richtlinien weiter schärfen. Es wird eine Zeit kommen, in der sich Konventionen entwickeln, auf die sich große Teile der Community einigen. Wir werden die Zusammenarbeit mit künstlichen Intelligenzen erlernen und besser darin werden.

ChatGPT ist als breit präsentes Sprachmodell ein wichtiger Vertreter dieser Entwicklung.

Unser Framework: Vier Prinzipien für bessere ChatGPT-Ergebnisse

Bis sich feste Konventionen gebildet haben, fassen wir unsere Learnings aus dieser Artikel-Reihe in vier Prinzipien zusammen.

Das Prinzip der Kohärenz

  1. Maximale Kohärenz der Anfrage zur eigentlichen Aufgabenstellung.
  2. Anfragen kurz, knapp und so eindeutig wie möglich setzen.
  3. Bei Bedarf mehrere Iterationen einplanen.
  4. Zusatzinformationen zum Kontext nur hinzufügen, wenn ChatGPT auffordert oder ansonsten keine vernünftige Iteration erzeugen kann.
  5. Keine zu komplexen und verschachtelten Anfragen formulieren.
  6. Nicht gierig werden: Lieber sauber iterieren als alles in eine Anfrage pressen.

Das Prinzip der Iteration

  1. Eine Anfrage führt zu einer Erwiderung von ChatGPT zu ebendieser Anfrage.
  2. Damit ist eine Iteration abgeschlossen.
  3. Eine Konversation mit ChatGPT ist eine Ansammlung aufeinanderfolgender Iterationen.
  4. ChatGPT beantwortet immer die aktuelle Iteration, nicht die Konversation als Ganzes im menschlichen Sinne.
  5. Vorangegangene Iterationen werden für jede aktuelle Iteration berücksichtigt.

Das Prinzip der Schärfe

  1. Keine ungewollten Limitierungen: Vermeide in Anfragen Bezüge oder Referenzen auf einengende Sachlagen oder Subjekte, die nicht Teil der Aufgabenstellung sind.
  2. Auflösung von Limitierungen: Formuliere konkret, welche Bereiche oder Aspekte zusätzlich aufgenommen werden sollen.
  3. Strikte gewollte Limitierungen: Schließe bestimmte Bereiche kontrolliert aus, wenn die Erfolgschance auf spezifische Antworten erhöht werden soll.
  4. Konkrete Umwandlung einer Limitierung: Nutze ein durch Limitierung entstandenes Ergebnis, um es auf ein neues Feld zu übertragen.
  5. Eine neue Konversation, die ein Ergebnis aus einer anderen Konversation nutzt, kann ein valider Weg sein.

Das Prinzip des Kontextes

  1. Ein Kontext ergibt sich aus allen Iterationen einer Konversation.
  2. Der sich mit jeder Iteration weiterentwickelnde Kontext bestimmt den Ausgang jeder einzelnen Iteration und somit der gesamten Konversation.
  3. ChatGPT hat keinen „Kontext-Clearer“ oder „Kontext-Garbage-Collector“.
  4. ChatGPT trifft keine bewusste Entscheidung darüber, welche Aspekte vorangegangener Iterationen verworfen werden sollen und welche nicht.
  5. ChatGPT trifft keine Entscheidung darüber, in welche Richtung sich eine Konversation bewegen sollte, um eine bestimmte Aufgabenstellung zu lösen.
  6. Korrektur- oder Verbesserungsversuche ändern nichts daran, dass frühere Iterationen weiterhin Teil des Kontexts sind.
  7. Wenn eine Konversation in eine falsche Richtung gelaufen ist, kann eine neue Konversation sinnvoller sein als eine Reparatur innerhalb des alten Kontextes.

Fazit: Saubere Iteration als Grundlage für Prompt Engineering

Der dritte Teil zeigt besonders deutlich: Gute Ergebnisse mit ChatGPT entstehen nicht nur durch einen einzelnen guten Prompt. Sie entstehen durch saubere Iterationen, klare Aufgabenstellungen, bewusste Begrenzungen und kontrollierte Kontextsteuerung.

Für Unternehmen bedeutet das, dass Prompt Engineering nicht nur eine Formulierungstechnik ist. Es ist eine Arbeitsweise. Wer ChatGPT in digitalen Prozessen, Dokumentation, DevOps, Projektkommunikation oder Wissensmanagement einsetzen möchte, muss lernen, Aufgaben sinnvoll aufzuteilen und Kontexte bewusst zu führen.

Genau darin liegt das Potenzial für stabile KI-Workflows im Unternehmensalltag.

Ausblick: ChatGPT in echten Betriebsprozessen

Wir werden uns bei der maexware solutions GmbH auch mit der konkreten Einbindung von ChatGPT in echte Betriebsprozesse befassen. Besonders Bereiche, die häufig unter dem Begriff DevOps zusammengefasst werden, können spannende Anwendungsfelder sein.

Dazu gehören Dokumentation, Prozessunterstützung, Projektkommunikation, Wissensmanagement, interne Automatisierung und die strukturierte Aufbereitung von Informationen.

Mehr zum Zusammenspiel von KI, digitalen Prozessen und Arbeitsabläufen findest Du im Bereich Business & Prozesse.

Zurück zum ersten Teil.

Zurück zum zweiten Teil.

maexware solutions