Sodele. Hab noch 30mins, bis der Wahnsinn los geht, dann schreibe ich mal ein paar Worte:
Zuallererst geht mir dieses "Ich kann das aber viel besser als die KI" sehr gehörig auf den Zeiger. Ich weiß auch garnicht, warum man auch hier wieder mit 0 oder 100 argumentiert. Das ist einfach nur grenzdebil. Fakt ist. Und da könnt ihr die Uhr stellen: Wer es nicht nutzt, wird abgehängt. Punkt. Ich gebe euch jetzt mal ein paar Beispiele - auch ein paar Kundenbeispiele -, wo KI/GPT im Einsatz ist. Und ihr werdet euch wundern: Es ist zumeist nicht dafür da, irgendwelchen dümmlichen Text zu generieren, der Fakten suggeriert.
Extraktion und Transformation
Fangen wir mal bei einfachen Dingen an:
Extraktion und Transformation. Ich versuche hier auch immer EINFACHE Beispiele als Erklärung zu nehmen. In Wirklichkeit hängt da natürlich eine gänzlich andere Komplexität beim Kunden dahinter.
Kunde hat Millionen von Rechnungen als PDF/JPG. Nicht standardisiert. Unformatiert. Er nutzt hier GPT, um sich eine feste Datenstruktur aus dem PDF generieren zu lassen. Also "Bitte extrahiere mir aus dem Dokument Namen und Anschrift, Positionen und Endbetrag. Bitte gib mir das als JSON Format, welches sich an folgendes Schema hält. Packe bitte eine Wahrscheinlichkeit deiner Erkennung an jeweils ans Ende der Position und eine Gesamtwahrscheinlichkeit als extra property in JSON"
Zack. Früher war das super aufwendig. Musstest erst OCR nutzen, dann hast ein Custom-Model gebraucht auf jedem Format. Millionen von Test-Fälle...Jetzt ratterst das einmal durch. Schnappst dir alles, was eine Wahrscheinlichkeit >95% hat. Machst dann nochmal 1000 statt 2 Millionen Testfälle und ein großer Teil ist erledigt. Geht alles ohne Weiteres mit GPT-Vision.
Ähnliche Use-Cases findest du überall. Viele Kunden nutzen also KI garnicht, um da jetzt irgendwelche Beiträge zu blubbern, sondern um unstrukturierte Daten in strukturierte Daten zu überführen.
Für viele Kunden habe ich einen EINFACH POC gebaut, der mal veranschaulicht, wie man GPT auch einfach in Formulare mit einbinden kann:
jeffreygroneberg/vaaidation (github.com)
Was macht der Prototyp? Ganz einfach. Stellt euch vor, ihr habt eine Eingabemaske. Und die Eingabemaske hat verschiedene Inputfelder. Ein einfaches Beispiel ist jetzt - und klar, da kannst auch GMaps oder andere APIs zum Validieren nehmen, aber es veranschaulicht es gut -, dass du validieren musste, ob es sich um eine richtige Adresse handelt. Du hast also hier mal das DTO definiert, welches genutzt wird, um den Payload zwischen Client und Backend zu definieren:
vaaidation/src/main/java/com/microsoft/germany/csu/appinno/vaiidation/dto/CustomDTO.java at main · jeffreygroneberg/vaaidation (github.com) Die Annotations sind von mir gebaut und werden dann später im Controller ausgewertet.
public class CustomDTO {
@VaiidationField(validationPrompt = "Must be a valid address format")
private String address;
@VaiidationField(validationPrompt = "Must be a city name")
private String city;
@VaiidationField(validationPrompt = "Must be a game released on a Nintendo console, but does not need to be exclusive to a Nintendo console.")
private String nintendo;
...
}
Ihr seht schon, worauf ich hinaus will. Anforderung an das Format können jetzt relativ simpel in Sprache formuliert werden. Nehmt mal die dritte Anforderung mit dem Nintendo. Das würde ja beinhalten, dass man sich irgendwo alle Titel herholt. Die in eine DB legt. Dann musst du noch Fuzzy-Search machen, Titel werden vlt nicht richtig geschrieben. Pi, Pa, Po. In meinem Prototypen sieht man, dass das ohne Probleme funzt. Wenn es kein Nintendo-Titel ist, dann meckert er rum, aber gibt mir - weil ich das im Prompt so verlange - auch den Grund zurück, weshalb er denkt, dass es eben kein Nintendo-Titel ist.
Und so Zeug spart Zeit. UND GELD. Funzt das zu 100%. NOCH nicht. Es funzt ausreichend. Da geht es natürlich auch um das Pareto-Prinzip. Jetzt kommt natürlich Mate-Manfred und erzählt mir irgendwas davon, dass doch die Edge-Cases auch manuell geprüft werden müssen und dass das auch Arbeit verursachen würde. Das ist richtig. ABER für so Kram kannst du einfach billig Leute engagieren. Deshalb ja auch die ganzen Chat-Bots und was weiß ich was? Die fegen dir halt einfach mal 80% der Fälle weg. Dass Schnauzer-Schorch mit seiner Frage, ob denn jetzt der Router den Bridge-Mode unterstütze und welche public IPs er dann im Dual Stack habe, eventuell nicht bedient werden kann, ist vollkommen scheiß egal. Der wird natürlich sich dann auch im Internet aufregen, dass es für ihn beim Chat-Bot keine Lösung gab. Für die anderen 900 von den 1000 war es aber ausreichend. Und ACHTUNG. Jetzt kommt der Witz. NACH der Implementierung ist es faktisch done. Das Trainieren wird das Model und den Use-Case weiter verbessern. Unabhängig von der Implementierung. Die ist weiterhin nur der eine Call an die API mit dem dem System-Prompt. It's done. Unternehmen müssen dann nur noch warten und die Versions-Nummer des Modells hochziehen und es mit neuen Features ausbauen. Den Rest machen wir (oder halt OpenAI in dem Falle).
Wir bauen jetzt zB für die Daimler eine Lösung für den Wartung. Stellt euch vor, dass die einmal im Monat die ganzen Maschinen warten müssen im Werk. Jeder Hersteller hat ca 1000 verschiedene Manuals. Mit jeweils 1000 Seiten. Und die liegen bei denen im Wartungsraum rum. So eine Maschine zeigt meist eine Fehlermeldung an und dann müssen die sich hinsetzen und in den Anleitungen los würgen. Mansche Maschinen leiten auch nur Fehlermeldungen weiter, die vlt von den Schnittstellen kommen, an denen andere Maschinen sitzen und so suchen sie in Anleitungen, die vlt garnicht den Fehler beinhalten. Birkenstock-Bernd wird natürlich jetzt sagen, dass man doch nur ins Glossar müsse und dort nach dem Fehlercode schauen. Sehr gut, Bernd. Dafür müsstest du aber auch wissen, von welchem Teil der Maschine jetzt diese Code und manchmal wird auch nur ein Satz angezeigt.
Was machen wir jetzt? Wir nehmen die PDFs, Scannen die Anleitungen ein, alles wird vektorisiert und kann dann mittels GPT einfach "erfragt" werden. Auch hier geht es wieder um
Extraktion und um die Beschreibung des
Problems in natürlicher Sprache. Die Wartung kann also den Fehler beschreiben und wir bauen denen einen Teams-Bot mit eigenem Channel, in den jeder Mitarbeiter rein kann. Der Bot wertet die Frage aus, schaut dann in den Vektoren, ob etwas dazu passt, schnappt sich die 5 Seiten davor und danach --> Rein in GPT. Der extrahiert die Infos und gibt sie zurück mit "Ich habe hier auf Seite X der Anleitung Y einen ähnlichen Fall." und gibt den Text aus und direkt einen Link zum PDF. That's it. Da gehts nicht darum, dass die Wartung jetzt 1:1 gesagt, was sie tun müsse. Es geht darum, dass Zeit gespart wird.
(Übrigens sind die Daten hier alle privat und verlassen NICHT das private Netzwerk --> RAG
RAG und generative KI - Azure AI Search | Microsoft Learn)
Selbiges mit Krankenakten von Patienten. Ein Arzt kann ganz einfach FRAGEN, ob in der Anamnese schon X oder Y war, statt 15-30 Minuten damit zu verbringen, die Akte durch zu blättern. Oder Asset-Generation. Kumpel hat das hier gebaut, was sich den aktuellen Tag der Woche schnappt und Sammelkarten generiert anhand eines Ereignisses, was halt an diesem Tag halbwegs populär war:
Mythic Folio
Extraktion. Transformation. Natürliche Sprache. Darum geht es.
In meiner täglichen Arbeit nutze ich KI, wo es nur geht.
Gerade gestern. Langes Meeting. Ging um Agenda eines Kundenworkshops. Ich hab mir paar Stichpunkte gemacht. Paar Themen. Meint ihr, ich hab jetzt Bock drauf, da 100 Stunden Copy/Paste zu machen, um mir eine schöne Tabelle zu generieren, die den Tag wiederspiegelt mit Uhrzeit etc? Fuck off. Meine Notizen genommen. Prompt geschriebenin MS CoPilot, dass er mir eine Slide mit Standard Template und das Zeug in eine Tabelle gießen solle, die eine Tages-Agenda darstellt. 2mins maximal done.