MeLODy

Das Projekt MeLODy ist ein Proof of Concept und veranschaulicht, wie man strukturierte statistische Daten in einen Chatbot integriert. Der Bot übersetzt dabei Benutzeranfragen in API-Anfragen, welche daraufhin die Daten verarbeiten und zurücksenden. Der Demonstrator beruht auf ChatGPT-Plus und verwendet die Möglichkeit, diesen mit Webservices zu verbinden.

Link zum Bot

Video 1: Einfache Anfrage Video 2: Konversation
Einfacher Demochat Demo-Konversation

Beispielanfragen

Der Bot (PoC) kann derzeit nur eine kleine Untermenge der vom Statitischen Amt der Stadt Zürich bereitgestellten Daten nutzen. Hier sind einige Beispielanfragen:

  1. Wie hat sich die Bevölkerung von Zürich in den letzten 100 Jahren entwickelt? Zeige mir einen Graphen davon.
  2. Zeige mir die Geschlechterverteilung über die Jahre.
  3. Zeige den Unterschied zwischen Einheimischen und Ausländern zwischen den Geschlechtern über die Jahre.
  4. Zeige mir die Altersverteilung von diesem Jahr.
  5. Wie hat sich die Anzahl an Kindern über die letzten 30 Jahren verändert?
  6. Zeige mir einen Graphen wie sich die Anzahl an Wohnungen über die letzten Jahre verändert haben.
  7. Wie hat sich das Einkommen über die letzten Jahre entwickelt?
  8. Wie haben sich die Mieten in Quartier XY entwickelt?
  9. Wie hat sich die Anzahl der Beschäftigten über die letzten Jahre verändert?

Lessons Learned: Optimierung für ChatGPT

Damit ChatGPT effektiv arbeiten kann, sind klare und präzise Endpunkte und Parameter erforderlich. Hier sind einige Erfahrungen und Best Practices, um die Zusammenarbeit mit ChatGPT zu optimieren:

Wie die Datenerfassung funktioniert

Um zu verstehen, wie der MeLODy Bot Daten verarbeitet und zurückgibt, finden Sie hier eine Schritt-für-Schritt-Erklärung:

  1. Transformieren der Anfrage:
    • Die API transformiert den Anfrage-Body oder die Query-Parameter in ein Anfrage-Body-Objekt. Dieses Objekt enthält datasetspezifische Filtereigenschaften und, falls zutreffend, ein groupBy Feld. Verfügbare Felder der Datensätze können verwendet werden, um die zurückgegebenen Daten zu gruppieren.
  2. Filtern der Daten:
    • Die API filtert die Daten basierend auf den angegebenen Filterparametern. Dies stellt sicher, dass nur relevante Daten abgerufen werden, die den festgelegten Kriterien entsprechen.
  3. Gruppieren der Daten:
    • Die gefilterten Daten werden dann in einem Objekt gruppiert. Die Gruppierung basiert auf den Feldern, die im groupBy Parameter angegeben sind, wodurch strukturierte und kategorisierte Datenresultate ermöglicht werden.
  4. Summierung mancher Daten
    • Da bestimmte Datentypen wie Demographiedaten oder Wohnungsdaten leicht summierbar sind, ohne die Werte zu verfälschen, werden solche Daten summiert, um die Verarbeitung durch ChatGPT zu erleichtern.
    • Ursprünglich sollte eine statistische Zusammenfassung in folgenden Werten erfolgen:
      • Mittelwert (mean)
      • Median
      • Modus (mode)
      • Summe (sum)
      • Minimum (min)
      • Maximum (max)
      • Quartile
      • Standardabweichung (standardDeviation)
      • Varianz

    Diese Transformationen sind jedoch nur bei absoluten Werten oder Ergebnissen möglich und nicht bei zuvor transformierten Daten. Daher wurde der Algorithmus entfernt. Stattdessen wird eine gut gruppierte Datenstruktur für nicht summierbare Daten zurückgesendet.

  5. Antwortstruktur:
    • Die Antwort von der API enthält:
      • Eine Liste der Felder, sortiert nach der Gruppenreihenfolge.
      • Die Gesamtanzahl der Daten.
      • Die Originaldatenquelle.
      • Das Datenresultat selbst, entweder summiert oder gruppiert, für eine effiziente und qualitativ hochwertige Analyse durch den Bot.

Durch das Befolgen dieser Schritte stellt der MeLODy Bot eine effiziente Datenverarbeitung sicher und liefert strukturierte, aussagekräftige Ergebnisse, die leicht von ChatGPT interpretiert werden können.

Verbesserte Datenformate zur Optimierung von Anfragen und effizienteren Analysen mit ChatGPT

Demografie

| Jahr (Number) | Kreis (Number) | Quartier (Affoltern - String) | Herkunft (Schweiz/Ausland) | Geschlecht (M/F) | Alter (Number) | Einwohner (Number) | |—————|—————-|——————————-|—————————-|——————|—————-|——————–|

Wohnungen

