I. Wir haben es in der letzten
Folge schon gesagt. Wenn du keinen I Use Case für
dein Business findest, dann macht es jemand anders und
überholt dich einfach. Aber wie bauen wir als ein
unsere Apps ein und wir helfen Technologien wie lange Chain
oder vielleicht auch Semantic Kernel dabei und was muss ich
eigentlich als Entwicklerin über Eddings, wegfuhr Datenbanken und
eigentliches Wissen, darum geht es in dieser Folge Form to
Developer Podcast. Genau und damit herzlich
Willkommen zu einer neuen Folge. Schön, dass ihr wieder dabei
seid. Bevor wir ins Thema einsteigen,
also erst eine Anknüpfung an das Thema von vor 2 Wochen, wo wir
schon überhaupt Engineering gesprochen haben und jetzt
sprechen wir drüber. Wie baue ich das denn jetzt in
meiner eigenen Apps ein? Bevor wir loslegen, haben wir
ein paar Dankeschön Wörter zu verteilen.
Und zwar hat uns Julia 2 Kaffee spendiert, dafür erstmal ganz
ganz lieben dank, das freut uns immer sehr.
Wer es noch nicht weiß, Wer haben immer in der Beschreibung
dieser Folgen bei mir Coffee Link.
Also ihr ich hab was gelernt, ich würde den beiden gerne
Kaffee ausgeben und dann freuen wir uns immer wahnsinnig drüber
könnt ihr immer. Machen.
Über den Link unten und vielleicht vorher noch kurz
Service announcement. Wir sind jetzt auf Instagram und
TIK tok, Wir haben es geschafft und sind jetzt ganz Boomer mäßig
auch Plattform unterwegs neben ernst.
Wir haben uns überlegt, dass wir vielleicht ab und zu mal so
kleine kleine Video Schnipsel von dem Podcast hier, wenn wir
irgendwie wenn wir eine spannende Stelle oder sowas
rausgesucht haben auch da veröffentlichen.
Also wenn ihr unterwegs seid, dann wisst ab und zu zu unseren
Stimmen auch mal unsere Visage neu zu sehen, dann könnt ihr das
gerne auf diesen Plattformen tun, wenn wir uns folgen wollt
findet ihr die Links unten. Genau.
Wir werden jetzt keine neuen Folgen oder komplette Folge
veröffentlichen. Uns geht es darum, auch neue
Leute für diesen Podcast zu begeistern, einfach die Audience
zu erweitern, ihr alle kennt den Podcast schon, aber viele andere
noch nicht und da versuchen wir auch neue Wege zu gehen.
Wir freuen uns, wenn ihr uns auch dort folgt.
Genau, ganz wichtig ne. Also das bleibt ein Audio
Podcast und selbst wenn es jetzt aber irgendwie schiebt, die Idee
ist immer, dass man. Den Podcast komplett auch ohne
uns zu sehen, verfolgen kann. Das heißt, er wird nicht ihr
verpasst nichts, wenn ihr uns nicht anschaut.
Ist manchmal auch besser so. Ja.
Super, dann steigen wir ins Thema ein und ich habe es gerade
schon gesagt. Wir beschäftigen uns damit, wie
ich einen meiner eigenen Apps einbauen.
Wir hatten letztes Mal drüber gesprochen in der letzten Folge
zum Thema prompt Engineering wie ich I Love Language Models
verwende, also wirklich als End User, also was muss ich wissen,
wenn ich solche prompts baue, aber da sind eher so Use Cases
gemeint wie GT oder vielleicht copilot wenn ich für die
Softwareentwicklung eigene Promis schreiben muss um das
Beste aus Language Model herauszubekommen, aber letzten
Endes möchte ich das Ganze natürlich in meinem eigenen
Anwendungen haben, ich möchte das was ich in den letzten
Jahren oder Monaten gebaut habe. Möchte ich jetzt mit den ganzen
neuen AI Models mit den ganzen Services rund um die Salate,
Language Models oder generative EI im Allgemeinen ergänzen.
Und da hatten wir natürlich im Rahmen der Folge zur Bild schon
bisschen angeteasert. Heute geht es jetzt wirklich im
Detail darum, wie kann ich das Ganze einbauen und vielleicht
einfach mal zu schauen OK welche Use cases gibt es eigentlich?
Ich glaube, das ist auch der schwierigste Teil.
Also ich glaube das. Wir sprechen heute darüber, wie
man das als Entwickler, Entwicklerin in die eigenen Apps
einbaut, aber ich diesen Teil den richtigen Use Case zu finden
für die eigene Anwendung für das eigene Business.
Ich glaube, dass das die viel größere Herausforderung ist.
Ich bin mir sicher, der nächste Chatbot ist es nicht.
Also ich möchte ich jetzt schon auf keinen Fall in der Welt
leben, wo ich eigentlich mit jeder Technologie, mit jeder
Firma über den Chatbot Interagiere.
Nee, also weiß nicht cooler, finde ich glaube ich die
Anwendung selber intelligent ist.
Also Beispiel ich bau ne Buchhaltungs Software zum
Beispiel und dann wäre es vielleicht einfach irgendwie
unten rechts x Bubble einzubauen wo ich sagen kann hey ich klicke
drauf und dann kann ich fragen OK was sind denn die größten
Ausgaben die ich habe oder bereits über die Umsatzsteuern
vor viel smarter wäre das ja wenn ich.
Von weil quasi interaktiv, direkt, irgendwie intelligente
Vorschläge bekomme, was ich vielleicht auch vielleicht
Ausgaben optimieren könnte, wo ich Dinge zusammenfassen könnte,
wenn Beifall automatisch erkennt, dass ich vielleicht
weiß ich nicht irgendwelche ähnlichen Ausgaben habe für das
für das gleiche Tool meine ein buchungstool EI erkennt, es ist
scheinbar wieder Zeit für eine Umsatzsteuer Erklärung oder was
weiß ich. Also ich möchte nicht mit einem
Bot interagieren, ich selber Intelligenz in den Apps haben
sowie Fotos im Prinzip auch irgendwie hat sich Anweisungen
geben kann. Und die ersten Anwendungen, die
schon vorher existierten, vor der großen I.
Welle machen das natürlich auch schon, egal ob es jetzt darum
geht und wie Video Recording Software zu haben, die am Ende
die Thumb Nails. Youtube rauswirft oder
irgendwelche Software, die gute Video Schnipsel findet oder
vielleicht Untertitel erzeugt. Und wir haben das jetzt selber
gemerkt im Rahmen der Initiative rund um Tik Tok und Tok und
Instagram. Da gibt es tolle Tools, die
wirklich die Subtitles generieren, die gute Stellen
finden und wirklich den Use Case in der eigenen Anwendung zu
finden ist glaube ich das Entscheidende.
Wir müssen natürlich auch hier in unterschiedlichen Rollen
denken, ja viele die hier den Podcast hören sind Developer und
da hat man vielleicht gar nicht die Entscheidung was man
implementiert, sondern da geht es lediglich darum, wie
implementiere ich das und darum soll es auch in dieser Folge im
Detail gehen, aber wir haben natürlich auch Leute die sind
Product Owner oder einfach in der Software Branche.
Unterwegs müssen sich neue Use Cases entwickeln, die vielleicht
selbst, und das ist glaube ich entscheidend, im ersten Schritt
zur schauen, OK, was ist für meine Anwendung der I Use Case,
den ich mir überlegen kann ich einbauen kann.
Es geht jetzt nicht darum wirklich Teufel komm raus
irgendwas einzubauen, aber in ganz vielen Fällen gibt es
wirklich smarte Ideen und da muss man wirklich einfach mal
anfangen und schauen OK die Tools die ich jetzt habe, die
ganzen Services die ich jetzt habe, welche neuen Möglichkeiten
eröffnet mir das, was kann ich damit machen, was ich eigentlich
schon immer machen wollte, was bisher aber noch nicht ging und
wie man das macht da drüber reden wir jetzt im Detail.
Genau das vielleicht spannend. Was macht ihr gerade sagt, was
meint das? Macht folgendes können wir als
Beispiel nehmen für für wie man das nachbauen würde und zwar
kann man da ein quasi ja ein ein ein Video oder eine Audio von
zum Beispiel einem Podcast oder von auch von irgendetwas
aufgenommen eigentlich alles mögliche kann man da hochladen
und das Ding transkribiert das also ne übersetzt das in quasi
Text und zeigt einem so durch 1030 Sekunden lange Schnipsel an
wie gesagt das wäre n cooler Ausschnitt für Social Media aus
den und den Gründen zum Beispiel hat einen spannenden Einstieg.
Ist ein provokantes Thema, gibt vielleicht einen Sprechen und am
Ende kommt man zu einer guten Conclusion, setzt also
automatisch die Schnitte und schlägt uns als Creator und dann
ja 2 330 Sekunden vor, wo das Ding automatisch kann,
vielleicht 345 spannendsten Stellen in eurem 2030 Minuten
Podcast. Wenn ihr wollt, können wir euch
raus, ihr könnt das irgendwie auf Social Media Posten und da
gibt es ja nicht eine AI für die das Macht, sondern am Ende und
ich glaube das ist ein ganz ganz wichtiger Punkt, der auch auf
den das auch in allen anderen, also den meisten anderen
Anwendungen hinauslaufen wird. Am Ende ist es wahrscheinlich
einfach nur eine Kombination, also nur s.
Gesehen, aber am Ende ist es einfach eine eine, eine, eine
Aneinanderreihung von Prompts, nativen Funktionen, externen
APIS, die da irgendwie aufgerufen würden wurden und
noch irgendwelchen Informationen, vielleicht im
Modell mit eingebunden waren, sondern irgendwo weiß nicht zum
Beispiel muss man auch sehen, Podcast angeben und dann weiß,
ob das Thema, also eigentlich Kombination Services und eine
Kombination, prompt gibt es nicht ein Modell was einmal
gekocht einfach zurück zeigte, dann dem User an, sondern es ist
eine Kombination ohne einander Radio.
Absolut und viele Sachen davon kennen wir bereits schon und das
sind solche Sachen wie Memory. Klar, wir haben immer
Informationen im Speicher abgelegt, in der Datenbank on
Disc, Wir haben in der Vergangenheit schon externe AP
is verwendet, verschiedene Services miteinander kombiniert
und jetzt im Rahmen der AI Services kommen halt bestimmte
neue Dinge dazu, einmal das Thema Prompts, worüber wir
letztes Mal gesprochen haben und dann natürlich die Kombination
mit den eigenen Funktionalitäten der Anwendung, das heißt ich
ergänze das was ich bisher hatte mit AI und da kommen natürlich
ganz neue Herausforderungen hinein, weil natürlich solche RI
services. Generative egal ob Sprache,
Bilder, Audio oder andere Dinge an sich auf generischen
Informationen trainiert wurden, das heißt, sie haben gelernt,
wie Sprache funktioniert. Sie haben gelernt, wie man
Bilder erzeugt, wie Bilder grundsätzlich aussehen, wie
verschiedene Dinge in bestimmten Kunst Stilen im angegeben
werden, generiert werden und unsere Anwendung muss jetzt
dieser I sagen, was sie erreichen möchte oder was wir
aus dieser I. Zurückbekommen wollen.
Und diese EI ist an sich und wird jetzt beim Thema prompt
Engineering sagt DI hat zwar furchtbar viel wissen, aber sie
hat halt keinerlei Kontext, sie kennt meine Anwendungen nicht.
Sie kennt meinen Use Case nicht, sie kennt die
domänenspezifischen Informationen nicht und gerade
am Beispiel dieser Video Generierung, die du genannt
hattest. Sie kennt natürlich meinen
Content gar nicht, sie weiß gar nicht, was eigentlich das Video,
worüber wird gesprochen und diese Informationen müssen
natürlich jetzt an diese künstliche Intelligenz
übermittelt werden und dann mit den Informationen aus diesen
ganzen anderen, eher klassischen Funktionsbereichen wie Speicher,
externen APIS und den eigenen Funktionalitäten ergänzt werden.
Genau, vielleicht mal an. Wir haben ja gerade schon im,
also du hast es schon gesagt, malte, es gibt da eigentlich 2
populäre Frameworks, gerade die einen so n bisschen durch
begleiten als Developer Sven Lang Chain und Semantik Kernel
gleich noch ein bisschen dran, aber im Prinzip arbeiten die
sehr ähnlich. Und zwar.
Und. Baue ich oder stelle ich als
Developer verschiedene Plugins bereit, die ich an einer
zentralen Registry registriere und diese Plugins, das können
prompt sein, die schon vorgeschrieben habe, also prompt
Templates, das können native Funktionen sein, also
klassischer Code, den ich irgendwo habe, wo ich i Call, wo
ich eine Datenbank Abfrage mache, wo ich irgendeine
Berechnung mache, wo ich irgend. Filtersätze was, was auch immer.
Und dann spricht man noch in der I.
Welt von Memory, das ist dann nicht der Arbeitsspeicher,
sondern von der Erinnerung quasi oder von generell von externen
Informationen. Also möchte ich zum Beispiel
Informationen ins Modell mit Reingeben, die relevant sind für
den prompt, aber nicht im Trainingsset des Modells drin,
also Dinge, von denen das Modell eigentlich noch nichts weiß.
Und all diese Dinge werden dann an einer zentralen Stelle, also
NT Kernel nennt das Planer. Ich weiß gar nicht genau, wie
lange das wahrscheinlich werden die dann da zusammengebaut.
Das bedeutet für eine bestimmte Anfrage, die reinkommt.
Hab ich dann verschiedene Funktionen zur Verfügung, die
ich in diesem Plan einen Plan verwandelt, dann diese
Aneinanderreihung von Promis, nativen Funktionen, externen API
s Plugins, was auch immer, um am Ende dann ein Ergebnis
rauszukriegen, aber quasi Schritt für Schritt n Call zum
Beispiel gegen einen EI Modell. Mache sage, dass ich das in
bestimmten Format zurückbekommen möchte, das Ergebnis dann in den
nächsten Schritt, zum Beispiel eine native Funktion mit
Reingebe und so weiter und sofort.
Dann lass uns vielleicht mal durch die einzelnen Elemente
durchgehen und ich glaube, eine gute Reihenfolge ist es aus der
user Perspektive das Ganze zu betrachten.
Also der Input kommt von User, egal ob das jetzt sowas ist wie
ZBT, wo der Input irgendwo Text ist oder es ist halt so ein
Video verarbeitungs Tool wo Input des Users n Video ist und
das erste was natürlich dann reinkommt und was wir brauchen
ist den sogenannten prompt. Wir haben letztes Mal drüber
gesprochen und dann noch mal gerne in die letzte Folge
reinhören zum Thema prompt Engineering wir bauen dann eine
Anweisung an so eine generative AI.
Das heißt, wir müssen zunächst erst mal die Grundlagen setzen,
sogenanntes Grounding. Das heißt, du hast einen Base
Model, du hast gerade gesagt, das ist auf ganz vielen
Informationen trainiert, die aber eigentlich nicht in einer
Anwendung zu tun. Es kann natürlich sein, dass
irgendwie Informationen eingeflossen sind, die aus einer
ähnlichen Domäne stammen, aber grundsätzlich hat das nichts mit
meiner Anwendung zu tun, und ich muss jetzt zunächst einmal die
Grundlagen setzen, das heißt, ich hab den Hintergrund vor,
worum es eigentlich geht, das heißt, das gebe ich ins Modell
mit rein, dann gebe ich halt noch zusätzlichen Kontext rein,
dann reden wir gleich drüber, wo der herkommt, der kann aus dem
User Input kommen, aber der kann auch aus dem Speicher oder den
nativen Funktionen kommen, das heißt, diesen User Input muss
ich auch noch reingeben. Und dann kann ich halt noch
normale kontrollparameter Input Reingeben, wie halt bei der
klassischen Software. Das heißt, ich habe als User
habe ich irgendwelche Parameter die besetzt werden und welche
Variablen die ich besetze dich dann letzten Endes auch dort
weitergebe in diesen prompt und das sieht man ganz gut, wenn man
sowas wie Chip t verwendet oder diese generativen Bild AIS
verwendet, zum Beispiel mit Journey, da kann ich einen
prompt bauen, das heißt ich beschreibe dann, worum geht es
eigentlich, was der Hintergrund, was soll auf diesem Bild sein,
setzt er den Kontext, gebe dann konkret den Input, was soll auf
diesem Bild? Sein und kann dann aber bestimmt
noch Parameter bestimmte Parameter setzen.
Ich kann sagen, OK, wie soll das Bildformat sein, welche Kamera
soll vielleicht dort, wenn es fotorealistisch sein soll
irgendwie als Vorbild genommen werden, also wie soll das Output
aussehen und das wird alles gemeinsam als prompt
zusammengestellt und dann in meiner Anwendung reingegeben und
kann dann dafür verwendet werden, die richtige Rückmeldung
aus meiner Anwendung zu bekommen.
Was auch super spannend ist, dass ich dann endlich einen
Output Format vorgeben kann. Ne.
Ich kann also wenn wenn wir als Menschen mit einem Language
Model Beispiel PT interagieren möchten wir den Menschen lesbare
Output haben, also gehen wir Text zurück oder im Fall von mit
Journey gib mir ein Bild zurück wenn ich das Ergebnis aber
programmatisch weiterarbeiten möchte, wäre es vielleicht
sinnvoll, dass Output Format Jason zu wählen und das kann ich
auch in so einem Lager mitgeben, das heißt mein prompt könnte
sein ich habe dieses Video transkribieren das nochmal bitte
also transkribiert das Audio doch mal bitte in Text und gib
mir das in in Jason. Lass uns im folgenden Format
oder folgenden Jason Schema und dann kann ich dir mal ein
Beispiel mitgeben, wie es aussehen könnte und sagen so
jetzt so liebes Model und jetzt du und dann kann ich ja dieses
Auto einfach nehmen und dann komplett durch Parson.
Das heißt für mich als Vater ändert sich fast gar nichts im
Vergleich zu klassischen AB Calls, weil ich kann im
Gegenteil sogar schon ein bisschen so q ich vorgeben kann
was ich zurückbekomme, dann gib mir doch, dient zurück und die
meisten Level können das ist relativ cool.
Da kann ich eben weiter verarbeiten.
Also prompts, ich bau eigentlich Text Blöcke vor, also
vorgefertigte Text Blöcke und kann dann mit mit mit Variablen
versehen, die programmatisch befülle, je nachdem was der User
oder Userin eingegeben hat. Registriere diese Probleme
Registry und kann sie dann verwenden um eine Pipeline
verarbeitungs Partner nach aufzubauen.
Kann ja sein, dass innerhalb einer Anwendung verschiedener
Projekte oder wenn jemand Podcast vielleicht anderen
prompt verwende, als wenn jemand jetzt ein klassisches Youtube
Video hochlädt sag ich mal irgendwo ein log.
Und das kann nicht anders sein. Aber am Ende möchte ich trotzdem
die gleiche durchlaufen. Dann registriere ich diese
beiden Prompts, wenn ich nachher den Planer benutze, um für
diesen Use Case meine Pipeline zusammenzubauen, nehme ich halt
für den Blog den Blog prompt und für den Podcast dem Podcast
prompt, weil vielleicht andere Anweisungen Model mir bessere
Resultate geliefert haben. Und im Gegensatz zu solchen
Enduser EI Diensten wie ZBPT habe ich natürlich jetzt diesen
prompt nicht durch den User zusammengestellt.
Also der User gibt jetzt nicht den Text ein, sondern innerhalb
einer Anwendung baue ich diesen prompt zusammen, das heißt eine
Funktionalität meiner Anwendung dieser prompt erzeugt.
Und dieser Input, der kommt nicht nur durch den User Input,
wie zum Beispiel den Upload eines Videos oder irgendwie Text
der eingegeben wird, sondern der kommt auch durch die nativen
Funktionen einer Anwendung. Damit sind wir im nächsten
Schritt, wir haben bestimmte Funktionalitäten unserer
Anwendungen, die schon immer da, die bauen wir jetzt neu,
Beispiel dieser Video Processing Software, die konnte vielleicht
vorher schon oder kann auf jeden Fall irgendwie Audio und Video
verarbeiten, sie kann die Audio Spur rausziehen und die
vielleicht einen anderen Dienst schicken um halt einen Speech to
Text zu machen, das sind native Funktionen der Anwendung die
halt klassisch implementiert werden, das heißt ich schreibe
da ganz klassischen Code implementieren.
Selber benutze librariesbenutze.at s und Bau
das dann in meine Anwendung rein und den Content den ich dann
zurück bekomme am Beispiel des Videos zum Beispiel die
Transkription des Videos gebe ich dann wieder zurück zur
Korrektur oder gebe ihnen dann als Teil des Prompts Inders
Large Language Model, das heißt hier arbeite ich ganz klassisch
so wie in der Software Entwicklung bisher, aber der
Output von diesen ganzen nativen Funktionalitäten dient dann als
Grundlage oder als Ergänzung zu dem was ich mit dem mit der EI
erzeugt habe. Also was ich immer für den Trump
baue oder was ich. Über die Rückmeldungen zum
prompt bekomme. Genau das können auch normale
Datenbankabfrage sein. Ne, das muss ja so ich ganz
viele Dinge, für die brauche ich jetzt und jetzt KI zum Beispiel
das Rennen Video kann ich wahrscheinlich a machen, ist
aber wahrscheinlich wirtschaftlich uninteressant,
kann ich ja mit diktierte Libraries, das andere kann
natürlich sein, dass Sonderangebote natürlich keine
Informationen über seine User Datenbank hatte, wurde über das
Projekt was die User gerade auf hat, das heißt ich Datenbank
abfragen meine Datenbank. Es kann natürlich auch irgendwas
sein, wo ich Party PI verwendet, zum Beispiel wenn ich jetzt
sage, Hey, bau mir ein Video zusammen.
Für diesen Podcast. Kann ja sein, dass die Spotify
API Anzapft um sich Informationen über diesen
Podcast zu holen und dann vielleicht ein anderes Modell
reinfährt oder so weiter und wenn es muss ja nicht alles in E
Call sein, wahrscheinlich die Kombination aus all dem.
Und dafür registriere ich dann genauso wie ich prompt an dieser
Registry registriere native Funktionen, die nachher meiner
nachher meine Pipeline verwenden kann.
Und kann diese dann natürlich schon isoliertesten.
Also ich kann sowohl die Prompts, das sieht so aus, dass
ich eigentlich quasi so Textdateien einfach nur
hinterlege. Diese paar Variablen haben und
kann die ja immer wieder neu testen, kann die vielleicht
einen prompt Engineering Team geben oder meine Daten und der I
Team geben wir diese Promis halt irgendwie baut ein völlig
anderes Team. Kann mir die nativen Funktionen
und Datenbank abfragen mit deren Framework und Technologie der
Wahl bauen und das sind ganz kleine atomare Elemente die auch
in sich sehr gut testbar sind und die ich dann nachher meine
Anwendungen durch so diese Pipelines zusammen.
Ich glaube, das ist ein ganz guter Analogie.
Ist halt so ein Orchestrator, auch wenn man über diese
Frameworks wie Semantik, Kernel spricht.
Das heißt, man hat diese verschiedenen Funktionalitäten,
die wir erwähnt haben, sind jetzt gerade bei den Bereich
eigene implementierungs Teile und dieser Orchestrator
dazwischen, also dieses Framework sorgt dafür, dass die
ganzen Inputs und Outputs miteinander kombiniert werden,
die Informationen richtig von A nach B schließen, weil ich habe
letzten Endes dann eine gar nicht beliebig komplexe
Kombination aus aus prompt aus eigenen Anwendungen, aus Dingen,
die aus dem Speicher geladen werden, und die muss ich ja
richtig zusammenführen, das heißt, was braucht das Language
Model, was gibt das Language Model zurück?
Wo muss ich das ganze speichern? Welche Informationen muss ich
ergänzen? Und das wird natürlich über so
ein Framework koordiniert, kann nicht alles händisch machen.
Wir haben es gerade beschrieben und jetzt wird man denken, OK,
in einem simplen Use Case mach das einfach alles selber, aber
werden gleich noch dazu kommen, wofür brauche ich eigentlich
Memory und da kommt eigentlich viel Komplexität rein, weil
natürlich in unserem Use Case gerade mit dem Video den wir
geschrieben haben gebe ich einmal Input, ein Video und
Krieg Informationen zurück die ich am Ende den Usern
präsentiere aber es gibt ja andere Anwendungen die halt eine
extrem große Datenbanken Informationen haben, das heißt
ganz viel historisches Wissen über verschiedene.
Dinge, die die User mit dieser Anwendung gemacht haben.
Für mich sind ein gutes Beispiel und Microsoft macht ja gerade
das Thema Copilot in Microsoft 350 beziehungsweise 365 wir alle
arbeiten irgendwie mit diesen Office Tools von Microsoft und
da sind halt teilweise Jahrzehnte von Informationen
reingekommen, ich habe irgendwelche sharepoint Seiten
Teams pages wo ganz viele Dokumente liegen wo ganz viel
Kontext liegt wo ich viel mit anderen gearbeitet habe und
diese Menge an Informationen, die ist ja bereits da und jetzt
muss ich natürlich wenn ich mit so einem Copilot in Microsoft
365 arbeite und diesen Copilot bestimmte.
Informationen entlocken will, da Unterstützung bekommen will,
möchte ich natürlich, dass DI dies im Bewusstsein und mit den
Informationen tut. Das heißt, wenn ich jetzt
irgendwie einen Copilot für powerpoint frage, Hey, generiere
mir zu folgendem Thema bitte irgendwie n paar Ideen für Slide
Deck, da möchte ich natürlich, dass dieser Copilot für
powerpoint weiß, worüber ich halt mit meinen Kollegen e Mails
ausgetauscht habe, welche Informationen sonst so irgendwie
in meinem onedrive liegen und alle diese Informationen müssen
hier einfließen und damit ist das Thema Memory so entscheidend
und da wird es dann natürlich auch komplex das zu koordinieren
mit den ganzen anderen Funktionalitäten, die wir auch
gerade erwähnt haben. Genau.
Und dann geht es um das Thema M Weddings Vector Datenbanken,
denen die Frage, die wir beantworten müssen ist, was sind
denn jetzt? Also ich fand ein gutes Beispiel
um eine powerpoint Präsentation zu dem und dem Thema, was sind
denn jetzt die Informationen die ich mit diesen prompt rein gebe,
das können nicht alle Daten, alle Dokumente und alle Emails,
alle chat Nachrichten die ich jemals verfasst habe.
Wäre das viel zu viel, weil n prompt hat?
Ne hat ne hat ein Größen Limit. Ich kann eine bestimmte Anzahl
an in Text an Zeichen an Informationen in diesem Format
reingeben und selbst wenn ich das könnte, selbst wenn alle
Informationen reinpassen würden, wäre das wahnsinnig teuer, denn
je größer man prompt, desto mehr bezahle ich im Prinzip an diese
Langeweile müssen mehr rechnen und ich zahle irgendwie
abstrahiert Rechenleistung Tokens sind das in der Open I
World, das heißt ich muss jetzt schauen basieren auf meinem Bau
mir eine powerpoint Präsentation zum Thema XYZ zum Thema weiß ich
nicht. Podcasts.
Was sind denn die Informationen, die ich jetzt aus meiner
Datenbank brauche? Die für diese Anfrage relevant
sein könnten. Und diese Frage, diese Suche,
das nennt man Semantic Search, das heißt, ich Suche.
Informationen und Inhalte aufgrund einer Semantik also ich
suche nicht einen 1 zu 1 Treffer von einem von einer sucht query
wenn ich n Präsentation, Übersicht, Podcast Marketing
machen möchte, da möchte ich nicht nur Dokumente kriegen wir
das Wort Podcast, das Wort Marketing und das Wort Podcast
Marketing vorkommen, sondern auch die logisch nah an diesem
Themen Raum liegen und logisch nah an diesem Themen Raum ist
genau das was ein Vektor versucht auszudrücken.
Ich versuch mal vorne anzufangen und ich versuche nur so viel zu
erklären wie man als developer Entwickler wissen muss.
Wie funktioniert das Ganze? Es gibt m weddings Modelle
genauso wie S Language Modelle gibt und was ein embedding
Modell macht ist das erzeugt mir aus aus irgendeiner Information
die ich da rein gebe. Es kann ein Wort, einen Satz,
ein ganzes Dokument sein, einen Vieldimensionalen.
Vektor. Das ist ein Array, also mehr die
in 4 dimensionalen Array mit float zahlen da drin.
Und die Modelle sind passieren so, das heißt, ich kann Visionen
Raum anordnen. Diese Informationen, die ich da
rein bekommen habe, zum Beispiel dieses Dokument, und wenn ich
das exakt selbe Dokument nochmal reingehen würde, ich exakt
denselben Werktor wieder bekommen.
Und. Wie genau das Modell auf diese
Vektoren, also auf diese, auf diese Werte in meinem
mehrdimensionalen Array kommt, das ist gar nicht so ganz genau
klar. Das ist auch nicht ganz genau
bewusst, sondern es ist einfach so, dass ähnliche Themen oder
ähnliche, genau ähnliche Themen ähnlich nah oder hat einen
möglichst ähnlichen Vektor bekommen.
Also wenn ich sage. Malte ist ein Superheld.
Bekomme ich vielleicht ganz Simplifiziert gesagt, Direktor
12345 zurück. Und wenn ich sage, Malte ist
Superman. Dann bekomme ich vielleicht 246
zurück, weil es einfach super ähnlich ist.
Weil malte stimmt schon mal überein und Superheld und so ein
Superman sind auch irgendwie so nah beieinander.
Das heißt, wenn man sich das in einem nur dreidimensionalen Raum
vorstellt, das ist aber deutlich mehr dimensionaler Raum.
Dann wären die so diese 2 Punkte, diese beiden Sätze ist
ein Superheld. Malte ist malte ist ein ein
Superman, einfach sehr nah beieinander, heißt embedding
Modelle generieren diese Vektoren und dann brauche ich
Vektor Datenbanken wo ich diese Vektoren dann Speicher, so dass
ich in Zukunft eine weitere Suche machen kann zum Beispiel.
Schreibe ein Essay über Marvel Helden.
Und dann wäre wahrscheinlich der Satz ein S schreiben Essay über
Marvel Helden hätte einen Vektor, der hinreichend nah an
den beiden Informationen malte ein Superheld und malte ist
Superman liegen würde und diese Nähe, die kann ich eben
definieren, das heißt ich kann sagen gib mir alle Informationen
die du hast die in diesem mehrdimensionalen Raum nah also
und so nah an meinem Initialen Request herankommen.
Ich weiß nicht, ob ich das gut erklären konnte.
Ich habe auf jeden Fall noch 2 links in die Podcast beschreibt
das nochmal ein bisschen erklären.
Also im Prinzip machen wir uns mal, machen wir uns einfacher
und wählen einen dreidimensionalen Raum.
Das kann sich jeder vorstellen und ich trainiere
beziehungsweise ich stelle auf mit von allen Informationen, die
ich zur Verfügung habe. Über diese embedding Modelle
einen 3einen.in diesen 3 dimensionalen Raum.
Also dann einen sogenannten Vektor mit dem Fall nur 3
Achsen. Und wenn ich jetzt, wenn ich
jetzt Informationen brauche oder alle Informationen brauche, die
eine gewisse Ähnlichkeit zu meiner Anfrage bekommen, ne, ich
hab 1000 Dokumente überhaupt Podcasts über Marketing, ich
habe jeden einzelne Folge von jedem einzelnen Podcasts durch
dieses Vektor Modell gejagt und überall habe ich eben
dreidimensionalen Punkt für bekommen.
In unserem Simplifizierten Beispiel.
Diese dreidimensionalen Punkte packe ich alle in eine
sogenannte Vektor Datenbank, da gibt es zum Beispiel Quadrant,
ist ein Open Source Beispiel für.
Und wenn ich jetzt sage, welche, welche Dokumente, welche
Informationen brauche ich denn für eine powerpoint Präsentation
über Podcast Marketing, dann dann schick ich den Satz Podcast
Präsentation powerpoint Präsentation über Podcast
Marketing auch in das gleiche W Modell bekommen wieder
irgendeinen Punkt diesen 3 dimensionalen Raum und kann dann
sagen zieh dir alle Dokumente alle Informationen an die so und
so nah an diesem Punkt dran sind sie schon mal aus die gar nichts
damit zu tun hatten. So eddings Modell, das baut eben
4 dimensionale Vektoren aus irgendwelchen Informationen.
Ich schicke vorher alle Informationen die ich habe und
dann wenn neue Anfrage kommt schick ich dir ebenfalls in
diesem Modell und suche dann was ich in der Nähe von diesen
Vektoren von diesen von diesem Vektor den ich von meiner
Anfrage bekommen aufhält und dafür kann ich eigentlich jedes
A Modell jedes Language benutzen, könnte theoretisch
auch GT 4 dafür verwenden wir diese diese Vektoren zu
erstellen, das wäre aber viel zu teuer, normalerweise nimmt man
dafür einfach speziell und günstigere Modelle zum Beispiel
Ada in der Open I Welt. Ich würde gerne noch mal einen
Schritt zurückgehen, weil wir so viel über Datenbanken gesprochen
haben. Und Datenbanken können in dem
Kontext natürlich sowohl Datenquelle sein.
Ich habe in meiner Anwendung schon existierende Datenbanken
oder Datenquellen, das heißt, es können Dokumente sein, es können
irgendwie relationale oder dokumentendatenbank sein, und da
lese ich Informationen aus, während ich dann Direktor
Datenbank befülle, das heißt, aus diesen ganzen Informationen,
die vorliegen, nämlich als Quelle, ist keine Datenbank
sein, es kann aber auch irgendwie Dateien sein, erzeuge
ich die Informationen, die dann. In der Vektor Datenbank
gespeichert werden und wenn ich letzten Endes jetzt diese
Anfrage des Users bekomme oder das Dokument des Users ich
verarbeite wozu ich dann ne AI verwende um Informationen dazu
zu generieren, Informationen zu extrahieren, Content zu
erzeugen, dann nehme ich den User Input und ich nehme die
Informationen aus dieser Sektor Datenbank heißt ich schick.
Equiry an diese Datenbank bekommen die Informationen, die
ich dann mit meinem prompt anders an die generative I geben
kann und diese Informationen hilft dann, den entsprechenden
Kontext zu liefern. Wir haben gerade darüber
gesprochen, wir wollen eine Präsentation über Podcast
Marketing machen und dann kann ich dort Informationen
einfließen lassen, die mit diesem Thema zu tun haben, also
Informationen aus, vielleicht aus dem gesamten Unternehmen auf
alles da kommt vielleicht auch rechte Management rein wenn es
irgendwie ne große Anwendung ist.
Ja gerade das Beispiel Max 63 genannt Informationen auf die du
als User zugreifen darfst und die jetzt als Rektorin.
Datenbank vorliegen, schließen damit rein und dann kann
natürlich dieses Language Model oder diese generative i, wenn es
um die andere Funktionalitäten geht auch viel mehr
Informationen zurückgreifen. Das heißt nicht nur das Training
Set, sondern auch alle diese Informationen, die dann als
Antwort aus dieser Vektor Datenbank rauskommen können dann
genutzt werden um irgendein Resultat zu erzeugen.
Das heißt damit habe ich dann die Möglichkeit das Ganze
wirklich zu personalisieren und das ist natürlich dann extrem
beeindruckend, wenn ich halt nicht so eine AI habe wie ich
vielleicht als Enduser von t kenne die halt irgendwelche
Informationen mir gibt. Wie sie auf Basis der des
Trainings Sets irgendwie internalisiert, hat es letzten
Endes nur darum geht. OK, wenn
Wahrscheinlichkeitsmodell welches Wort folgt, auf welches
wird schon irgendwie passen und dann ist das Training sein
geflossen, sondern diese EI weiß beziehungsweise man hat das
Gefühl diese i weiß etwas über den Kontext, weiß was in meinem
Unternehmen passiert ist, weiß etwas über mich, das heißt alle
diese Informationen können damit reingehen und dann helfen diesen
Output zu erzeugen und das ist natürlich extrem wichtig, wenn
ich das im Kontext meiner Anwendung mache und du hast
vorhin gesagt, wir wollen jetzt nicht alle irgendwie einen
generischen Chat in unserer Anwendung einbauen, bitte nicht.
Manchmal kann Chat irgendwie sinnvoll sein.
Ich meine, wir haben alle irgendwelche FAQ Datenbanken in
unserer Anwendung vielleicht drin, wo die Leute irgendwie ne
Dokumentation haben, FAQS haben. Wenn ihr mögt könnt ihr
natürlich dann irgendwie Chat einbauen, aber dieser Chat muss
dann natürlich auch alle Informationen zur Anwendung
haben und die müssen dann natürlich entsprechend
einfließen und wenn diese Informationen überschaubar sind,
dann kann ich natürlich das ganz einfach über den Kontext mit dem
prompt einfach als Text reingeben.
Klar AQ Datenbank easy, aber natürlich bei einer komplexen
Software kann das extrem viel sein und das würde ich dann
vielleicht strukturiert in Sonderfaktor Datenbank ablegen
und dann abrufen. Wenn letzten Endes die User dann
mit diesem Chat interagieren, das heißt, dieser Chat kriegt
natürlich nur den Wert dadrüber, dass er etwas über meine
Anwendungen weiß und das ist natürlich jetzt auch wenn wir
über vielleicht die Softwareentwicklung sprechen,
ich weiß nicht, wer von euch, die ihr zuhört, schon mal
Copilot Chat ausprobiert hat, also neue Möglichkeit mit
Copilot in der Entwicklung zu arbeiten, G.
Copilot Chat es gibt auch ähnliche Anwendungen von anderen
Herstellern, wo ich wirklich ne Chat in meiner ID habe und in
meiner Entwicklungs Umgebung und.
Das wird natürlich spannend, wenn dieser Chat nicht nur
irgendwie generell was über Softwareentwicklung, wenn dieser
wirklich weiß, wo arbeite ich gerade, was ist im Repository
drin oder was wird in einem Unternehmen allgemein verwendet
und umso mehr Informationen da rein fließen, umso besser wird
das bei diesen Chat Applikationen im
Softwareentwicklung Content ist das aktuell noch sehr am Anfang,
das heißt meistens und am Beispiel von Copilot Chat ist
das so weiß der Chat nur über die Information Bescheid ich
gerade irgendwie Editor offen, habe aber in der Zukunft können
wir uns natürlich extrem viele Dinge vorstellen, dass dieser
Kontext entsprechend gesetzt wird.
Alle Informationen, die ich irgendwie im Unternehmen
verfügbar, auf die ich als User Zugriff habe, spricht der ganze
Source Code Libra, Ries, interne Bibliotheken natürlich, da dann
rein fließen und das kann ich nicht immer einfach als Text
mitgeben, da muss ich solche Vektor Datenbanken verwenden,
die ich im Vorfeld befüllt habe mit den entsprechenden
Informationen und das sind einfach nur ein paar Beispiele n
bisschen besser zu verstehen, deswegen wollte ich nochmal
aufgreifen, weil wir über Datenbanken gesprochen haben und
da sind natürlich die eigenen Datenbanken gemeint, die schon
in meiner Anwendungen sind, aber auch diese neuen Vektor
Datenbanken die ich jetzt brauche um die Informationen in
diese Language Model zum Beispiel einzugehen.
Ja, das ist super wichtig, dass sie natürlich vorher.
Aus Informationen, die wir haben Vektoren erstellt haben müssen,
um sie dann, wenn ein prompt reinkommt, vergleichen zu können
mit dem prompt und dann nur die Vektoren und Ranzuholen, die
hinreichend ähnlich sind und die dahinterliegenden Daten als
Beispiel. Wenn ich jetzt Apfel und Birne
rein gebe, dann sind die auf der Dimension.
Obst sehr nah beieinander auf der Dimension Farbe, aber
vielleicht weiter weg. Das heißt, wenn ich jetzt
irgendwie, sagen wir alle Dinge, die rot, wenn ich jetzt
irgendwie anfragen über die Farbe rot stelle, da
wahrscheinlich die Birne nicht auftauchen, wenn ich jetzt aber
alle Informationen, wenn ich aber alles hier oben alle
Informationen, Informationen brauchst, die ich habe, dann
wird die wahrscheinlich auftauchen und es gibt es gibt
ein Plug in für Language Model von Wikipedia, das ist ganz
cool, weil die haben ja oft mit dem Problem zu kämpfen, dass die
Daten etwas veraltet sind, weil sie die Daten die so lange Model
hat ja üblicherweise. Auf dem Stand aufgehört haben
das Modell das letzte Mal trainiert wurden und deswegen
ich weiß wie JPT mit g 35 rauskam, haben wir nämlich ganz.
Wenn man Fragen über Twitter Übernahme von Elon Musk
gesprochen, gesprochen, die Information bekommen, darüber
weiß ich nichts, weil ich irgendwie 2021 zuletzt trainiert
wurde und da ist jemand hingegangen und hat jeden
Wikipedia Artikel in einen Vektor umwandeln lassen, so dass
ich jetzt sagen kann, wenn ich eine Anfrage an an so ein
Language Modelle wird aus dieser Anfrage auch ein Vektor gebaut,
dann können alle Wikipedia Artikel genommen werden die
ähnlich sind. Zu der Anfrage, die ich gestellt
habe, die werden prompt mit rein gefüttert und dann hat das Level
auf einmal auch sehr aktuelle Informationen.
Neben den bereits im Training Set enthaltenen Informationen
und ich glaube das das macht n bisschen deutlicher nochmal
wofür ich vektoren, vektor, Datenbanken brauche.
Und das brauche ich genau dann eben, wenn ich Informationen,
wenn ich gar nicht weiß, welche Informationen in den Promi rein
füttern möchte. Auch und aus einer Flut und
einer großen Menge an Informationen, die auswählen,
muss ich jetzt den mit rein gebe, weil der einfach Größen
limitiert ist. Ich glaube, genau das ist halt
wichtig, weil du gesagt hast, wenn ich eine große Menge an
Informationen habe, ich zunächst erstmal durchsuchen muss und wo
ich wirklich diesen semantischen Kontext herstellen muss, dann
brauche ich solche Vektor Datenbanken, die brauche ich
nicht immer. Natürlich kann ich auch i meine
Anwendungen einbauen, ohne das zu tun, indem ich einfach den
Kontext einfach über eine Datenbank Abfrage, meine
Datenbank. Mache ich vielleicht
Datenbanken, wo meine Dateien indiziert sind, dann kriege ich
irgendwie 20 Suchergebnisse. Ich nehme die G, die als Kontext
mit rein, wenn die halt vom Umfang nicht zu groß sind und
wir sehen uns ja auch an Beispielen, wie irgendwie den
die den Bart Chat in Google oder Bing Chat von Microsoft, wo dann
letzten Endes einfach ne Internet suche gemacht wird und
die Suchergebnisse genommen werden und dann als Kontext mit
Reingegeben werden. In solchen Fällen reicht dann
einfach API Call oder ich kann einfach eine Abfrage auf meine
eigene Datenbank machen, wenn die Informationen jetzt nicht so
riesig sind und ich wirklich diese semantischen Zusammenhänge
herstellen muss, dann brauche ich vielleicht gar nicht so eine
Vektor Datenbank. Aber man kommt relativ schnell
an dem Punkt, gerade wenn man AI in große bestehende Anwendungen
einbaut, haben natürlich meine User die Erwartung, dass wenn
dort KI Funktionalitäten entstehen, dann dieser ganze
Kontext bekannt ist. Ne, ich meine wir nehmen jetzt
vielleicht ein Beispiel. Du hast gerade gesagt Photoshop,
da ist es noch nicht so, aber wenn ich natürlich vielleicht so
Adobe Cloud Subscriber bin, möchte ich vielleicht
irgendwann, dass wenn ich so eine Autovervollständigen meinen
Bildern mache, wenn ich irgendwie Bildelemente
generieren lasse, das dann Photoshop oder Adobe
berücksichtigt wie meine ganzen anderen Bilder aussehen, die in
meiner Creative Cloud legen, das ist vielleicht jetzt noch nicht
die Erwartungshaltung, aber umso weiter.
Das Ganze in den Mainstream läuft umso mehr sich die Leute
daran gewöhnen, umso höher wird natürlich die Erwartungshaltung
da dran und am Ende wird es vielleicht stand heute auch noch
reichen, wenn irgendwie meine AI mir eine powerpoint Präsentation
baut, dass sie irgendwie generisch auf Informationen, die
irgendwie im Internet vorhanden sind, mit denen trainiert wurde,
dann ich meine powerpoint bekomme, aber wir werden ganz
schnell an den Punkt kommen, wo erwartet wird, dass Hey ihr als
Firma die Anwendung ihr wisst doch so viel ne nehmt das doch
als Kontext und dann brauche ich natürlich die entsprechende
Technologien um die Informationen auch eingeben.
H. Und auch nur dann gibt es dann
auch. Nur dann liefert sie auch echten
Mehrwert. Was, wenn ich da wirklich.
Internen Informationen mit rein füttern kann aber keine Sorge.
Also ich weiß, dass also gerade dieses ganze Thema werktoren
embedding das finde ich so mit den komplexesten Teil an dieser
ganzen Sache, wer jetzt nicht wer das zum ersten Mal heute
gehört hat und nicht sofort bei dem es nicht sofort Klick
gemacht hat, überhaupt keine Sorge ist bei mir sehr lange
gedauert bis irgendwie klick gemacht hat, das muss man aber
als Developer gar nicht alles wissen, denn diese Frameworks,
also lang Chain unterstützen einen, dabei gibt es dann
einfach fertige Funktionen, die heißen irgendwie save as Memory
und dann gebe ich das einfach rein, ich muss das Ding
natürlich konkurrieren, indem ich da einmal im Hintergrund
irgendwie gesagt habe. Benutze zum zum Erstellen von
diesem Weddings dieses embedding Model und speichert Direktoren
bitte in dieser Datenbank und danach geben wir diese Frames
einfach fertige Funktionen für Save s Memory and read from
memory und dann ne ich ich für mich ich finde es schadet nie so
ein bisschen verstehen was letztendlich passiert unter der
Haube. Aber ich muss jetzt nicht genau
wissen, wieso n wie sich so ein Vektor zusammensetzt und welche
Technologien da in welche Richtung funktionieren, sondern
ich kann nachher einfach diese Frameworks verwenden und
programmatisch ansteuern und ich glaube es lohnt sich, wenn man
ohnehin eher in die eigenen Apps einbauen will, sich zumindest
lang Chain, das hat n Python Focus in der Python Welt sehr
populär und Semantik Kernel, das ist das worauf der Microsoft
Copilot Stack aufsetzt, das hat einen starken.net Focus hat aber
auch ne Python Implementierung, aber sich zumindest diese beiden
Frames mal anschaut haben wir auch die Links unten reingepackt
und wer da möchte. Kann da gerne mal ein Blick
drauf werfen und uns auch Feedback geben.
Wenn ihr da Projekte schon mit gebaut habt oder Feedback habt,
wenn ihr super dann interessiert auch n bisschen zu wissen wie
eure Erfahrungen damit sind. Genau.
Und auch falls ihr bei euren Arbeitgebern an irgendwelchen
coolen Sachen gearbeitet habe, die jetzt schon sind, lasst uns
gerne davon wissen, wenn wir darüber reden dürfen, schreibt
das kurz dazu. Ansonsten ist einfach nur
spannend für uns, einfach zu sehen, was gibt es für Use Cases
in der Industrie, wo wirklich i auch tatsächlich stattfindet.
Ganz genau. Dann wünsche ich euch viel Spaß
beim Einbauen von A ein und Apps.
Wir hoffen ihr habt heute was Cooles gelernt, wenn ihr Bock
habt uns n Kaffee auszugeben, findet ihr unter dem Link,
ansonsten freuen wir uns sehr in 2 Wochen wieder rein hört der
Dukas erscheint alle 2 Wochen. Bis dahin alles Gute.
Schreibt viel Code bis bald ciao.