| Jahr (Number) | Kreis (Number) | Quartier (Affoltern - String) | Eigentümer (Öffentlich/Genossenschaft/Privat/Natürliche Person) | Zimmeranzahl (Number) | Anzahl (Number) | |—————|—————-|——————————-|—————————————————————–|———————–|—————–|

Erwerbstätige

| Jahr (Number) | Quartal (Number) | Anzahl (Number) | Vollzeit (Number) | |—————|——————|—————–|——————-|

Miete

| Jahr (Number) | Raum (Ganze Stadt/Kreise/Quartiere) | Zimmeranzahl (Number) | Gemeinnützig (Ja/Nein) | Messung (Wohnung/m²) | Preisart (Brutto/Netto) | Preis (Number) | |—————|————————————-|———————–|————————|———————-|————————-|—————-|

Einkommenssteuer

| Jahr (Number) | Quartier (Affoltern - String) | Tarif (Grundtarif/Einzeltarif/Verheiratetentarif) | Einkommenssteuer (Number) | |—————|——————————-|—————————————————|—————————|

API-Dokumentation

API-Informationen

Verfügbare Endpunkte und Parameter

POST /apartments

POST /demographics

POST /employment

POST /income

GET /population

Nächste Schritte

In den nächsten Schritten werden wir versuchen, unseren aktuellen Ansatz zu nutzen, um automatisch Anfrageschnittstellen basierend auf Nutzereingaben und gegebenen Daten-Schemata wie SHACL zu erstellen. Hierbei soll ChatGPT herausfinden, welche Datenfelder notwendig sind, um präzise Ergebnisse für das Filtern und Gruppieren der Daten zu liefern.

Automatisierte Erstellung von Anfrageschnittstellen

  1. Nutzereingaben analysieren:
    • ChatGPT wird die Eingaben der Nutzer analysieren und daraus ableiten, welche Informationen für die Anfrage relevant sind.
    • Beispiel: Wenn ein Benutzer nach Einkommensverteilung in einem bestimmten Bezirk fragt, wird ChatGPT Felder wie startYear, endYear, district, taxCategory usw. identifizieren.
  2. Daten-Schemata einbinden:
    • Wir werden bestehende Daten-Schemata wie SHACL (Shapes Constraint Language) verwenden, um sicherzustellen, dass die erstellten Anfragen den Datenanforderungen entsprechen.
    • SHACL wird genutzt, um die Struktur und die erforderlichen Felder der Daten zu validieren.
  3. Automatische Feldermittlung:
    • Basierend auf den Daten-Schemata und den Anfragen des Nutzers wird ChatGPT automatisch die notwendigen Datenfelder für das Filtern und Gruppieren bestimmen.
    • Beispiel: Für eine Anfrage zur Demographie von Zürich könnte ChatGPT Felder wie startYear, endYear, age, gender, district usw. identifizieren.
  4. Schnittstellenerstellung:
    • ChatGPT generiert automatisch die Anfrageschnittstellen einschließlich der entsprechenden Felder und Parameter.
    • Diese Schnittstellen werden in einer standardisierten Form (z.B. JSON) erstellt und können direkt in der API verwendet werden.
  5. Integration und Tests:
    • Die generierten Schnittstellen werden in die bestehende API integriert.
    • Es werden umfassende Tests durchgeführt, um sicherzustellen, dass die Anfragen korrekt verarbeitet werden und präzise Antworten liefern.

Durch diesen automatisierten Ansatz können wir sicherstellen, dass die Anfragen der Nutzer so präzise und effizient wie möglich bearbeitet werden. Gleichzeitig wird der Entwicklungsaufwand reduziert, da ChatGPT die notwendigen Schritte automatisiert und optimiert.

Vorteile des automatisierten Ansatzes

Dieser nächste Schritt ist ein bedeutender Fortschritt in Richtung einer vollautomatisierten und intelligenten Datenerfassungs- und Verarbeitungslösung, die auf die Bedürfnisse der Nutzer zugeschnitten ist.

Fazit

Der MeLODy Bot bietet eine effiziente Möglichkeit, Anfragen von Nutzern in strukturierte API-Anfragen zu übersetzen, die Daten zu transformieren und sie in verständlicher Form zurückzugeben. Die automatische Swagger-Dokumentation erleichtert Entwicklern den Einstieg und die Nutzung der API. Durch die Einhaltung der oben genannten Optimierungen kann die Zusammenarbeit mit ChatGPT weiter verbessert werden.

Der nächste Schritt in der Entwicklung wird darin bestehen, unseren aktuellen Ansatz zu nutzen, um automatisch Anfrageschnittstellen basierend auf Nutzereingaben und gegebenen Daten-Schemata wie SHACL zu erstellen. ChatGPT wird hierbei die notwendigen Datenfelder für das Filtern und Gruppieren identifizieren, um die Anfragen präzise und effizient zu beantworten.

Dadurch wird der MeLODy Bot nicht nur benutzerfreundlicher, sondern auch flexibler und skalierbarer für zukünftige Erweiterungen. Die Integration und Automatisierung dieser Prozesse reduziert den manuellen Aufwand und erhöht die Genauigkeit und Relevanz der Antworten, was zu einem insgesamt verbesserten Nutzungserlebnis führt.